Création d’un custom attribute dans ActiveDirectory

La création d’un custom attribute dans ActiveDirectory est une opération nécessitant de modifier le schéma. Une réflexion est nécessaire en amont car il n’est pas possible de supprimer un custom attribute une fois que celui-ci a été écrit dans le schéma.

Si votre infrastructure comporte un serveur Exchange par exemple, alors votre AD contient déjà des attributs personnalisés. En effet, lors de l’installation, Exchange modifie le schéma pour y ajouter ses custom attributes lui permettant de stocker des informations dont il a besoin.

Dans cet exemple, je vais créer un custom attribute nommé CreatedBy permettant de stocker dans une chaîne de caractères le nom de l’utilisateur qui procède à la création d’un objet.

Il est nécessaire de faire partie du groupe Schema Admins pour pouvoir créer un custom attribute, le groupe Domain Admins n’est pas suffisant.

Se connecter à un serveur en RDP, puis ouvrir une console MMC vide, et y ajouter le snap-in Active Directory Schema (File > Add/Remove Snap-in). Si celui-ci n’apparaît pas, il faut alors l’enregistrer ; dans une invite de commande, saisir ceci :

regsvr32.exe schmmgmt.dll

Normalement, la MMC doit donc ressembler à ceci :

En faisant un clic droit sur Attributes puis Create Attribute, un message apparaît indiquant que la création d’un attribut personnalisé est irrémédiable ; on arrive ensuite sur une fenêtre avec plusieurs détails à remplir.

  • Le Common Name est le nom que l’on souhaite donner à son attribut ;
  • Le LDAP Display Name est le nom LDAP, c’est celui-ci qui apparaîtra lors de requêtes LDAP directes ou via Powershell par exemple, ou encore dans l’ADSI Edit ;
  • Le Unique X500 Object ID est un identifiant qui doit être généré en fonction du domaine, je vais venir sur ce point juste après ;

Ensuite, en fonction du type de données que l’on souhaite stocker dans cet attribut, il faut choisir une syntaxe. Celle-ci peut être un booléen, une chaîne de caractères, un entier, etc.

Le point le plus sensible lors de la création de l’attribut est la génération de l’identifiant unique X500. En effet, cet identifiant est basé sur une suite de chiffres qui est unique par domaine. Il n’est donc pas possible d’en choisir un au hasard. Microsoft propose ce script VBS permettant de récupérer la racine de l’identifiant unique, à laquelle on rajoutera par exemple un incrément. Par exemple, si l’OID retourné par le script se finit en 4941237, l’identifiant unique pourra finir par 4941237.1. De nombreux topics d’aide sont disponibles sur le technet en cas d’incompréhension sur ce point.

Une fois l’attribut créé, il faut le rattacher à une classe (plus communément type d’objet). Dérouler les classes, puis dans le cadre de l’exemple, ouvrir les propriétés de la classe user d’un clic-droit > Properties. Ensuite, dans l’onglet Attributes, il est possible d’ajouter l’attribut que nous venons de créer, et de définir si il est obligatoire ou optionnel.

Appliquer, la création du custom attribute et son rattachement aux objets de type user est terminée. On peut ensuite requêter via Powershell l’AD par exemple sur cet attribut :