Delegierte Active Directory-Berechtigungen anzeigen oder entfernen

Die Active Directory (AD)-Delegierung ist ein wichtiger Bestandteil der IT-Infrastruktur vieler Unternehmen. Durch Delegieren der Verwaltung können Sie Benutzern oder Gruppen nur die Berechtigungen erteilen, die sie benötigen, ohne Benutzer zu privilegierten Gruppen hinzuzufügen (z. B. Domänenadministratoren, Kontobetreiber). Der einfachste Weg zur Delegierung ist die Verwendung des Assistenten zur Delegierung von Steuerelementen im Snap-in Microsoft Management Console (MMC) Active Directory-Benutzer und -Computer.

Verwandt: Verwalten von Active Directory mit PowerShell

Obwohl der Delegierungsassistent eine einfache Möglichkeit zum Delegieren von Berechtigungen bietet, gibt es keinen entsprechenden Assistenten zum Entfernen delegierter Berechtigungen. Jemand bei Microsoft muss diesen Mangel bemerkt und ein Befehlszeilenprogramm namens Dsrevoke erstellt haben.exe, die die vom Assistenten für die Delegierung von Steuerelementen hinzugefügten Berechtigungseinträge entfernen kann.

Jedoch die Dsrevoke.das Programm weist zwei wichtige technische Einschränkungen auf, die im Microsoft-Artikel “Wenn Sie das Dsrevoke-Befehlszeilentool zum Melden von Berechtigungen für alle Organisationseinheiten in einer Windows Server 2003-basierten Domäne verwenden, gibt das Tool möglicherweise nicht alle Zugriffssteuerungseinträge zurück.” Diese Einschränkungen sind:

  • Dsrevoke.sie können nur bis zu 1.000 OUs in einer einzigen Suche finden. Die vorgeschlagene Problemumgehung für diese Einschränkung besteht darin, die Suche des Programms in einer tiefer verschachtelten Organisationseinheit (OU) zu starten, um die Anzahl der Ergebnisse zu reduzieren.
  • Dsrevoke.exe schlägt fehl, wenn Organisationseinheiten einen Schrägstrich (/) in ihren Namen enthalten. Es gibt keine andere Problemumgehung für diese Einschränkung, als die fehlerhaften Organisationseinheiten umzubenennen.

Bei der Arbeit mit Dsrevoke.bis vor kurzem konnte ich das erste Problem umgehen, aber dann stieß ich auf das zweite Problem. Aus organisatorischen Gründen war das Umbenennen der Organisationseinheiten zum Entfernen des Schrägstrichs keine Option. Außerdem ist der Schrägstrich ein gültiges Zeichen in einem OU-Namen und Dsrevoke.exe sollte funktionieren, egal ob eine OU einen Schrägstrich in ihrem Namen enthält oder nicht. Außerdem war es zeitaufwändig, das Limit von 1.000 Einheiten in meiner Umgebung zu umgehen.

Aufgrund dieser Probleme habe ich beschlossen, zu prüfen, ob es integrierte Alternativen zu Dsrevoke gibt.exe. Ab neueren Versionen von Windows, die Dsacls.das EXE-Programm bietet eine Möglichkeit, die vom Assistenten für die Delegierung von Steuerelementen hinzugefügten Berechtigungen zu entfernen. Obwohl es nicht fehlschlägt, wenn eine Organisationseinheit einen Schrägstrich in ihrem Namen enthält, Dsacls.exe kann Subcontainer nicht nach Berechtigungen wie Dsrevoke durchsuchen.exe tut es.

Ich habe zuerst beschlossen, ein einfaches Skript zu schreiben, um nach Organisationseinheiten zu suchen und Dsacls aufzurufen.exe, um die delegierten Berechtigungen aus jeder Organisationseinheit zu entfernen. Als ich jedoch darüber nachdachte, wie ich ein solches Skript entwerfen wollte, fiel mir ein, dass ich auch eine Liste sehen möchte, welche Organisationseinheiten Berechtigungen an einen bestimmten Benutzer oder eine bestimmte Gruppe delegiert haben. Dsrevoke.exe und Dsacls.exe kann eine Liste von Berechtigungen erzeugen, aber die Ausgabe ist sehr lang und technisch. Ich wollte etwas Einfacheres.

Aufgrund der Einschränkungen in Dsrevoke.exe und Dsacls.exe, und mein Wunsch, eine kürzere Ausgabe zu erhalten, entschied ich mich, ein Windows PowerShell-Skript zu schreiben, um die gewünschte Funktionalität zu erhalten. Das Ergebnis ist Remove-DSACE.ps1. Bevor ich jedoch auf dieses Skript eingehe, muss ich einige Hintergrundinformationen darüber bereitstellen, was passiert, wenn Sie den Assistenten zum Delegieren von Steuerelementen verwenden, und einige grundlegende Windows-Sicherheitskonzepte behandeln.

Hinzufügen delegierter Berechtigungen mit dem Assistenten

Wie bereits erwähnt, bietet der Assistent zum Delegieren von Steuerelementen eine einfache Möglichkeit zum Delegieren von Berechtigungen. Angenommen, Sie möchten, dass Mitglieder der Gruppe zum Zurücksetzen von Kennwörtern Kennwörter für Benutzer in der Organisationseinheit Alle Benutzer in Ihrer AD-Domäne zurücksetzen können. Dazu müssen Sie die folgenden Schritte ausführen:

  1. Öffnen Sie die Active Directory-Konsole für Benutzer und Computer.
  2. Klicken Sie mit der rechten Maustaste auf die Organisationseinheit Alle Benutzer und wählen Sie Steuerung delegieren, wie in Abbildung 1 gezeigt. Klicken Sie auf die Schaltfläche Weiter, um die Begrüßungsseite des Assistenten zu verlassen.

 Abbildung 1: Starten des Assistenten zum Delegieren von Steuerelementen

  1. Klicken Sie auf der Seite Benutzer oder Gruppen des Assistenten auf die Schaltfläche Hinzufügen.
  2. Geben Sie im Dialogfeld Benutzer, Computer oder Gruppen auswählen den Namen der Gruppe ein (Zurücksetzen des Kennworts), klicken Sie auf die Schaltfläche Namen prüfen, um sicherzustellen, dass der Name der Gruppe korrekt ist, und klicken Sie auf OK (siehe Abbildung 2).
 Abbildung 2: Eingabe des Gruppennamens
Abbildung 2: Eingabe des Gruppennamens
  1. Nachdem Sie sichergestellt haben, dass der Name der Gruppe auf der Seite Benutzer oder Gruppen aufgeführt ist, klicken Sie auf Weiter, wie in Abbildung 3 dargestellt.
 Abbildung 3: Sicherstellen, dass der Name der Gruppe aufgeführt ist
Abbildung 3: Sicherstellen, dass der Name der Gruppe aufgeführt ist

  1. Wählen Sie auf der Seite Zu delegierende Aufgaben die Option Benutzerkennwörter zurücksetzen und Kennwortänderung bei der nächsten Anmeldung erzwingen aus, und klicken Sie auf Weiter, wie in Abbildung 4 dargestellt.
 Abbildung 4: Auswählen der zu delegierenden Aufgaben
Abbildung 4: Auswählen der zu delegierenden Aufgaben
  1. Überprüfen Sie die Informationen auf der letzten Seite des Assistenten und klicken Sie auf Fertig stellen.

Wenn Sie auf die Schaltfläche Fertig stellen klicken, fügt der Assistent zum Delegieren von Steuerelementen der Organisationseinheit Alle Benutzer die angeforderten Berechtigungen hinzu. Sie können die Auswirkungen der Delegierung anzeigen, indem Sie mit der rechten Maustaste auf die Organisationseinheit Alle Benutzer klicken, Eigenschaften auswählen und die Registerkarte Sicherheit auswählen. (Wenn die Registerkarte Sicherheit nicht sichtbar ist, aktivieren Sie die Option Erweiterte Funktionen im Menü Ansicht der Active Directory-Konsole Benutzer und Computer.) Für eine detaillierte Ansicht können Sie auf die Schaltfläche Erweitert klicken. Abbildung 5 zeigt das Dialogfeld Erweiterte Sicherheitseinstellungen, das angezeigt wird.

Abbildung 5: Überprüfen der DACL für alle Benutzer OU
Abbildung 5: Überprüfen der DACL für alle Benutzer OU

ACLs, ACEs und Trustees — Oh mein Gott!

Um die im Dialogfeld Erweiterte Sicherheitseinstellungen bereitgestellten Informationen zu verstehen, müssen Sie die folgenden Windows-Sicherheitskonzepte kennen: Zugriffssteuerungsliste (ACL), Zugriffssteuerungseintrag (ACE), Treuhänder und Vererbung. Sie müssen diese Konzepte auch verstehen, um Remove-DSACE.ps1.

ACL zu verwenden. Es gibt zwei Arten von ACLs: diskretionäre ACLs (DACLs) und System-ACLs (SACLs). Eine DACL identifiziert die Konten, denen der Zugriff auf ein Objekt gestattet oder verweigert wird. Eine SACL beschreibt, wie ein Administrator Zugriffsversuche auf ein Objekt protokollieren möchte (z. B. Überwachung).

ASS. Eine ACL besteht aus ACEs. Jeder ACE identifiziert einen Treuhänder und gibt den Zugriff des Treuhänders (zulassen, Verweigern oder Prüfen) auf das Objekt an. Der Assistent zum Delegieren von Steuerelementen fügt der DACL eines AD-Containers ACEs hinzu. Abbildung 5 zeigt die DACL für die Organisationseinheit Alle Benutzer. In dieser Abbildung ist der Begriff Berechtigungseintrag gleichbedeutend mit ACE.

Treuhänder. Ein Treuhänder ist die Entität (ein Benutzer, eine Sicherheitsgruppe oder eine Anmeldesitzung), für die ein ACE gilt. Jedes ASS gilt für einen einzelnen Treuhänder. In Abbildung 5 ist der Begriff Auftraggeber gleichbedeutend mit Treuhänder. Abbildung 5 zeigt, dass der Gruppe zum Zurücksetzen des Kennworts zwei ASSe zugewiesen sind. Mit anderen Worten, die Gruppe zum Zurücksetzen des Kennworts ist der Treuhänder (Principal) für diese beiden ASSe.

Vererbung. Ein ASS kann direkt auf ein Objekt angewendet oder vom übergeordneten Objekt der Ressource geerbt werden. In Abbildung 5 werden die beiden ACEs für die Organisationseinheit Alle Benutzer, die die Kennwortzurücksetzungsgruppe als Treuhänder enthalten, nicht vom übergeordneten Container geerbt (d. h. die Spalte Geerbt von lautet None), da sie vom Assistenten für die Delegierung von Steuerelementen direkt zur DACL hinzugefügt wurden. Abbildung 6 zeigt die DACL für die Buchhaltung OU. Die DACL der Accounting-Organisationseinheit enthält zwei ASSe für die Gruppe zum Zurücksetzen des Kennworts, aber diese ASSe werden von der Organisationseinheit Alle Benutzer geerbt (dh die Spalte Geerbt von lautet OU=All Users,DC=fabrikam,DC=local).

Abbildung 6: Überprüfen der DACL für die Buchhaltung OU
Abbildung 6: Überprüfen der DACL für die Buchhaltung OU

Einführung in Remove-DSACE.ps1

Ich habe Remove-DSACE.ps1 (kurz für remove directory service ACEs) geschrieben, um die folgenden Ziele zu erreichen:

  • Suchen Sie Organisationseinheiten, die nicht vererbte ASSe enthalten, die einen Treuhänder enthalten.
  • Bei Bedarf in Untereinheiten rekurrieren.
  • Entfernt nicht geerbte ASSe, die einen Treuhänder enthalten.
  • Prägnante Ausgabe erzeugen.

Die Syntax des Skripts lautet wie folgt:

Remove-DSACE path 

Der Parameter -Report oder -Remove legt fest, ob das Skript nicht vererbte ACEs auflistet oder entfernt. Wenn Sie -Report angeben, findet das Skript nicht geerbte ASSe, die Treuhänder enthalten, entfernt sie jedoch nicht. Wenn Sie -Remove angeben, entfernt das Skript die nicht geerbten ASSe. Es ist sehr wichtig zu verstehen, dass das Skript alle nicht geerbten ASSe für den Treuhänder entfernt, nicht nur ASSe, die vom Delegierungsassistenten hinzugefügt wurden. Dies liegt daran, dass es keine Möglichkeit gibt zu bestimmen, wie die nicht geerbten ASSe hinzugefügt wurden.

Die Parameter -Report und -Remove sind optional, aber das Skript nimmt standardmäßig den Parameter -Report an. Das Skript gibt einen Fehler aus, wenn Sie beide Parameter gleichzeitig angeben.

Sie verwenden den Parameter -Path, um einen oder mehrere Distinguished Names (DNs) von AD-Organisationseinheiten anzugeben. Der Parametername -Path ist optional und akzeptiert Pipeline-Eingaben. Obwohl Sie mehrere DNs angeben können, können Sie keine Platzhalter verwenden.

Der Parameter -Trustee benennt den in den ACEs zu findenden Treuhänder. Das Skript untersucht die DACL jeder Organisationseinheit auf nicht vererbte ASSe, die den benannten Treuhänder enthalten. Sie können mehrere Werte mithilfe einer durch Kommas getrennten Liste oder eines Arrays angeben, aber Sie können keine Platzhalter verwenden. Sie können Trustee-Namen mit einem der in Tabelle 1 aufgeführten Namensformate angeben.

Format Beispiel
Tabelle 1: Namensformate für den Parameter -Trustee
Windows NT 4.0 Namensformat (NT4) HERSTELLER\KenDyer
Die DN des Objekts CN=Ken Dyer,CN=Users,DC=fabrikam,DC=com
Der kanonische Name des Objekts fabrikam.com/Users/Ken Färber
Der Benutzerprinzipalname (UPN) des Objekts)

Sie schließen den Parameter -Recurse ein, wenn Sie unter der angegebenen Organisationseinheit nach Organisationseinheiten suchen möchten. Wenn Sie eine Verbindung zu einem bestimmten Domänencontroller (DC) herstellen möchten, können Sie den Namen des Servers mit dem Parameter
-ServerName angeben. Die Parameter -Recurse und -ServerName sind optional.

Das Skript unterstützt alternative Anmeldeinformationen. Der Parameter -Credential verwendet ein PSCredential-Objekt, das den Benutzernamen und das Kennwort enthält, mit denen das Skript eine Verbindung zur Domäne herstellen soll.

Das Skript unterstützt auch den Parameter -Confirm. Der Parameter -Confirm ist nur in Kombination mit dem Parameter -Remove sinnvoll. Der Parameter -Confirm ist standardmäßig aktiviert, es sei denn, Sie deaktivieren ihn, indem Sie -Confirm:$FALSE angeben oder die Variable $ConfirmPreference auf None setzen. Sie sollten den Parameter -Confirm nur deaktivieren, wenn Sie absolut sicher sind, dass Sie die richtigen ASSe entfernen.

Das Skript erzeugt Ausgabeobjekte, die die in Tabelle 2 aufgeführten Eigenschaften enthalten.

Immobilien Beschreibung
Tabelle 2: Eigenschaften des Ausgabeobjekts für Remove-DSACE.ps1
Pfad Der DN der Organisationseinheit
Treuhänder Der Name des Treuhänders im Format DOMÄNE\Name
ACEs Die Anzahl der nicht geerbten ACEs in der ACL der Organisationseinheit
Ergebnis* Das Wort “Entfernt” oder eine Fehlermeldung
* Die Eigenschaft Result ist nur bei Verwendung des Parameters -Remove vorhanden.

Das Skript enthält nur Organisationseinheiten mit nicht geerbten Assen, die einen Treuhänder enthalten. Geerbte ASSe für einen Treuhänder sind nicht in der Ausgabe enthalten. Abbildung 7 zeigt zwei Beispiele. Der erste Befehl in Abbildung 7 erzeugt keine Ausgabe, da die DACL für die Organisationseinheit Buchhaltung keine nicht geerbten ACEs für die Kennwortrücksetzgruppe enthält. (Die Organisationseinheit Buchhaltung verfügt über zwei ASSe für die Kennwortzurücksetzungsgruppe, aber diese ASSe werden von der Organisationseinheit Alle Benutzer geerbt, wie in Abbildung 6 dargestellt.) Der zweite Befehl in Abbildung 7 erzeugt eine Ausgabe. Es gibt zwei nicht vererbte ASSe für die Kennwortzurücksetzungsgruppe in der Organisationseinheit Alle Benutzer (siehe Abbildung 5).

Abbildung 7: Vergleich der Ausgabe zweier Befehle
Abbildung 7: Vergleich der Ausgabe von zwei Befehlen

Reales Beispiel

Schauen wir uns an, wie Sie Remove-DSACE.ps1 in der realen Welt verwenden können. Angenommen, ein Administrator in der fabrikam.die lokale Domäne hatte den Assistenten zum Delegieren von Steuerelementen verwendet, um Berechtigungen an die Gruppe Sekretariatspersonal in der Organisationseinheit Alle Benutzer und einige der darunter liegenden Organisationseinheiten zu delegieren. Sie müssen diese delegierten Berechtigungen entfernen, damit Sie die Berechtigungen an andere Gruppen delegieren können.

Zuerst müssen Sie eine Liste der Organisationseinheiten sehen, die nicht geerbte ASSe haben, die die Sekretariatsgruppe enthalten. Dazu können Sie den Befehl verwenden:

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

Dieser Befehl und seine Ausgabe sind in Abbildung 8 dargestellt.

Abbildung 8: Auflisten der Organisationseinheiten mit nicht geerbten Assen, die die Sekretariatsgruppe enthalten
Abbildung 8: Auflisten der Organisationseinheiten mit nicht geerbten Assen, die die Sekretariatsgruppe enthalten

In dieser Ausgabe sehen Sie, dass es drei Organisationseinheiten mit nicht geerbten Assen gibt, die die Sekretariatsgruppe enthalten. Nachdem Sie überprüft haben, dass Sie diese ASSe entfernen können, können Sie den Parameter -Report durch den Parameter -Remove ersetzen und den Befehl wie in Abbildung 9 gezeigt wiederholen. Wie bereits erwähnt, werden auch diese Berechtigungen entfernt, wenn der Sekretariatsgruppe andere Berechtigungen außerhalb des Assistenten für die Delegierung von Steuerelementen zugewiesen wurden.

Abbildung 9: Entfernen der Organisationseinheiten mit nicht geerbten ACEs, die die Sekretariatsgruppe enthalten
Abbildung 9: Entfernen der Organisationseinheiten, die nicht geerbte ASSe enthalten, die die Sekretariatsgruppe enthalten

Kontrolle über die Anzeigendelegierung übernehmen

Der Assistent für die Delegierung von Steuerelementen ist ein sehr hilfreiches Tool, aber es gibt keine einfache Möglichkeit, die Auswirkungen schnell anzuzeigen oder umzukehren. Obwohl Sie Dsrevoke verwenden können.exe und Dsacls.um diese Aufgaben zu erfüllen, weisen diese Tools jedoch einige Einschränkungen auf. Wenn Sie stattdessen das Skript Remove-DSACE.ps1 verwenden, haben Sie eine bessere Kontrolle über delegierte Berechtigungen in AD. Sie können dieses Skript herunterladen, indem Sie oben auf der Seite auf die Schaltfläche Code herunterladen klicken.

Verwandte Videos von Brian Desmond (nur VIP-Zugang):
Sitzung 1: Delegierung von Active Directory-Berechtigungen
Sitzung 2: Delegierung von Active Directory-Sicherheitsberechtigungen

Leave a Reply