Tags: Active Directory, PowerShell, Rechteverwaltung
Die Bedeutung eines gewissenhaften Rechte-Managements für das AD und seine Objekte ist unbestritten. Unter den Bordmitteln eignen sich GUI-Tools vor allem für das Zuteilen und Entziehen der Berechtigungen, während PowerShell besonders flexibel bei der Auswertung der ACLs ist.
Die Delegierung von administrativen Aufgaben an normale Benutzer oder eine inkonsistente Vergabe von Benutzerrechten können dazu führen, dass User oder Gruppen ein Übermaß an Berechtigungen erhalten. Sie sind damit in der Lage, das Active Directory durch unsachgemäße oder böswillige Aktivitäten zu beschädigen oder sich Zugang zu sensiblen Daten zu verschaffen.
Externe Tools für höhere Ansprüche
Aus diesem Grund empfiehlt es sich, regelmäßig die Berechtigungsstruktur des AD zu überprüfen. Für diesen Zweck existiert eine Reihe mächtiger Tools von Drittanbietern, die auch Änderungen in Echtzeit überwachen können.
Wer geringere Ansprüche stellt, dem hilft etwa der kostenlose AD ACL Scanner bei dieser Aufgabe. Es handelt sich dabei um eine GUI für die mitgelieferten PowerShell-Scripts. Allerdings kann man PowerShell auch selbst spontan einsetzen, um Berechtigungen für AD-Objekte abzufragen.
AD als Laufwerk ansprechen
In vielen Fällen benötigt man dafür kein Script, vielmehr können oft schon ein paar Befehle auf der Kommandozeile die gewünschten Ergebnisse liefern. Das liegt auch daran, dass man das Active Directory als Laufwerk mounten und einfach durch seine Struktur navigieren kann. Dort lassen sich spezifische Informationen mit Hilfe von mehreren AD-Cmdlets zu Tage fördern.
Die folgenden Beispiele demonstrieren, wie man anzeigen kann, wer bestimmte Rechte in einer OU hat. Dafür lädt man zuerst das Modul ActiveDirectory und wechselt dann zur gewünschten Domäne im PowerShell-Laufwerk AD:
Import-Module ActiveDirectory
cd 'AD:\DC=contoso,DC=de'
Will man dort zum Beispiel herausfinden, wer Schreibrechte auf die OU Domain Controllers hat, dann gibt man diesen Befehl ein:
(Get-Acl -Path "OU=Domain Controllers").Access |
where ActiveDirectoryRights -like Write*
In diesem Aufruf kann beim Parameter Path die Angabe der Domäne entfallen, weil die OU Domain Controllers direkt unterhalb des aktuellen Verzeichnisses liegt und somit ein relativer Pfad ausreicht. Andernfalls müsste man den vollständigen Distinguished Name für die OU in Form von "OU=Domain Controllers,DC=contoso,DC=de" angeben.
Das Fragezeichen steht als Alias für Where-Object und dient dazu, nur jene Einträge anzuzeigen, wo eines der Rechte die Zeichenkette "Write" enthält. Eine übersichtlichere Darstellung erhält man, wenn die Ausgabe des Befehls über eine Pipe an Out-GridView weiterleitet.
Rekursive Auswertung von OUs
Wenn man sich nicht mit der Auswertung einer einzelnen OU zufrieden geben will, dann hilft Get-ChildItem dabei, alle OUs einer Domäne rekursiv zu durchlaufen. Der nachgeschaltete Filter schränkt das Ergebnis auf Objekte vom Type OU ein.
Danach liest die Function Get-OURights nach dem gleichen Muster wie im obigen Befehl die Zugriffsrechte aus, wobei für die Iteration über die einzelnen OUs und deren ACLs verschachtelte foreach-Schleifen dienen.
Beim Aufruf der Function übergibt man im Parameter $Right den Namen des Privilegs, das man untersuchen möchte. Dabei ist auch die Verwendung des Wildcards '*' zulässig. Die Ausgabe erfolgt im CSV-Format, so dass man die Daten etwa nach Excel übernehmen kann.
Um zum Beispiel festzustellen, wer in den OUs der Domäne eines der Schreibrechte besitzt, könnte man im AD-Laufwerk zu dieser Domäne wechseln und
Get-OURights("Write*")
eingeben. Eine Liste aller Berechtigungen inklusive Erläuterung findet sich auf dieser MSDN-Seite.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Gruppenmitgliedschaft im Active Directory temporär zuweisen mit PowerShell-GUI
- Praxisbeispiel für JEA: Management von Storage Spaces Direct (S2D) delegieren
- Managed Service Accounts einrichten mit PowerShell
- Security- und Health-Checks für Active Directory mit PowerShell-Scripts
- Besitzer von Computer-Objekten im Active Directory anzeigen und ändern
Weitere Links