Gestion des groupes dynamiques dans Active Directory avec DSQUERY, DSMOD et SCHTASKS

Qu'est donc qu'un groupe dynamique ? Un groupe dynamique est un groupe comme les autres à ceci près que la liste de ses membres est mise à jour de manière automatique et définie comme étant en général le résultat d'une requête LDAP. Comme vous le savez certainement l'interface d'administration standard d'Active Directory ne permet pas de créer des groupes comme étant dynamiques.

Est-ce que cela signifie qu'Active Directory ne supporte pas la notion de groupe dynamique ? La réponse à cette question est négative comme le prouve la possibilité de définir des listes de distribution comme étant dynamiques dans Exchange Server. Cela signifie simplement que les mécanismes de gestion des groupes doivent être externes à Active Directory, l'objet de ce post sera donc de montrer les principes de mise en oeuvre d'une telle solution.

Commençons par préparer Active Directory en créant un nouvelle OU "Head Quarter" dans la quelle nous allons créer des utilisateurs de manière automatique avec les commandes suivantes: REDIRUSR "OU=Head Quarter,DC=ease-it,DC=com" qui permet de modifier le conteneur par défaut dans le quel les nouveaux utilisateurs sont créés puis FOR /L %i IN (1,1,50) DO NET USER TestUser%i TestUser%i /ADD qui permet de créer 50 utilisateurs appelés TestUser1, TestUser2.

Créons en suite le groupe un groupe Global de sécurité appelé HQ Staff que nous allons "dynamiser" avec la commande DSADD GROUP "CN=HQ Staff,OU=Head Quarter,DC=ease-it,DC=com" -SECGRP yes -SCOPE g

L'avant dernière étape consiste à définir la requête que nous allons utiliser pour gérer l'appartenance au groupe, pour cela nous allons utiliser et combiner les commandes DSQUERY et DSMOD. La commande DSQUERY est suffisamment flexible pour nous permettre de requêter Active Directory de façon répondant à l'ensemble des besoins, dans le cas présent nous allons nous limiter à rechercher des utilisateurs en fonction de leur OU d'appartenance puis à rediriger le résultat de la commande vers DSMOD, la commande complète étant DSQUERY USER -STARTNODE "OU=Head Quarter,DC=ease-it,DC=com" | DSMOD GROUP "CN=HQ Staff,OU=Head Quarter,DC=ease-it,DC=com" -ADDMBR

La dernière étape a pour objet d'automatiser la mise à jour (donc l'exécution de la commande) avec une tâche planifiée créée avec SCHTASKS: SCHTASKS /CREATE /S ZORGLUB07 /SC HOURLY /TN DynGroups /TR "DSQUERY USER -STARTNODE OU=Head Quarter,DC=ease-it,DC=com | DSMOD GROUP CN=HQ Staff,OU=Head Quarter,DC=ease-it,DC=com -ADDMBR"

De nombreuses options sont encore envisageables comme le fait par exemple de gérer un groupe de sécurité par OU avec une boucle FOR appelant les commandes DSQUERY et DSMODE et itérant sur la liste des OU.

That's all for today