Active Directory : comment créer un attribut personnalisé ?
Sommaire
I. Présentation
Dans ce tutoriel, je vous propose de voir comment créer un attribut personnalisé dans l'Active Directory. Bien qu'il y ait déjà de nombreux attributs par défaut dans l'Active Directory pour les différentes classes d'objets, il peut être nécessaire de créer son propre attribut personnalisé. Parfois, il peut également s'agir d'un prérequis pour certaines applications.
Dans cet exemple, je vais créer un attribut nommé "SyncToCloud" qui sera un booléen et qui serait exploitable par un outil comme Azure AD Connect pour synchroniser uniquement les utilisateurs qui ont cet attribut à VRAI.
II. Ouvrir l'éditeur de schéma Active Directory
Sur votre contrôleur de domaine, exécutez la commande suivante pour enregistre la console Schéma Active Directory (à faire une fois) :
regsvr32 schmmgmt.dll
Ensuite, ouvrez une console "mmc" et ajoutez le composant "Schéma Active Directory" : Fichier > Ajouter ou supprimer des composants logiciels enfichables.
Lorsque la console est ouverte, vous pouvez continuer...
III. Créer l'attribut
Il y a deux dossiers : Classes et Attributs. Effectuez un clic droit sur "Attributs" puis cliquez sur "Créer un attribut".
Un avertissement s'affiche à l'écran pour vous informer que cette opération est irréversible : il n'est pas possible de supprimer un attribut. Vous agissez donc en connaissance de cause. Cliquez sur "Continuer".
Plusieurs champs sont à compléter pour créer cet attribut, notamment : Nom commun, ID d'objet X.500 unique, et Syntaxe. Voyons comment les compléter.
- Nom commun :
Il s'agit du nom (cn) de votre attribut, ici "SyncToCloud".
- Nom complet LDAP :
Laissez l'assistant reprendre la même valeur que pour le Nom commun.
- ID d'objet X.500 unique :
Il s'agit d'un identifiant unique à associer à votre attribut. Vous pouvez obtenir un identifiant unique facilement grâce à ces quelques commandes à exécuter dans une console PowerShell ou PowerShell ISE sur votre DC :
$Prefix="1.2.840.113556.1.8000.2554" $GUID=[System.Guid]::NewGuid().ToString() $Parts=@() $Parts+=[UInt64]::Parse($guid.SubString(0,4),"AllowHexSpecifier") $Parts+=[UInt64]::Parse($guid.SubString(4,4),"AllowHexSpecifier") $Parts+=[UInt64]::Parse($guid.SubString(9,4),"AllowHexSpecifier") $Parts+=[UInt64]::Parse($guid.SubString(14,4),"AllowHexSpecifier") $Parts+=[UInt64]::Parse($guid.SubString(19,4),"AllowHexSpecifier") $Parts+=[UInt64]::Parse($guid.SubString(24,6),"AllowHexSpecifier") $Parts+=[UInt64]::Parse($guid.SubString(30,6),"AllowHexSpecifier") $OID=[String]::Format("{0}.{1}.{2}.{3}.{4}.{5}.{6}.{7}",$prefix,$Parts[0],$Parts[1],$Parts[2],$Parts[3],$Parts[4],$Parts[5],$Parts[6]) $oid
Copiez la valeur retournée et insérez-la dans le champ associé.
- Syntaxe :
Il s'agit du type d'attribut, pour ma part je vais choisir "Booléen" car je souhaite que l'attribut puisse avoir seulement deux valeurs : VRAI ou FAUX. Pour une chaîne de caractères, vous pouvez sélectionner "Chaîne Unicode".
Je vous laisse compléter ces différents champs et valider. Lorsque l'attribut est créé, retournez dans ses propriétés et cochez les options de la façon suivante. Si certaines options sont grisées, poursuivez ce tutoriel et revenez à la fin de l'étape suivante pour cocher les options.
Nous allons notamment activer l'attribut et le répliquer au sein des serveurs ayant le rôle "Catalogue global" sur votre infrastructure.
IV. Affecter l'attribut à la class "user"
L'attribut est créé, mais il n'est pas associé à une classe d'objets (utilisateur, ordinateur, etc). Nous allons l'associer à la class "user" qui correspondant aux utilisateurs. Dans la console Schéma Active Directory, cliquez sur "Classes" et recherchez "user" dans la liste. Effectuez un clic droit dessus puis "Propriétés".
Basculez sur l'onglet "Attributs" et cliquez sur le bouton "Ajouter". Ensuite, dans la liste d'attributs, recherchez l'attribut créé précédemment, pour ma part "syncToCloud", afin de l'ajouter. Cette action va permettre d'associer cet attribut avec la classe "user".
Vous pouvez valider. Maintenant, vous pouvez basculer sur la console "Utilisateurs et ordinateurs Active Directory" et activez l'affichage avancé : Affichage > Fonctionnalités avancées.
Accédez aux propriétés d'un utilisateur de votre annuaire, et cliquez sur l'onglet "Éditeur d'attributs". Dans la liste des attributs, vous devriez trouver celui que vous venez de créer ?. Si ce n'est pas le cas, vérifiez les propriétés de votre attribut.
Grâce à un double-clic sur l'attribut, vous pouvez définir sa valeur pour cet utilisateur ?
Bonjour
Merci pour le travail
une observation
Il s’agit d’un identifiant unique à associer à votre attribut. Vous pouvez obtenir un identifiant unique facilement grâce à ces quelques commandes à exécuter dans une console PowerShell ou PowerShell ISE sur votre DC :
Il sera bien de noter les commandes
à la premiere vue « $Prefix= »1.2.840.113556.1.8000.2554 » !!!
Bien cordialement
Bonjour Ralphe,
Je n’ai pas compris votre remarque en fait ?
Cordialement,
Florian
Bonjour,
Pour créer l’attribut en powershell, j’ai l’impression qu’il manque des commandes
Bonsoir Laurent,
En fait les commandes PowerShell que j’ai indiqué dans ce tutoriel ont un seul but : générer un ID unique pour le nouvel attribut.
Donc, effectivement, cela ne permet pas de créer l’attribut du début à la fin. Je ne sais pas si c’est possible, je ne l’ai jamais fait en tout cas.
Bonne soirée.
Cordialement,
Florian
Bonjour,
Petit problème quand je veux crée l’attribut, il est grisé donc le ne peu cliqué dessus. Pourtant le compte est administrateur du domaine, entreprise, schéma
Bonjour,
Je suis dans le même cas, est-ce que vous avez trouvé la solution pour le problème « Créer un attribut » grisé ?
Merci et bonne journée
Il faut être administrateur du schema dans l’AD pour celà 😉 (j’ai eu ce soucis aussi)
Bonjour, j’ai bien tout créé, j’ai choisi de créer un attribut de syntaxe chaine unicode, mais lorsque j’ajoute du contenu pour un utilisateur de mon AD, alors la requête powershell me remonte {attribut} à la place de attribut.
Savez-vous si j’ai fait une erreur quelque part?
Merci