Azure

Gestion de vos groupes Azure Active Directory en PowerShell

J’ai récemment dû aider un client à gérer les membres de ses groupes au sein d’Azure Active Directory. Mais comme il voulait réaliser des actions massives : ajout en fonction de critères spécifiques – il était exclu de la faire manuellement. Nous avons donc réalisé ces actions en PowerShell.

Etape 0 – Préparation du scénario

Je vous propose un petit scénario de test dans l’article suivant pour voir comment on peut faire cela. Je vais créer un certain nombre d’utilisateurs et de groupes – puis nous allons voir ce que nous pouvons faire en PowerShell.

Dans mon cas, je dispose de plusieurs comptes de test. La problématique a laquelle j’avais été confronté provenait d’une université donc on va reprendre une logique similaire.

J’ai créé plusieurs comptes de test sur le format suivant :

  • prenom.nom.xxxx@domain.tld
    • Dans mon cas, les xxx peuvent être remplacés par « user » pour définir un étudiant, « teacher » pour le compte d’une professeur et enfin « collab » pour un prestataire de service.
Comptes de test Azure AD

J’ai également besoin de créer 3 groupes de tests pour contenir mes étudiants, professeurs et collaborateurs externes.

Groupes de test Azure AD

Objectif : Je vais donc vouloir positionner chacun de mes comptes dans le groupe qui le concerne. A savoir :

  • Group-Collaborators pour tous les prestataires externes – qui ont donc la mention « Collab » dans leur UPN ;
  • Group-Teachers pour les enseignants ;
  • Group-Users pour les étudiants.
Dans un premier temps, nous allons faire cela en PowerShell. Mais nous verrons que nous pouvons également utiliser les groupes dynamiques dans la dernière partie de l’article.

Etape 1 – Intégration d’1 utilisateur à 1 groupe

Avant tout, vous allez avoir besoin du module PowerShell Azure AD sur votre poste de travail. Pour ce faire, installez-le en utilisant la commande suivante :

Install-Module AzureAD

Répondez « Yes » pour l’installation du module.

Ensuite, vous devrez vous connecter en PowerShell à votre Azure Active Directory. Pour ce faire, utilisez la commande suivante :

Connect-AzureAD

Vous aurez alors la mire d’authentification Office 365. Identifiez-vous avec un compte qui dispose de suffisamment de privilèges pour gérer les utilisateurs et/ou groupes Azure Active Directory. Dans mon cas, je suis Global Administrator.

Vous pouvez alors utiliser la commande suivante pour voir la liste de vos utilisateurs :

Get-AzureADUser

Et celle-ci pour la liste de vos groupes :

Get-AzureADGroup

Vous devriez avoir le rendu similaire suivant (dans mon cas c’est un tenant de test les résultats sont donc plus limités) :

List des utilisateurs et groupes au sein de mon Azure Active Directory

On retrouve bien tous mes comptes de tests et les groupes que j’ai créé précédemment. 🙂

On peut utiliser la commande Get-AzureADGroupMember avec l’ObjectId du groupe concerné pour obtenir la liste des membres d’un groupe donné. Dans mon cas, on voit que mon groupe « Group-Users » est pour l’instant vide. Aucun retour. 😉

Get-AzureADGroup

Pour ajouter un utilisateur comme étant membre d’un groupe nous avons besoin de connaître l’ObjectId de l’utilisateur et du groupe qui sont concernés. A partir de là, on peut utiliser la commande Add-AzureADGroupMember pour intégrer un utilisateur dans un groupe :

Add-AzureADGroupMember -ObjectId 30499fa8-639c-4367-84ea-310dcc1d879c -RefObjectId 50408f51-2af9-477b-9fae-3a55a72c2ca9

Le premier paramètre ObjectId correspond à la référence du groupe tandis que le second paramètre correspond à l’ObjectId de l’utilisateur concerné.

Get-AzureADGroupMember

On a ajouté un utilisateur à mon groupe. Lorsque l’on exécute à nouveau la commande précédente, on voit bien que désormais je dispose d’un membre. Si vous voulez supprimer un utilisateur d’un groupe, il vous suffit d’utiliser la commande Remove-AzureADGroupMember avec la même logique au niveau des paramètres.

Cela étant dit, nous l’avons fait de manière unitaire. Mais nous voudrions le faire de manière massive pour que tous nos utilisateurs aillent dans le groupe qui leur convient. 😉

Etape 2 – Intégration des utilisateurs dans leurs groupes respectifs en PowerShell

J’ai utilisé le script ci-dessous pour analyser chacun de mes utilisateurs et l’intégrer au groupe qui convient en fonction de ce que j’ai pu détecter dans son adresse email/UPN.

$all_users = Get-AzureADUser

foreach ($user in $all_users)
{
    if ($user.USerPrincipalName -match ".user")
    {
        Write-Host "LOG - Account: $($user.DisplayName) is a user/student - Adding to Group-Users" -ForegroundColor Yellow
        Add-AzureADGroupMember -ObjectId (Get-AzureADGroup -SearchString "Group-Users").ObjectId -RefObjectId $user.ObjectId
    }

    elseif ($User.UserPrincipalName -match ".teacher")
    {
        Write-Host "LOG - Account: $($user.DisplayName) is a teacher - Adding to Group-Teachers" -ForegroundColor Green
        Add-AzureADGroupMember -ObjectId (Get-AzureADGroup -SearchString "Group-Teachers").ObjectId -RefObjectId $user.ObjectId
    }

    elseif ($User.UserPrincipalName -match ".collab")
    {
        Write-Host "LOG - Account: $($user.DisplayName) is a Collaborator - Adding to Group-Collaborators" -ForegroundColor Cyan
        Add-AzureADGroupMember -ObjectId (Get-AzureADGroup -SearchString "Group-Collaborators").ObjectId -RefObjectId $user.ObjectId
    }

    else
    {
        Write-Host "LOG - Account: $($user.DisplayName) is corresponding to nothing managed. Not added to nothing." -ForegroundColor Red
    }   
}

