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.
J’ai également besoin de créer 3 groupes de tests pour contenir mes étudiants, professeurs et collaborateurs externes.
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.
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) :
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. 😉
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é.
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 :
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é.
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.
Cliquez ensuite sur Add dynamic query pour définir les conditions à vérifier pour être automatiquement ajouté à ce groupe Azure Active Directory.
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« .
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.
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 ! 🙂