Ajouter un attribut dans le catalogue global

Dans ce nouveau tutoriel nous allons voir comment ajouter un attribut dans le catalogue global. Le catalogue global est une fonctionnalité importante des services de domaines Active Directory. Nous pouvons citer par exemple la messagerie Exchange qui ne peut fonctionner correctement si le serveur de messagerie ne peut joindre un catalogue global.  Son importance est encore plus grande dans une forêt contenant plusieurs domaines Active Directory. Le catalogue global est une sorte de base de données « d’index » qui recense l’ensemble des objets de la forêt. Lorsque vous interrogez la partition d’annuaire d’un contrôleur de domaine vous ne verrez que les utilisateurs du domaine mais vous pourrez voir l’ensemble des attributs de l’objet, si vous interrogez le catalogue global vous pourrez retrouver n’importe quel utilisateur de la forêt mais seulement une partie de ces attributs. Interroger le catalogue global vous permettrez donc de déterminer dans quel domaine se trouve l’utilisateur, vous pourrez ensuite lire l’ensemble de ses attributs en interrogeant la partition d’annuaire d’un contrôleur de domaine du domaine en question.

La première question qui peut vous venir est de savoir quel intérêt cela peut apporter. Imaginons que vous êtes administrateur d’un grand groupe qui gère plusieurs entreprises. Néanmoins l’application gérant les ressources humaines est mutualisée. Chaque employée dispose d’un matricule personnel unique même entre les entreprises. Ce matricule est la référence dans votre base de données RH. Vous souhaitez mettre en place une mise à jour automatique des informations de l’utilisateur en fonction de ce matricule. Vous décidez d’enregistrer le matricule dans l’attribut « employeeId » de l’utilisateur. L’utilisateur peut se trouver dans un des domaines de la forêt mais vous ne savez pas lequel. Vous voyez mieux à quoi peut servir le catalogue global dans votre activité ? Oui mais pas de chance par défaut.

Jusque-là c’est bien, mais vu que vous ne savez peut-être pas comment interroger le catalogue global, cela ne paraît pas très intéressant.

Avant de démarrer nous allons d’abord définir les différents domaines AD.

Dans notre environnement nous disposons d’une forêt avec 2 domaines :  « lab1.lan » domaine racine de la forêt et « lab2.lab1.lan » un domaine enfant. Chaque domaine dispose d’un contrôleur de domaine  :

-Domaine racine « lab1.lan » : contrôleur de domaine «lab1dc1.lab1.lan »

-domaine enfant « lab2.lab1.lan » : contrôleur de domaine « lab2dc.lab2.lab1.lan ».

Les 2 contrôleurs de domaine sont des catalogues globaux.

 

Utiliser PowerShell pour interroger le catalogue global

Si vous ne connaissez pas PowerShell, vous allez pouvoir découvrir la commande « get-aduser » qui permet de rechercher un utilisateur. Pour cela nous devons ouvrir une console PowerShell et importer les commandes Active Directory depuis le contrôleur de domaine de « lab.1.lan ». Ensuite nous exécutons la commande « get-aduser pdupond ». Cette commande interroge le contrôleur de domaine local et retrouve l’utilisateur « Pierre Dupond ».

Si nous souhaitons voir l’attribut « employeeid » nous ajoutons l’argument et la commande devient :

get-aduser pdupond  -properties employeeid

Si nous souhaitons rechercher dans l’annuaire « lab2.lab1.lan » il suffit d’ajouter en argument le contrôleur de domaine de « lab2.lab1.lan » :

« Get-aduser pdupond –properties employeeid –server lab2dc.lab2.lab1.lan »

Nous constatons dans le domaine « lab2 » il y a un autre employé du nom de « Paul Dupond », mais pour trouver la bonne personne il faut interroger le bon contrôleur de domaine, à moins que …

Nous allons modifier notre commande pour filtrer tous les noms dans le login est « pdupond » en interrogeant le serveur sur le port 3268 qui est celui du catalogue global :

Get-aduser –filter { SamAccountName –eq "pdupond " } –server lab1dc1.lab1.lan :3268

Le résultat ci-dessous nous montre que nous pouvons retrouver les 2 utilisateurs par leur nom d’ouverture de session :

Néanmoins en recherchant dans le catalogue global le matricule (employeeid ) nous n’obtenons pas de valeur pour cet attribut :

« get-aduser –filter {SamAccountName –eq « pdupond » } –properties employeeid –server lab1dc1.lab1.lan:3268 »

Nous allons maintenant ouvrir la console mmc «schéma active directory » et nous recherchons l’attribut « employeeid »

Si vous ne trouvez pas le composant mmc « schema Active Directory » il vous faudra d’abord exécuter la commande «regsvr32 schmmgmt.dll ».

Nous sélectionnons l’option « répliquer cet attribut dans le catalogue global ».  Nous pouvons constatez qu’il est également possible d’indexer un attribut afin d’améliorer la recherche.

Nous constatons dans l’observateur d’évènement que l’attribut a été ajouté dans le catalogue global ce qui a provoqué une synchronisation. Il faut noter que si vous avez un niveau de forêt inférieur à 2003 l’ajout de l’attribut force la réplication de tous les attributs. A partir de 2003 seules les modifications sont mises à jour.

Maintenant que notre attribut a été ajouté au catalogue global, nous pouvons faire une recherche du compte « pdupond»  sur l’ensemble de la forêt Active Directory en y ajoutant le matricule (employeeid) :

« get-aduser –filter {SamAccountName –eq « pdupond » } –properties employeeid –server lab1dc1.lab1.lan:3268 »

Il nous est maintenant possible de rechercher un utilisateur par le matricule sur l’ensemble de la forêt :

Get-aduser –filter * -properties employeeid –server lab1dc1.lab1.lan:3268 |where-object employeeid –eq "100"  

Et voilà comment ajouter un attribut dans le catalogue global pour faciliter la recherche. Même si l’idée pourrait paraître intéressante je vous conseille de ne pas ajouter trop d’élément dans le catalogue global pour ne pas augmenter de trop l’activité de votre DC.

Theme: 

Systeme: 

Annee: