Afficher ou Supprimer les Autorisations Déléguées Active Directory

La délégation Active Directory (AD) est un élément essentiel de l’infrastructure informatique de nombreuses organisations. En déléguant l’administration, vous pouvez accorder aux utilisateurs ou aux groupes uniquement les autorisations dont ils ont besoin sans ajouter d’utilisateurs à des groupes privilégiés (par exemple, les administrateurs de domaine, les opérateurs de compte). Le moyen le plus simple d’accomplir la délégation consiste à utiliser l’assistant de délégation de contrôle dans le composant logiciel enfichable Utilisateurs et ordinateurs Active Directory de Microsoft Management Console (MMC).

Liés : Gestion d’Active Directory avec PowerShell

Bien que l’assistant de délégation de contrôle offre un moyen facile de déléguer des autorisations, il n’existe aucun assistant correspondant pour supprimer les autorisations déléguées. Quelqu’un chez Microsoft a dû remarquer cette lacune et a créé un programme en ligne de commande nommé Dsrevoke.exe qui peut supprimer les entrées d’autorisation ajoutées par l’Assistant de délégation de contrôle.

Cependant, le Dsrevoke.le programme exe a deux limitations techniques importantes, qui sont documentées dans l’article Microsoft “Lorsque vous utilisez l’outil de ligne de commande Dsrevoke pour signaler les autorisations pour toutes les unités organisationnelles d’un domaine basé sur Windows Server 2003, l’outil peut ne pas renvoyer toutes les entrées de contrôle d’accès.” Ces limites sont:

  • Dsrevoke.exe ne peut trouver que jusqu’à 1 000 unités en une seule recherche. La solution de contournement suggérée pour cette limitation consiste à lancer la recherche du programme dans une unité organisationnelle (OU) plus imbriquée afin de réduire le nombre de résultats.
  • Dsrevoke.exe échoue si des unités externes contiennent un caractère slash (/) dans leur nom. Il n’y a pas de solution de contournement pour cette limitation autre que de renommer les UI incriminées.

Lorsque vous travaillez avec Dsrevoke.exe récemment, j’ai pu contourner le premier problème, mais j’ai ensuite rencontré le deuxième problème. Pour des raisons d’organisation, renommer lesUs pour supprimer le caractère barre oblique n’était pas une option. De plus, la barre oblique est un caractère valide dans un nom d’unité d’organisation et Dsrevoke.exe devrait fonctionner, qu’une unité d’organisation contienne ou non une barre oblique dans son nom. De plus, travailler autour de la limite de 1 000 OU dans mon environnement prenait beaucoup de temps.

En raison de ces problèmes, j’ai décidé de voir s’il existait des alternatives intégrées à Dsrevoke.EXE. À partir des versions récentes de Windows, les Dsacl.le programme exe fournit un moyen de supprimer les autorisations ajoutées par l’Assistant de délégation de contrôle. Bien qu’il n’échoue pas si une unité d’organisation contient une barre oblique dans son nom, Dsacls.exe ne peut pas rechercher dans les sous-conteneurs des autorisations telles que Dsrevoke.exe le fait.

J’ai d’abord décidé d’écrire un script simple pour rechercher des unités d’organisation et appeler des Dsacl.exe pour supprimer les autorisations déléguées de chaque unité d’organisation. Cependant, alors que je réfléchissais à la façon dont je voulais concevoir un tel script, il m’est apparu que j’aimerais également voir une liste des unités ayant des autorisations déléguées à un utilisateur ou à un groupe particulier. Dsrevoke.exe et DSACL.exe peut produire une liste d’autorisations, mais la sortie est très longue et technique. Je voulais quelque chose de plus simple.

En raison des limitations de Dsrevoke.exe et DSACL.exe, et mon désir d’obtenir une sortie plus courte, j’ai décidé d’écrire un script Windows PowerShell pour obtenir les fonctionnalités que je voulais. Le résultat est Remove-DSACE.ps1. Avant de discuter de ce script, cependant, je dois fournir des informations de base sur ce qui se passe lorsque vous utilisez l’Assistant de délégation de contrôle et couvrir certains concepts de sécurité Windows de base.

Ajout d’autorisations déléguées avec l’Assistant

Comme je l’ai mentionné précédemment, l’Assistant de délégation de contrôle fournit un moyen facile de déléguer des autorisations. Par exemple, supposons que vous souhaitiez que les membres du groupe de réinitialisation de mot de passe puissent réinitialiser les mots de passe des utilisateurs dans l’unité d’organisation Tous les utilisateurs de votre domaine AD. Pour ce faire, vous devez effectuer ces étapes:

  1. Ouvrez la console Utilisateurs et ordinateurs Active Directory.
  2. Cliquez avec le bouton droit sur l’unité d’organisation Tous les utilisateurs et choisissez Déléguer le contrôle, comme le montre la figure 1. Cliquez sur le bouton Suivant pour passer au-delà de la page d’accueil de l’assistant.

 Figure 1: Démarrage de l'Assistant de délégation de contrôle

  1. Sur la page Utilisateurs ou groupes de l’assistant, cliquez sur le bouton Ajouter.
  2. Dans la boîte de dialogue Sélectionner des utilisateurs, des ordinateurs ou des groupes, entrez le nom du groupe (Réinitialisation du mot de passe), cliquez sur le bouton Vérifier les noms pour vous assurer que le nom du groupe est correct, puis cliquez sur OK, comme illustré à la figure 2.

 Figure 2: Saisie du Nom du Groupe
Figure 2 : Saisie du Nom du Groupe
  1. Après vous être assuré que le nom du groupe est répertorié sur la page Utilisateurs ou groupes, cliquez sur Suivant, comme le montre la figure 3.
 Figure 3 : S'Assurer Que le Nom Du Groupe Est Listé
Figure 3: S’Assurer Que le Nom Du Groupe Est Répertorié
  1. Sur la page Tâches à déléguer, sélectionnez Réinitialiser les mots de passe utilisateur et forcer le changement de mot de passe lors de la prochaine connexion, puis cliquez sur Suivant, comme illustré à la figure 4.
 Figure 4: Sélection des Tâches à déléguer
Figure 4: Sélection des Tâches à Déléguer
  1. Vérifiez les informations dans la dernière page de l’assistant et cliquez sur Terminer.

Lorsque vous cliquez sur le bouton Terminer, l’Assistant de délégation de contrôle ajoute les autorisations demandées à l’Unité d’organisation Tous les utilisateurs. Vous pouvez afficher les effets de la délégation en cliquant avec le bouton droit sur l’unité d’organisation Tous les utilisateurs, en choisissant Propriétés et en sélectionnant l’onglet Sécurité. (Si l’onglet Sécurité n’est pas visible, activez l’option Fonctionnalités avancées dans le menu Affichage de la console Utilisateurs et ordinateurs Active Directory.) Pour une vue détaillée, vous pouvez cliquer sur le bouton Avancé. La figure 5 montre la boîte de dialogue Paramètres de sécurité avancés qui apparaît.

 Figure 5: Révision de la DACL pour tous les utilisateurs OU
Figure 5: Révision de la DACL pour tous les utilisateurs OU

ACLs, ACEs et Fiduciaires – Oh My!

Pour comprendre les informations fournies dans la boîte de dialogue Paramètres de sécurité avancés, vous devez connaître les concepts de sécurité Windows suivants : liste de contrôle d’accès (ACL), entrée de contrôle d’accès (ACE), administrateur et héritage. Vous devez également comprendre ces concepts pour utiliser Remove-DSACE.ps1.

ACL. Il existe deux types d’ACL : les ACL discrétionnaires (dACL) et les ACL système (SACL). Une DACL identifie les comptes auxquels l’accès à un objet est autorisé ou refusé. Un SACL décrit comment un administrateur souhaite consigner les tentatives d’accès à un objet (c’est-à-dire l’audit).

AS. Un ACL est composé d’ACEs. Chaque ACE identifie un fiduciaire et spécifie l’accès du fiduciaire (autoriser, refuser ou auditer) pour l’objet. L’Assistant de délégation de contrôle ajoute des AS à la DACL d’un conteneur PUBLICITAIRE. La figure 5 montre la DACL pour l’unité d’organisation tous utilisateurs. Dans cette figure, le terme entrée d’autorisation est synonyme d’ACE.

Fiduciaire. Un fiduciaire est l’entité (utilisateur, groupe de sécurité ou session d’ouverture de session) à laquelle un ACE s’applique. Chaque ACE s’applique à un seul fiduciaire. Dans la figure 5, le terme Principal est synonyme de fiduciaire. La figure 5 montre qu’il y a deux AS assignés au groupe de réinitialisation de mot de passe. En d’autres termes, le groupe de réinitialisation du mot de passe est le fiduciaire (principal) de ces deux AS.

Héritage. Un ACE peut être appliqué directement à un objet, ou il peut être hérité de l’objet parent de la ressource. Dans la figure 5, les deux AS pour l’unité d’organisation de tous les utilisateurs qui contiennent le groupe de réinitialisation de mot de passe en tant que fiduciaire ne sont pas hérités du conteneur parent (c’est-à-dire que la colonne Héritée de ne lit Aucun) car l’Assistant de délégation de contrôle les a ajoutés directement à la DACL. La figure 6 montre la DACL pour l’unité d’organisation comptable. La DACL de l’OU comptable contient deux AS pour le groupe de réinitialisation de mot de passe, mais ces AS sont hérités de l’OU Tous les utilisateurs (c’est-à-dire que la colonne Héritée de lit OU= Tous les utilisateurs, DC= fabrikam, DC= local).

 Figure 6: Révision de la DACL pour l'OU Comptable
Figure 6: Révision de la DACL pour l’OU comptable

Introduction de Remove-DSACE.ps1

J’ai écrit Remove-DSACE.ps1 (abréviation de remove directory service ACEs) pour atteindre les objectifs suivants:

  • Trouvez des UO contenant des AS non hérités contenant un fiduciaire.
  • Recurse en sous-unités si demandé.
  • Supprime les AS non hérités contenant un fiduciaire.
  • Produire une sortie concise.

La syntaxe du script est la suivante:

Remove-DSACE path 

Le paramètre -Report ou -Remove détermine si le script listera ou supprimera les AS non hérités. Si vous spécifiez -Report, le script trouve des AS non hérités contenant des administrateurs, mais il ne les supprime pas. Si vous spécifiez -Remove, le script supprime les AS non hérités. Il est très important de comprendre que le script supprimera tous les AS non hérités pour le fiduciaire, pas seulement les AS ajoutés par l’Assistant de délégation de contrôle. En effet, il n’y a aucun moyen de déterminer comment les AS non hérités ont été ajoutés.

Les paramètres -Report et -Remove sont facultatifs, mais le script suppose le paramètre -Report par défaut. Le script génère une erreur si vous spécifiez les deux paramètres en même temps.

Vous utilisez le paramètre -Path pour spécifier un ou plusieurs noms distingués (DNs) d’unités publicitaires. Le nom du paramètre -Path est facultatif et accepte l’entrée du pipeline. Bien que vous puissiez spécifier plusieurs DNs, vous ne pouvez pas utiliser de caractères génériques.

Le paramètre -Trustee nomme le Trustee à trouver dans les AS. Le script examine la DACL de chaque unité d’organisation pour les AS non hérités contenant le fiduciaire nommé. Vous pouvez spécifier plusieurs administrateurs à l’aide d’une liste délimitée par des virgules ou d’un tableau, mais vous ne pouvez pas utiliser de caractères génériques. Vous pouvez spécifier des noms de fiduciaires à l’aide de l’un des formats de noms répertoriés dans le tableau 1.

Format Exemple
Tableau 1: Formats de nom pour le paramètre -Trustee
Format de nommage Windows NT 4.0 (NT4) FABRIKAM\KenDyer
Le DN de l’objet CN = Ken Dyer, CN=Users, DC=fabrikam, DC=com
Nom canonique de l’objet fabrikam.com/Users/Ken Teinturier
Nom principal de l’utilisateur de l’objet (UPN)

Vous incluez le paramètre -Recurse si vous souhaitez rechercher des unités d’organisation sous l’unité d’organisation spécifiée. Si vous souhaitez vous connecter à un contrôleur de domaine (CC) spécifique, vous pouvez spécifier le nom du serveur avec le paramètre
-ServerName. Les paramètres -Recurse et -ServerName sont facultatifs.

Le script prend en charge d’autres informations d’identification. Le paramètre -Credential utilise un objet PSCredential qui contient le nom d’utilisateur et le mot de passe que le script doit utiliser pour se connecter au domaine.

Le script prend également en charge le paramètre -Confirm. Le paramètre -Confirm n’a de sens qu’en combinaison avec le paramètre -Remove. Le paramètre -Confirm est activé par défaut, sauf si vous le désactivez en spécifiant -Confirm:FALSEFALSE ou en définissant la variable NoneConfirmPreference sur None. Vous ne devez désactiver le paramètre -Confirm que lorsque vous êtes absolument certain de supprimer les AS corrects.

Le script produit des objets de sortie contenant les propriétés énumérées dans le tableau 2.

Propriété Description
Tableau 2 : Propriétés de l’objet de sortie pour Remove-DSACE.ps1
Chemin Le DN de l’OU
Fiduciaire Le nom du fiduciaire au format DOMAIN\name
ACEs Le nombre d’ACEs non hérités dans la LCA de l’unité d’organisation
Résultat * Le mot “Supprimé ” ou un message d’erreur
* La propriété Result n’existe que lors de l’utilisation du paramètre -Remove.

Le script inclut uniquement les UO avec des AS non hérités contenant un fiduciaire. Les AS hérités pour un fiduciaire ne sont pas inclus dans la sortie. La figure 7 montre deux exemples. La première commande de la figure 7 ne produit aucune sortie car la DACL de l’unité d’organisation comptable ne contient aucun AS non hérité pour le groupe de réinitialisation de mot de passe. (L’unité d’organisation comptable a deux AS pour le groupe de réinitialisation de mot de passe, mais ces AS sont hérités de l’unité d’organisation Tous utilisateurs, comme le montre la figure 6.) La deuxième commande de la figure 7 produit une sortie. Il y a deux AS non hérités pour le groupe de réinitialisation de mot de passe dans l’unité d’organisation de tous les utilisateurs (comme le montre la figure 5).

 Figure 7: Comparaison de la Sortie de Deux Commandes
Figure 7: En comparant la sortie de Deux Commandes

Exemple du monde réel

Voyons comment vous pouvez utiliser Remove-DSACE.ps1 dans le monde réel. Supposons qu’un administrateur dans le fabrikam.le domaine local avait utilisé l’Assistant de délégation de contrôle pour déléguer des autorisations au groupe du Personnel de secrétariat dans l’unité d’organisation de tous les utilisateurs et certaines des unités d’organisation situées en dessous, mais il ne se souvient pas des unités d’organisation. Vous devez supprimer ces autorisations déléguées afin de pouvoir les déléguer à d’autres groupes.

Tout d’abord, vous devez voir une liste des UO qui ont des AS non hérités contenant le groupe du personnel de secrétariat. Pour ce faire, vous pouvez utiliser la commande:

Remove-DSACE -Report ` -Path "OU=All Users,DC=fabrikam,DC=local" ` -Trustee "FABRIKAM\Secretarial_Staff" ` -Recurse | Format-List

Cette commande et sa sortie sont représentées sur la figure 8.

 Figure 8: Liste des UI Qui Ont des AS Non Hérités Contenant le Groupe du Personnel de Secrétariat
Figure 8: Liste des UI Qui Ont des AS Non Hérités Contenant le Groupe du Personnel de Secrétariat

À partir de cette sortie, vous pouvez voir qu’il y a trois UI qui ont des AS non hérités contenant le groupe du Personnel de Secrétariat. Après avoir vérifié que vous pouvez supprimer ces AS, vous pouvez remplacer le paramètre -Report par le paramètre -Remove et répéter la commande, comme indiqué sur la figure 9. Comme je l’ai mentionné précédemment, si le groupe du Personnel de secrétariat s’est vu attribuer d’autres autorisations en dehors de l’Assistant de délégation de contrôle, celles-ci seront également supprimées.

 Figure 9: Suppression des UO Qui Ont Des AS Non Hérités Contenant le Groupe Du Personnel De Secrétariat
Figure 9: Suppression des UO Qui Ont des AS Non hérités Contenant le Groupe du Personnel de secrétariat

Prenez le contrôle de la délégation d’annonces

L’Assistant de délégation de contrôle est un outil très utile, mais il n’y a pas de moyen facile de visualiser ou d’inverser rapidement ses effets. Bien que vous puissiez utiliser Dsrevoke.exe et DSACL.exe pour accomplir ces tâches, ces outils ont certaines limites. Si vous utilisez le script Remove-DSACE.ps1 à la place, vous aurez un meilleur contrôle sur les autorisations déléguées dans AD. Vous pouvez télécharger ce script en cliquant sur le bouton Télécharger le code en haut de la page.

Vidéos connexes de Brian Desmond (accès VIP uniquement):
Session 1 : Maîtrise de la Délégation des Autorisations Active Directory
Session 2: Maîtrise de la Délégation des Autorisations de Sécurité Active Directory

Leave a Reply