Je récupère tous mes utilisateurs et pour chacun d’entre eux je regarde si je trouve la mention : .teacher, .user, .collab dans l’adresse. En fonction de cette lecture, j’ajoute l’utilisateur concerné au groupe qui convient.

En revanche, si je ne vois rien qui convienne alors je n’ajoute cet utilisateur nul part. Une fois le script exécuté, j’ai le retour suivant :

Exécution du script PowerShell

On voit donc bien que tous mes comptes de test ont bien été ajoutés dans les groupes pertinents. On peut également vérifier le résultat sur l’interface graphique de Azure Active Directory pour chaque groupe concerné.

Groupe Azure Active Directory – Etudiants
Groupe Azure Active Directory – Enseignants
Groupe Azure Active Directory – Prestataires

C’est terminé. 🙂

Je ne rentre pas dans les détails du script. Il y a plusieurs façons de faire et vous devrez certainement l’adapter en fonction de vos contraintes. En cas de besoin, utilisez la zone commentaires pour vos questions.

Maintenant, sachez que l’on peut faire mieux que du PowerShell dans le cas précis… Et cela nous amène à l’étape 3. 😉

Etape 3 – Utilisation des groupes dynamiques

Depuis un moment maintenant, O365 et Azure Active Directory vous permettent de créer ce que l’on appelle des groupes dynamiques. Ces groupes dynamiques se mettent – et surtout, se maintiennent à jour – en fonction des conditions que vous configurez !

Ce n’est pas le cas de notre script PowerShell que vous devrez exécuter à nouveau régulièrement.

Rendez-vous dans Azure Active Directory, puis tentez de créer un nouveau groupe. Sauf, qu’au moment de choisir l’option Membership type – choisissez Dynamic User.

Création d’un groupe Azure Active Directory dynamique

Cliquez ensuite sur Add dynamic query pour définir les conditions à vérifier pour être automatiquement ajouté à ce groupe Azure Active Directory.

Création de votre query

Vous pouvez écrire la requête tout seul si vous êtes à l’aise avec ce type d’outils. Sinon, le plus simple est encore d’utiliser les menus déroulants qui sont à votre disposition pour définir votre condition.

Si je reprends un cas précédemment évoqué, les enseignants, alors je dois sélectionner les options suivantes :

  • Property : userPrincipalName
  • Operator : Match
  • Value : .teacher

Et le mieux, c’est que vous pouvez tester votre requête ! 🙂

Pour ce faire, utilisez l’onglet Validate Rules (Preview). Sélectionnez tous nos utilisateurs de test sur la droite. Vous verrez que cette règle ne va s’appliquer qu’aux comptes qui possèdent la mention « .teacher« .

Test de votre query

On voit clairement que notre requête fonctionne. Seuls les comptes concernés sont détectés par notre requête. 🙂

Il ne vous reste plus qu’à sauvegarder et finaliser la création de ce groupe.

L’intérêt de cette seconde méthode et que le calcul des membres de votre groupe est automatique. Il n’est pas nécessaire d’exécuter à nouveau un script ou quoique ce soit. Si vous créez un nouvel utilisateur avec la même logique, alors il sera intégré au groupe automatiquement. Inversement, si un utilisateur ne respecte plus la requête, alors il sera retiré du groupe concerné.

Plus d’infos sur les groupes dynamiques en suivant ce lien.

Pour toute question, n’hésitez pas à utiliser la zone des commentaires ci-dessous ! 🙂

Share
Published by
thibault

Recent Posts

Proton Mail s’attaque aux fuites d’identifiants sur le Dark Web pour mieux protéger ses utilisateurs

Proton Mail, le service de messagerie électronique chiffrée, a récemment annoncé le lancement d'une nouvelle…

5 heures ago

Ubuntu 24.04 LTS : une nouvelle ère pour l’innovation et la sécurité

25 avril 2024 - La communauté Ubuntu a récemment annoncé la sortie officielle d'Ubuntu 24.04…

2 jours ago

IBM s’empare d’HashiCorp pour 6,4 milliards de dollars

Un rachat stratégique pour le géant américain Le 24 avril 2024, IBM a officialisé le…

3 jours ago

Microsoft va limiter l’envoi d’e-mails en masse sur Exchange Online : la fin des campagnes marketing par email ?

A partir de 2025, Microsoft va limiter l'envoi d'e-mails en masse sur Exchange Online Lutte…

1 semaine ago

StayFocusd : Gagnez du temps en bloquant les sites Web distrayants

Bloquer un site Internet pour vous empêcher de le visiter Il y a quelques temps…

1 semaine ago

Microsoft injecte 1,5 milliard de dollars dans G42 pour consolider son leadership en IA

Face à l'essor fulgurant de l'intelligence artificielle et à l'arrivée de nouveaux acteurs puissants sur…

1 semaine ago