Viele Administratoren die eine Active Directory Umgebung betreuen, werden bereits den Objektdelegierungsassistenten kennengelernt haben. Dieser Assistent der sich zum einen in der MMC Active Directory-Benutzer und -Computer und zum anderen, in der MMC Active Directory-Standorte und -Dienste aufrufen lässt, ist dem Administrator bei der Zuweisung von Active Directory-Berechtigungen behilflich. Mit dem Assistenten können bei den zur Verfügung stehenden allgemeinen Tasks, schnell Berechtigungen für einige typische Fälle zugewiesen werden. An dieser Stelle bietet der Assistent aber nur einen kleinen Teil der Möglichkeiten an.
Der Assistent ist dabei nur eine von insgesamt drei möglichen Varianten, um Benutzern entsprechende Rechte im Active Directory zu delegieren. Die beiden anderen Varianten wären, dass direkte bearbeiten der erweiterten Sicherheitseinstellungen (im security descriptor) eines Objekts und das Kommandozeilentool DSACLS. Wobei gerade die Administratoren, die sich nicht so sehr im Active Directory auskennen, den Delegierungsassistenten verwenden sollten.
Weitere Details werden in den beiden folgenden Artikeln erläutert:
Objektdelegierungen einrichten Delegierte Berechtigungen im AD verstehen
Was viele Administratoren nicht wissen ist, das beim Ausführen des Delegierungsassistenten an dem Punkt Zuzuweisende Aufgaben die dort aufgeführten allgemeinen Tasks, aus einer Textdatei stammen.
Diese Textdatei die den Namen delegwiz.inf trägt, existiert auf jedem Domänencontroller (und jedem Mitgliedsserver) und ist jederzeit veränderbar. Die Datei delegwiz.inf befindet sich unter Windows 2000 sowie Windows Server 2003 im Verzeichnis %windir%\Inf und unter Windows Server 2008 im Verzeichnis %windir%\system32.
Standardmäßig sind dort unter Windows 2000 bereits sieben und unter Windows Server 2003 sowie Windows Server 2008 13 Aufgaben vordefiniert. Je nachdem in welcher MMC und auf welcher Ebene der Delegierungsassistent ausgeführt wird, variiert die Anzeige der allgemeinen Tasks. Die vordefinierten allgemeinen Aufgaben dienen dazu, eine Reihe von Berechtigungen und nicht gezielt ein einzelnes Recht zu vergeben.
Der Administrator kann weitere Vorlagen in die delegwiz.inf Datei eintragen, um sich damit seine tägliche Arbeit zu erleichtern. Denn wiederkehrende Aufgaben können in die Datei delegwiz.inf mit aufgenommen werden und stehen dann, ab sofort für die Zukunft als weitere allgemeine Tasks zur Verfügung. Unter Windows Server 2008 muss zuerst der Administrator den Besitz der delegwiz.inf Datei übernehmen und anschließend die Rechte anpassen. Danach kann die Datei auch unter Windows Server 2008 bearbeitet werden.
Es dürfte jedem klar sein, dass das erweitern der delegwiz.inf Datei durch zusätzliche Aufgaben dann auch nur auf dem einen DC erscheinen, auf dem die Datei bearbeitet wurde. Auf den anderen DCs steht die hinzugefügte neue Aufgabe selbstverständlich nicht zur Verfügung. Entweder man richtet dann die Delegierung im Active Directory nur über diesen einen DC für die Zukunft ein oder fügt die Änderung in der delegwiz.inf auf allen anderen DCs hinzu. Eine andere Möglichkeit wäre die bearbeitete Datei im Nachhinein auf alle anderen DCs zu kopieren.
Wenn man sich nun die Datei delegwiz.inf genauer anschaut, ist der Aufbau einer allgemeinen Aufgabe immer gleich. Die wesentlichen Punkte einer Vorlage wären:
-
Für welche Container-Klasse steht die allgemeine Aufgabe zur Verfügung.
-
Die Beschreibung für die allgemeine Aufgabe.
-
Welche Berechtigungen werden erteilt, wenn die allgemeine Aufgabe delegiert wird.
Hier ein Beispiel aus der delegwiz.inf:
[DelegationTemplates]
Templates = template1, template2,…
;---------------------------------------------------------
[template1]
AppliesToClasses=domainDNS,organizationalUnit,container
Description="Erstellt, entfernt und verwaltet Benutzerkonten"
ObjectTypes=SCOPE, user
[template1.SCOPE]
user=CC,DC
[template1.user]
@=GA
;---------------------------------------------------------
Der Aufbau der Vorlage sieht folgendermaßen aus:
-
Bei dem Hinzufügen einer neuen Vorlage muss unter der Zeile [DelegationTemplates] zuerst ein neuer Eintrag template mit einer fortlaufenden Nummer hinzugefügt werden. Dort sind bereits unter Windows Server 2003/2008 13 Einträge vorhanden. Demzufolge muss beim Hinzufügen einer neuen Aufgabe der Eintrag template14 ergänzt werden. Der nächste Eintrag würde dann template15 lauten usw.
-
Es folgt unter der gestrichelten Linie in eckigen Klammern die Angabe der Vorlagennummer [template14], die in der Zeile [DelegationTemplates] angegeben wurde. Mit diesem Eintrag wird eine neue Vorlage eröffnet.
-
Die nächste Zeile AppliesToClasses gibt an, für welche Klassen diese Vorlage bei dem Einrichten einer Delegierung vorhanden sein soll. Die einzelnen Klassen werden durch ein Komma getrennt. Falls also der Eintrag AppliesToClasses=organizationalUnit existiert bedeutet dies, das diese Vorlage bei dem Ausführen des Delegierungsassistenten nur auf einer Organsationseinheit (OU) angezeigt wird. Es können folgende Klassen eingetragen werden: container (dabei wird die Vorlage auf einem Container wie z.B. auf den Standard-Containern Computers oder Users angezeigt), domainDNS (hier erscheint die Vorlage beim Ausführen des Delegierungsassistenten auf der Domänenebene), organizationalUnit (die Vorlage erscheint auf einer Organisationseinheit) und site (hierbei erscheint die Vorlage auf Standortebene).
ACHTUNG: Diese Werte sind case sensitive. Das bedeutet, bei den Einträgen ist auf die Groß-/Kleinschreibung zu achten! Würde also als Wert anstatt organizationalUnit diese Schreibweise verwendet werden OrganizationalUnit, so würde die Vorlage nicht auf OU-Ebene angezeigt werden.
-
Der nächste Eintrag Description dient zur Beschreibung dieser Vorlage. Der hier eingetragene Text wird beim Ausführen des Delegierungsassistenten bei den allgemeinen Tasks angezeigt.
-
In der Zeile ObjectTypes können mehrere Werte enthalten sein. So könnten z.B. die Werte ObjectTypes=SCOPE, user eingetragen sein. Hier werden die einzelnen Objekt-Klassen deren Berechtigungen angepasst werden sollen angegeben. Bei mehreren Einträgen werden diese durch ein Komma getrennt. Die eigentlichen Berechtigungen werden dann jeweils in einer eigenen Zeile angegeben.
Mit dem Eintrag SCOPE wird definiert, für welche Objekte die zu vergebenen Berechtigungen gelten sollen. Nämlich für „Dieses und alle untergeordneten Objekte“. Dabei ist es nicht zwingend, dass dieser Eintrag existiert.
-
Die Angabe von user=CC,DC unterhalb von [template1.SCOPE] gibt die zu vergebenen Berechtigungen an und zwar für die vorher angegebene Klasse: ObjectTypes=SCOPE. Die Berechtigungen die im Security Descriptor Definition Language (SDDL)-String anzugeben sind, CC sowie DC, stehen für „Create Child“ und „Delete Child“. Child steht in diesem Fall für Benutzerobjekte. Das bedeutet, hier wird die Berechtigung für das erstellen sowie löschen von Benutzerkonten (user) vergeben.
-
Unterhalb des Eintrags [template1.user] existiert der Eintrag @=GA. Das @-Symbol gibt an, dass die Berechtigung auf allen Attributen des Objekts, das in der Zeile ObjectTypes angegeben wurde, vergeben werden soll. Die Berechtigung GA steht für „Generic All“, was Vollzugriff bedeutet. Der Eintrag @=GA bedeutet also, das der „Vollzugriff auf Benutzerobjekte“ gewährt wird. Möchte man anstatt auf allen Attributen, bloß auf einem oder wenigen Attributen eines Objekts Berechtigungen vergeben, so kann dies mit Angabe der Attribut-Namen und der gewünschten Berechtigung erreicht werden. Also z.B. so: lockoutTime=WP.
Siehe auch: How to customize the task list in the Delegation Wizard
Soll z.B. das Entsperren von Benutzerkonten durch eine allgemeine Aufgabe delegiert werden, so gilt es in der delegwiz.inf Datei diese Vorlage zu ergänzen:
;--------------------------------------------------------- [template14] AppliesToClasses=domainDNS,organizationalUnit,container
Description="Benutzerkonten entsperren"
ObjectTypes=user
[template14.user] lockoutTime=WP
;----------------------------------------------------------
Oder wenn man die Berechtigung zum verschieben von Computerkonten delegieren möchte, so kann die folgende Vorlage dazu verwendet werden. Allerdings gilt es dann diese Aufgabe auf dem Quell- sowie Ziel-Container durchzuführen.
;--------------------------------------------------------- [template15] AppliesToClasses=domainDNS,organizationalUnit,container
Description="Computerkonten verschieben"
ObjectTypes=SCOPE, computer
[template15.SCOPE] computer=CC,DC
[template15.computer] cn=WP name=WP
;----------------------------------------------------------
Wer die Berechtigung zum verschieben von Objekten restriktiver handhaben möchte, der kann dies auf folgende Weise erledigen. Zum verschieben eines Active Directoy-Objekts, sei es z.B. ein Benutzer-, Computer oder Gruppenkonto, müssen die Rechte wie folgt gesetzt sein:
-
Es muss das Recht DELETE CHILD (DC) auf dem Quell-Container gesetzt werden.
-
Das Recht WRITE PROPERTIES (WP) für die beiden Eigenschaften RDN (das wäre das Attribut „name“) sowie CN auf dem Quell-Container ist zu setzen.
-
Auf dem Ziel-Container muss das Recht CREATE CHILD (CC) gesetzt werden.
Nun könnte man die ersten beiden Punkte in einer Vorlage und den dritten Punkt in einer eigenen Vorlage erstellen. Denn es wird weder das Recht CC im Quell-Container, noch die beiden Rechte DC und WP im Ziel-Container benötigt. Demzufolge muss auf dem Quell-Container die Aufgabe mit den ersten beiden Punkten und auf dem Ziel-Container die Aufgabe mit dem dritten Punkt ausgeführt werden.
Falls das Recht Benutzerkonten zu verschieben delegiert werden soll, so reicht es die Einträge computer durch user in dem template15 zu ersetzen.
Microsoft stellt auf dieser Seite insgesamt 70(!) Vorlagen zur Verfügung.
Dadurch stellt der Delegierungsassistent ein Werkzeug dar, womit sich viele alltägliche Delegierungsaufgaben lösen lassen.
Weitere Informationen: Delegierte AD-Berechtigungen anzeigen und entfernen
In dem Artikel Delegierte Berechtigungen im AD verstehen wurden die Hintergründe bei der Objektdelegierung erläutert, worauf auch auf die techische Umsetzung kurz eingegangen wurde. In diesem Artikel soll dieser Punkt weiter erläutert werden.
Die Delegierungsfunktionen im Active Directory bieten dem Administrator die Möglichkeit, administrative Aufgaben an andere Benutzer zu delegieren. Durch die Objektverwaltung werden eine Reihe von Sicherheitsproblemen beseitigt. Diese Funktion die seit Windows 2000 existiert macht es möglich, dass Benutzer im Active Directory nur die Berechtigungen, die sie auch tatsächlich für ihre tägliche Aufgabe benötigen erhalten. Die Verwaltung der Objekte kann somit an andere Benutzer übergeben werden und hat den Vorteil, dass dadurch die Administration dezentral verteilt werden kann. Der Administrator muss nicht alle Active Directory-Aufgaben selbst durchführen. Der Sicherheitsaspekt ist dabei ebenfalls nicht zu verachten, denn es existieren auch heute noch zu viele Domänen-Administratoren in den Unternehmen die es nicht geben müßte, Dank der Objektverwaltung.
Viele Unternehmen schöpfen die Möglichkeiten der Delegierung nicht aus. Einige Unternehmen sind sich dessen garnicht bewußt was hinter dieser Funktion steckt und andere wiederum scheuen sich davor, ein entsprechendes Delegierungskonzept abgestimmt auf die unternehmerischen Anforderungen zu entwerfen. Dabei ist die Planung eines Delegierungskonzepts nicht kompliziert, es muss lediglich klar sein was erreicht werden soll. Daher ist es unausweichlich zu dokumentieren, welche Berechtigungen die Benutzer erhalten sollen bevor es an die technische Umsetzung geht. Welche Benutzer sollen welche Berechtigungen für welche Verwaltungsaufgaben erhalten. Welche Aufgaben können delegiert werden und welche Arbeiten sollten von der IT-Abteilung durchgeführt werden. Es benötigt auch ein Grundverständinis für die rollenbasierte Administration um das ideale Delegierungsmodell zu entwickeln. Denn das Active Directory ist als Verzeichnisdienst geradezu prätestiniert eine rollenbasierte Administration aufzubauen. Zugangsberechtigungen können der Rolle eines Mitarbeiters und nicht seinem Namen zugeordnet werden.
Einige Grundregeln die es bei dem Konzept zu beachten gilt wären:
-
Delegierungen sollten immer auf Gruppen angewendet werden und nicht auf einzelne Personen. Das gestaltet die zukünftige Administration erheblich einfacher, denn es können flexibler Benutzer zu der Gruppe mit den bereits delegierten Berechtigungen hinzugefügt oder wieder entfernt werden. Somit müssen z.B. die gleichen Berechtigungen eines ausgeschiedenen Mitarbeiters nicht erneut seinem Nachfolger delegiert werden. Der Nachfolger muss lediglich der Gruppe hinzugefügt werden und kann dann die gleichen Aufgaben wahrnehmen.
-
Die Domänen-Administratoren sollten mit einem normalen Benutzerkonto angemeldet sein, um nicht mit zu hohen Berechtigungen permanent angemeldet zu sein. Erst wenn administrative Arbeiten durchzuführen wären, sollte man sich mit einem administrativen Konto anmelden.
-
Die Option „Ausführen als“ (Run as) sollte genutzt werden. Das macht das eine oder andere anmelden als Domänen-Administrator überflüssig.
Ein wesentlich wichtiger Punkt beim Entwerfen eines Delegierungskonzepts ist auch eine entsprechende OU-Struktur zu Planen, die den Ansprüchen des Unternehmens genügt. Denn das Einrichten von Organisationseinheiten (OU) hat zweierlei Vorteile. Zum einen lassen sich auf OUs Gruppenrichtlinien anwenden und zum anderen dienen OUs als Vewaltungsbereich innerhalb des Active Directorys. OUs tragen im Delegierungskonzept eine wichtige Rolle, denn durch das Erstellen von OUs werden die Rechte über Objekte auf diese Ebene begrenzt. Das bedeutet konkret, soll der First-Level Support alle Benutzer aus dem Verkauf und nur diese administrieren (Benutzerkonto erstellen/löschen, Konto entsperren, Kennwort zurücksetzen, Gruppenmitgliedschaften ändern etc.), so könnten alle Benutzer aus dem Verkauf in eine OU verschoben und dem First-Level Support die entsprechenden Rechte auf diese OU delegiert werden.
Es gilt zuerst das Delegierungskonzept zu erarbeiten sowie zu dokumentieren, ehe es dann in einer Testumgebung getestet und anschließend evaluiert werden sollte. Erst dann kann es zur technischen Umsetzung in der produktiven Umgebung übergehen. Jedes Unternehmen für sich ist zwar individuell, doch die meisten Aufgaben bei der Active Directory-Administration sind in allen Unternehmen gleich. Es müssen Objekte erstellt (z.B. Benutzerkonten), bearbeitet und gelöscht werden. Deshalb kann auf vielen Unternehmen ein einmal entworfenes allgemeingültiges Delegierungsmodell angewendet werden.
Bekanntermaßen stellen oftmals in den Unternehmen gerade die Unternehmenspolitik oder das beschneiden der Rechte einzelner IT-Mitarbeiter eine Herausforderung dar. Trotzalledem ist es im Sinne der Unternehmenssicherheit Pflicht ein Delegierungskonzept zu implementieren, anstatt mit Domänen-Administratorrechten im Web zu surfen oder E-Mails zu bearbeiten.
Die technische Umsetzung eines Delegierungsmodells kann dabei mit Boardmitteln auf die drei folgenden Varianten realisiert werden:
-
In der grafischen Oberfläche (GUI) durch den Assistenten zum Zuweisen der Objektverwaltung.
-
Ebenfalls in der GUI, durch direktes Bearbeiten der Discretionary Access Control List (DACL) im security descriptor eines Objekts.
-
Mit dem Kommandozeilentool DSACLS.
Objektverwaltung zuweisen
Die meistverbreiteste Variante zum Einrichten von Delegierungen dürfte der Delegierungs-Assistent sein, den sicherlich viele Administratoren kennen. Der Assistent lässt sich aus dem Kontextmenü (Rechtsklick), z.B. auf den Standard-Containern Computers sowie Users oder aber auch auf Domänen- bzw. OU-Ebene, im Snap-In Active Directory-Benutzer und -Computer durch die Option Objektverwaltung zuweisen… aufrufen.

Der Assistent startet mit der Begrüßungsseite. Im nächsten Schritt muss mit Hinzufügen ein Benutzer oder besser eine Gruppe ausgewählt werden, der die Rechte auf das Objekt delegiert werden sollen. Danch folgt der entscheidende Schritt, nämlich das Zuweisen der Aufgaben bzw. die Vergabe der Rechte auf das Objekt.
An diesem Schritt muss entschieden werden, ob dem Benutzer oder der Gruppe eine allgemeine oder eher eine benutzerdefinierte Aufgabe delegiert werden soll. Dabei bietet der Assistent standardmäßig unter Windows Server 2003 zehn sowie unter Windows Server 2008 neun allgemeine Aufgaben im Standard-Container Users an. Auf einer OU sind es hingegen zwölf unter Windows Server 2003 sowie elf allgemeine Aufgaben unter Windows Server 2008. Dabei ist die gleichzeitige Aktivierung mehrerer Aufgaben auf jeder Ebene möglich. An dieser Stelle sei angemerkt, dass dieser Schritt unter Windows 2000 nicht auf dem Standard-Container Users existiert, dafür aber auf einer OU (mit sechs allgemeinen Aufgaben). Unter Windows 2000 sind insgesamt sieben allgemeine Aufgaben definiert.
In Windows Server 2003 und Windows Server 2008 sind die einzelnen Schritte im Assistenten gleich.

Wird z.B. die Aufgabe Erstellt, entfernt und verwaltet Benutzerkonten ausgewählt, erhält die Gruppe die dieses Recht delegiert bekommt, Vollzugriff auf die Benutzerkonten in dem Container auf dem der Delegierungsassistent ausgefürt wurde. Bei der Aktivierung der Aufgabe Setzt Benutzerkennwörter zurück und erzwingt Kennwortänderung bei der nächsten Anmeldung erhält die Gruppe die erweiterte Berechtigung Kennwort zurücksetzen sowie Lese- und Schreibrechte auf das Attribut Pwd-Last-Set auf Benutzerkonten. Oder bei der Aufgabe Erstellt, löscht und verwaltet Gruppen werden den Benutzern Vollzugriff auf Gruppen-Objekt erteilt. Die einzelnen allgemeinen Aufgaben dürften aber selbsterklärend sein.
Wenn eine allgemeine Aufgabe ausgewählt wurde, erscheint im nächsten Schritt die Zusammenfassung und mit einem Klick auf Fertig stellen wird der Assistent beendet.
Für viele Administratoren dürfte die Aufgabe Benutzerdefinierte Tasks zum Zuweisen erstellen interessant sein. Denn bei der Aktivierung einer allgemeinen Aufgabe, werden eine Reihe von Berechtigungen vergeben was bedeutet, dass auf mehreren Attributen Berechtigungen vergeben werden. Soll jedoch ein einzelnes Recht (sofern möglich) delegiert werden, so ist die benutzerdefinierte Variante genau das richtige. Hier können Berechtigungen auf einzelne Attribute vergeben werden.
Bei der benutzerdefinierten Variante können die gleichen Berechtigungen wie unter den allgemeinen Aufgaben vergeben werden. Jedoch stehen unter den benutzerdefinierten Aufgaben viel mehr Optionen zur Auswahl. Dort können unter anderem neben Berechtigungen auf Benutzer-, Computer- oder Gruppenkonten, auch Rechte auf Kontaktobjekte, PSO (unter Windows Server 2008, Password Settings Objects), OU-, Standort-, Standortverknüpfungs-, Subnetz- und Verbindungs-Objekte vergeben werden.
Falls nun der benutzerdefinierte Task ausgewählt wurde, müssen weitere Angaben getroffen werden.

Es muss festgelegt werden, ob die Verwaltungsaufgaben für den aktuellen Ordner mit allen bestehenden und den neu zu erstellenden Objekten gelten soll oder nur für bestimmte Objeke im Ordner. In der Praxis sollen meistens einzelne Rechte auf bestimmte Objekte vergeben werden, daher ist an dieser Stelle die zweite Option zu wählen.
Für viele Administratoren dürfte die Option "Benutzer"-Objekte interessant sein. Denn gerade der tagtägliche Benutzersupport benötigt einiges an Support. 
Anschließend müssen im nächsten Schritt die Berechtigungen vergeben werden, wobei die Berechtigungen in drei Bereiche unterteilt sind:
-
Allgemein: Hier können allgemeine Berechtigungen, wie z.B. Vollzugriff, Lesen, Schreiben etc. vergeben werden.
-
Eigenschaftenspezifisch: Ist dieser Bereich aktiviert, können Berechtigungen auf einzelne Attribute vergeben werden. Bei der benutzerdefinierten Delegierung dürfte dieser Bereich in Frage kommen.
-
Erstellen/Löschen der Berechtigungen von bestimmten untergeordneten Objekten: In diesem Bereich wird die Vergabe von Berechtigungen, für das Erstellen und Löschen von allen verfügbaren Objekten, bezogen auf das im vorherigen Schritt ausgewählten Objekts, gestattet.
Hier drei Beispiele:
Soll der Benutzersupport das Recht auf einem Container erhalten, in den Eigenschaften der Benutzerkonten im Reiter Konto die Option Konto läuft ab zu konfigurieren, so ist bei der benutzerdefinierten Aufgabe das Objekt „Benutzer-Objekte“ auszuwählen und im nächsten Schritt dann die „Eigenschaftenspezifische-Option“ accountExpires schreiben zu aktivieren.
Dabei wird der Schreibzugriff auf das Attribut Account-Expires für "Benutzer"-Objekte gesetzt.

Was auch eher eine lästige Aufgabe des Benutzersupports sein dürfte, ist das Entsperren von Benutzerkonten bei zu oft falsch eingegebenen Kennwörtern. Wie oft das Kennwort falsch eingegeben werden darf und ob der Benutzer nach einer gewissen Zeit erneut sein Glück versuchen kann oder ob ein Administrator die Sperrung aufheben muss, wird alles in der Kennwort-Richlinie auf Domänenebene gesteuert. Damit nun der Benutzersupport das einzelne Recht zum entsperren von Benutzerkonten erhält, muss ebenfalls bei der benutzerdefinierten Vorgehensweise zuerst die Option „Benutzer-Objekte“ ausgewählt und im darauffolgenden Schritt die „Eigenschaftenspezifische-Berechtigung“ lockoutTime schreiben ausgewählt werden.
Danach kann der Support in den Eigenschaften der Benutzerkonten im Reiter Konto den Haken bei der Option Konto ist gesperrt (unter Windows Server 2003) oder Kontosperrung aufheben (unter Windows Server 2008) entfernen.
Bei dieser Delegierung wird ebenfalls der Schreibzugriff auf das Attribut Lockout-Time für "Benutzer"-Objekte gesetzt.

Damit der Benutzersupport im Reiter Konto die Anmeldezeiten in den Benutzerkonten konfigurieren kann, müssen diesmal bei der benutzerdefinierten Variante zuerst die „Benutzer-Objekte“ aktiviert und anschließend die „Eigenschaftenspezifische-Berechtigung“ logonHours schreiben aktiviert werden.
Auch in diesem Fall wird der Schreibzugriff auf das Attribut Logon-Hours für "Benutzer"-Objekte gesetzt.

Anschließend folgt im letzten Schritt des Assistenten die Zusammenstellung, in der die vorgenommenen Einstellungen überprüft werden können. Mit einem Klick auf Fertig stellen wird der Assistent beendet.
Das waren drei recht einfache Aufgaben für die Delegierung. Es können natürlich noch weit tiefere Berechtigungen delegiert werden (z.B. für die AD-Replikation). Ein guter Einstieg in das Thema Delegierung (mit sehr vielen Beispielen) sind diese beiden Whitepaper:
Best Practices for Delegating Active Directory Administration Best Practices for Delegating Active Directory Administration Appendices
Nach der Delegierung ist es noch notwendig, dem Benutzersupport die AD-Snap-Ins zur Verfügung zu stellen. Dazu ist das AdminPak, idealerweise nur die AD-Snap-Ins Active Directory-Benutzer und -Computer (dsa.msc), Active Directory-Domänen und -Vertrauensstellungen (domain.msc) sowie Active Directory-Standorte und -Dienste (dssite.msc), auf einem Windows 2000/XP-Client zu installieren. Im ersten Schritt gilt es von einem Windows 2000 oder Windows Server 2003 aus dem Verzeichnis „windir%\system32\“ bzw. von der Windows 2000/Windows Server 2003 CD aus dem Verzeichnis I386 die Datei Adminpak.msi lokal auf den Windows 2000/XP-Client zu kopieren und im zweiten, mit dem folgenden Befehl lediglich die AD-MMCs zu installieren: C:\Pfad zur Adminpak.msi> msiexec /i adminpak.msi ADDLOCAL=FeADTools /qb
How to use Adminpak.msi to install a specific server administration tool in Windows
Auf einem Vista SP1 Client müssen zuerst die Remote Server Administration Tools installiert werden. Dann ist in der Systemsteuerung unter „Programme und Funktionen“ auf der linken Seite die Aufgabe „Windows-Funktionen ein- oder ausschalten“ auszuwählen. Nun kann im darauf erscheinenden Fenster unter dem Punkt Remote Server Administration Tools - Role Administration Tools - Active Directory Domain Services Tools die Komponente Active Directory Domain Controller Tools eingeschaltet werden. Anschließend erscheinen unter Systemsteuerung\Verwaltung die drei AD-Snap Ins.

Wie können nun zu einem späteren Zeitpunkt die Benutzer in der GUI angezeigt werden, denen Berechtigungen auf Objekte erteilt wurden?
Wurden mit dem Objektdelegierungsassistenten Rechte an einen Benutzer oder an eine Gruppe delegiert, bietet der Assistent zu einem späteren Zeitpunkt keine Möglichkeit an die delegierten Berechtigungen anzuzeigen. Stattdessen muss in der MMC Active Directory-Benutzer und -Computer unter Ansicht die Option Erweiterte Features aktiviert werden, damit in den Objekteigenschaften der Reiter Sicherheit erscheint.
Anschließend werden im Reiter Sicherheit die berechtigten Personen auf das Objekt angezeigt. Im Reiter Sicherheit erscheint mit einem Klick auf Erweitert die DACL (erweiterten Sicherheitseinstellungen) des Objekts. Dort werden mit Auswahl des Benutzers bzw. der Gruppe und einem Klick auf Bearbeiten, die exakten Berechtigungen des Benutzers/der Gruppe angezeigt. Die bereits vergebenen Berechtigungen lassen sich auch mit DSACLS in der Kommandozeile anzeigen, was weiter unten erläutert wird.
Sollen hingegen die delegierten Berechtigungen von einem Sicherheitsprinzipal (Benutzer, Gruppen) entzogen werden, so genügt es das Sicherheitsprinzipal aus der ACL (oder aus der DACL) des Objekts zu entfernen.
Der Objektdelegierungsassistent
Bearbeiten der Discretionary Access Control List (DACL)
In den Eigenschaften eines Objekts wird der Reiter Sicherheit, von dem aus man in die erweiterten Sicherheitseinstellungen gelangt, standardmäßig mit Absicht nicht angezeigt. Der Administrator soll zum delegieren von Berechtigungen den Assistenten verwenden, damit das Durchsetzen der Vererbung durchgeführt wird. Der Administrator der im Active Directory weniger versiert ist sollte weitestgehend den Assistenten verwenden. Für viele Administratoren ist diese Vorgehensweise ausreichend, für andere wiederum nicht. Der erfahrene Administrator der weiß was er tut, kann anstatt den Assistenten zu verwenden direkt im security descriptor (in den erweiterten Sicherheitseinstellungen) eines Objekts die Delegierung vornehmen.
Denn der Delegierungsassistent macht nichts anderes, als den Administrator durch die erweiterten Sicherheitseinstellungen eines Objekts durchzuleiten.
Damit wie im o.g. ersten Beispiel der Benutzersupport in den Eigenschaften der Benutzerkonten die Option Konto läuft ab konfigurieren kann, gilt es die Eigenschaften von dem Standard-Container Users oder einer OU aufzurufen. Im Reiter Sicherheit, der nur erscheint wenn in der MMC Active Directory-Benutzer und -Computer unter „Ansicht“ die Option „Erweiterte Features“ aktiviert ist, wird anschließend mit Erweitert die DACL des Containers aufgerufen. Mit Hinzufügen gibt man dann die gewünschte Gruppe an. Im darauffolgenden Fenster Berechtigungseintrag für <Sicherheitsprinzipal> (was das Access Control Entry, kurz ACE darstellt) ist im Reiter Eigenschaften im Feld Übernehmen für die Einstellung Untergeordnete „Benutzer“-Objekte (unter Windows Server 2003 heißt es „Benutzer“-Objekte) auszuwählen. Zum Schluss gilt es in der Spalte Zulassen die Berechtigung „accountExpires“ schreiben auszuwählen.
Oder wenn der Benutzersupport gesperrte Benutzerkonten entsperren soll, ist bei gleicher Vorgehensweise die Berechtigung „lockoutTime“ schreiben und im Fall der Anmeldezeiten die Berechtigung „logonHours“ schreiben zuzulassen.

Wird die Delegierung der Berchtigungen auf einer OU ausgeführt die weitere untergeordnete OUs enthält, kann mit der Option Berechtigungen nur für Objekte und/oder Container in diesem Container übernehmen bestimmt werden, ob die vergebenen Berechtigungen vererbt werden sollen oder nur für diese eine OU gelten.
Wenn man sich das Fenster Berechtigungseintrag für… genauer ansieht, dürften einem die Einstellungen bereits durch den Delegierungsassistenten bekannt vorkommen.
Natürlich muss man vor der Delegierung wissen, welches Attribut delegiert werden soll. Hinter welchem Feld im Snap-In Active Directory-Benuzter und -Computer welches Attribut steckt, erfährt man auf dieser Seite:
User Object User Interface Mapping (Windows)
Ein anderer Weg wäre, einen Export des Objekts mit CSVDE oder LDFIDE durchzuführen, um herauszufinden welche Attribute delegiert werden sollen:
LDIFDE - LDAP Data Interchange Format Data Exchange
DSACLS
Die Active Directory-Objektberechtigungen lassen sich neben der grafischen Oberfläche, auch mit dem Kommandozeilentool DSACLS anzeigen sowie bearbeiten. Wer zum delegieren von Berechtigungen die Kommandozeile bevorzugt oder das anpassen von Berechtigungen mit einem Skript erledigen möchte, der kann dies mit DSACLS tun. Mit diesem Befehlszeilenprogramm ist es möglich an einer Vielzahl von Objekten gleichzeitig die Berechtigungen, dass bedeutet die Zugriffssteuerungseinträge (Access Control Entries, ACEs) in der Zugriffssteuerungsliste (Access Control List, ACL) anzuzeigen und zu verändern.
Mit DSACLS lassen sich auch die Berechtigungen von Objekten im „Active Directory Lightweight Directory Services“ (kurz AD LDS, ehemals ADAM) Umfeld bearbeiten.
Unter Windows 2000 sowie Windows Server 2003 befindet sich das DSACLS in den Windows Support Tools, die sich wiederum auf der Windows 2000 sowie Windows Server 2003 CD im Verzeichnis Support\Tools befinden und im Windows Server 2008 bereits integriert ist.
Der Befehl für DSACLS sieht folgendermaßen aus (alles in einer Zeile):
Dsacls "<Containerpfad>" /I:S /G "<Domäne>\<Gruppe>":<Berechtigungen>;<Attribute>;<Objekt>
Dabei gilt Folgendes:
-
Mit <Containerpfad> wird der Distinguished Name (DN) des Objekts (z. B. der Container Users oder eine Organisationseinheit) angegeben, worauf die Berechtigungen gelten sollen.
-
Mit dem Parameter </I:Option> wird die Konfiguration für die Vererbung vorgenommen. Bei den Optionen kann man zwischen drei Möglichkeiten wählen:
P = Bei dieser Option werden die Berechtigungen auf einer Ebene angewandt. S = Hierbei werden die Berechtigungen nur auf untergeordnete Objekte vererbt (Subobjects). T = Mit dieser Option werden die Berechtigungen für das angegebene Objekt und alle darunterliegenden Objekte vererbt.
-
Durch den Parameter </G> (was für Grant steht) wird die Berechtigung zum „Zulassen“ für <Domäne>\<Gruppe> gesetzt. Zum verweigern wäre der Parameter </D> (Denied) anzugeben.
-
Mit der Angabe <Domäne>\<Gruppe> wird die Gruppe angegeben, an die Berechtigungen delegiert werden sollen.
-
Durch die Angabe von <Berechtigungen> werden der angegebenen Gruppe die entsprechenden Berechtigungen erteilt. Die möglichen Berechtigungen die im Zusammenhang mit den Parametern </G> und </P> verwendet werden können, wären:
CA = Control Access CC = Create all child Objects DC = Delete all Child Objects DT = Delete Subtree GA = Generic All GE = Generic Execute GR = Generic Read GW = Generic Write LC = List Contents LO = List Object RC = Read permissions RP = Read all Properties SD = Delete WD = Modify Permissions WO = Modify Owner WP = Write all Properties WS = Write Self
-
Auf welches Attribut die vergebenen Berechtigungen wirken sollen, wird mit dem Eintrag <Attribute> bestimmt.
-
Der Eintrag <Objekt> gibt das Objekt an (Benutzer, Gruppe, etc.), mit dem das Attribut verknüpft ist.
Sollen die drei in der grafischen Oberfläche aufgeführten Beispiele mit Dsacls durchgeführt werden, so lauten die Befehle wie folgt.
Der Gruppe First Level Support wird in der Domäne intra.dikmenoglu.de mit diesem Befehl das Recht delegiert, unterhalb des Standard-Containers Users die Option Konto läuft ab in den Eigenschaften der Benutzerkonten zu konfigurieren: Dsacls „CN=Users,DC=intra,DC=dikmenoglu,DC=de“ /I:S /G “intra.dikmenoglu.de\First Level Support”:WP;accountExpires;User.
Die Sperrung der Benutzerkonten unterhalb des Containers Users kann der First Level Support mit diesem Befehl aufheben: Dsacls „CN=Users,DC=intra,DC=dikmenoglu,DC=de“ /I:S /G “intra.dikmenoglu.de\First Level Support”:WP;lockoutTime;User.
Mit diesem Befehl kann der First Level Support die Anmeldezeiten in den Eigenschaften der Benutzerkonten einstellen: Dsacls „CN=Users,DC=intra,DC=dikmenoglu,DC=de“ /I:S /G “intra.dikmenoglu.de\First Level Support”:WP;logonHours;User.
Weitere Dsacls-Beispiele
-
Die bereits delegierten Berechtigungen lassen sich komfortabler auf der Kommandozeile anzeigen als in der GUI. Dort lassen sich die aktuellen Berechtigunen eines Objekts mit folgendem Befehl anzeigen: Dsacls <DN des Objekts>.
Möchte man sich die Berechtigungen des Standard-Container Users anzeigen lassen (wobei der DNS-Name der Domäne intra.dikmenoglu.de lautet), so heißt der Befehl: Dsacls CN=Users,DC=intra,DC=dikmenoglu,DC=de.
-
Soll das Feld Beschreibung in den Eigenschaften eines Clients im Standard-Container Computers delegiert werden, so ist dieser Befehl auszuführen: Dsacls "CN=Computers,DC=intra,DC=dikmenoglu,DC=de" /G "<Domäne>\<Gruppe>":WP;description;computer /I:S.
-
Wenn das Recht zum zurücksetzen von Benutzer-Kennwörtern unterhalb einer OU vergeben werden soll, so lautet der Befehl folgendermaßen: Dsacls "OU=OU-Name,DC=intra,DC=Domäne,DC=TLD" /I:S /G <Domäne>\<Gruppe>:CA;Reset Password;User.
-
Die Benutzergruppe Techniker erhält unterhalb einer OU mit diesem Befehl die Berechtigung, die Gruppenmitgliedschaften zu pflegen: Dsacls "OU=OU-Name,DC=intra,DC=Domäne,DC=TLD" /I:S /G <Domäne>\Techniker:WP;member;group.
Danach kann die Gruppe Techniker in den einzelnen Gruppen die unterhalb der angegebenen OU existieren, Benutzer entfernen sowie hinzufügen.
-
Die delegierten Berechtigungen einer Person lassen sich auf folgende Weise entfernen: Dsacls <DN des Objekts> /R <Domäne>\<Benutzername>.
Am Beispiel des Containers Users würde der Befehl also so lauten: Dsacls CN=Users,DC=intra,DC=dikmenoglu,DC=de /R intra.dikmenoglu.de\Yusuf.
Hinweis: Alle Parameter von DSACLS sind case sensitive und werden groß geschrieben!
Des Weiteren eignet sich das DSACLS auch sehr gut, um die standardmäßige Sicherheitseinstellungen eines Objekts wiederherzustellen. Die standardmäßigen Sicherheitsinformationen erhält jedes Objekt durch das Active Directory-Schema. Jedes erstellte Objekt erhält durch das im entsprechenden classObject enthaltene Attribut Default-Security-Descriptor seine Sicherheitsinformationen.
Das bedeutet konkret, wenn z.B. ein Benutzer erstellt wird, werden die Sicherheitsinformationen vom Attribut defaultSecurityDescriptor das in der Klasse User enthalten ist, auf das Benutzerkonto angewendet. Die Klasse User befindet sich in der Schemapartition, im Pfad: CN=User,CN=Schema,CN=Configuration,DC=intra,DC=dikmenoglu,DC=de.
So erhält nun jedes Objekt bei seiner Erstellung durch den defaultSecurityDescriptor der jeweiligen Klasse seine Sicherheitsinformationen. Die Sicherheitsinformationen werden im Attribut defaultSecurityDescriptor im SDDL-String Format angegeben. Ausserdem bekommt das Objekt durch die darüberliegenden Einheiten (Domäne, OU) weitere Berechtigungen vererbt.
Wenn nun im laufe der Zeit viele Berechtigungen auf einem Objekt vergeben wurden und man selbst keinen Überblick mehr darüber hat, lassen sich die Sicherheitseinstellungen für das Objekt auf die im Schema definierten Standardeinstellungen zurücksetzen. Der Befehl dazu lautet: Dsacls <DN des Objekts> /S.
Weitere Informationen: Delegierte AD-Berechtigungen anzeigen und entfernen How to Use Dsacls.exe in Windows Server 2003 and Windows 2000 Using Scripts to Delegate Control of Active Directory: Working with Property Sets Windows-Verwaltung: Delegieren von Befugnissen in Active Directory Bewährte Methoden zum Delegieren der Active Directory-Verwaltung How to change the default permissions on GPOs in Windows 2000 and Windows Server 2003
Wer an den Einsatz eines Windows Server 2008 Read-Only Domänencontroller in einer Umgebung mit Windows XP und Windows Server 2003 nachdenkt, könnte in der Praxis auf die verschiedensten Probleme bezgl. des RODCs stoßen.
Die Probleme können deshalb auftreten, da diese Systeme nicht die volle Kompatibilität eines RODCs gewährleisten.
Microsoft hat reagiert und einen Compatibility Pack (CP) für die Betriebssysteme Windows XP sowie Windows Server 2003 veröffentlicht.
Das CP behebt zehn Symptome die in einer gemischten Umgebung mit Windows XP Clients sowie Windows Server 2003 auftreten können.
Welche das sind, steht in dem folgenden Microsoft-Artikel. Von dort aus kann auch das CP heruntergeladen werden.
Description of the Windows Server 2008 read-only domain controller compatibility pack for Windows Server 2003 clients and for Windows XP clients and for Windows Vista
Langsam aber sicher werden nun die letzten NT-Domänen in den Unternehmen zu einer Active Directory Umgebung migriert. Die Administratoren die bereits seit längerem eine Active Directory Umgebung betreuen, haben sich bereits einiges an Wissen die sie für eine Administration einer Active Directory-Domäne benötigen aufgebaut und andere wiederum, werden es noch tun. In den Unternehmen die bereits seit längerem eine Active Directory Umgebung besitzen, wird langsam aber sicher der Ruf nach gezielter Vergabe von Berechtigungen im Active Directory lauter und stärker. Gerade wenn Unternehmen fusionieren bzw. seit Jahren stetig gewachsen sind, ist es zwingend notwendig gezielte Berechtigungen den Benutzern zu vergeben.
Im täglichen Leben des Administrators fallen viele Aufgaben an, die er möglichst zeitnah und zielgerecht auszuführen hat. Dabei hat er bei der Ausführung seiner Aufgaben stets darauf zu achten, dass die Benutzer oder die IT-Support-Einheiten nur die Rechte in einem Netzwerk erhalten, die sie für ihre Arbeit benötigen. Denn wenn Personen zu viele Rechte besitzen, kann das durchaus bedeuten das im Endeffekt der Administrator dadurch einen unnötigen Mehraufwand hat. Daher lautet die Devise für den Administrator, nur soviel Rechte zu vergeben wie sie auch tatsächlich benötigt werden, auch wenn das im ersten Moment mehr Arbeit für den Administrator bedeutet, anstelle den Benutzer einfach in eine administrative Gruppe zu stecken und somit ggf. zuviele Rechte zu vergeben.
Eine weitere Grundregel wäre dabei, alle Benutzer die eine gleiche Anforderung haben (z.B. den Zugriff auf eine Ressource), zu einer Sicherheitsgruppe hinzuzufügen und dieser Gruppe den Zugriff auf die Ressource zu gewähren, anstatt jedem einzelnen Benutzer die Rechte auf die Ressource zu erteilen. Dabei hat sich das A-G-DL-P Prinzip etabliert. Oder anstelle den einzelnen Mitarbeitern aus dem First-Level Support Domänen-Administrator Rechte zu geben, sollten die benötigten Rechte im Active Directory über die Objektverwaltung oder mit dem Kommandozeilentool DSACLS entsprechend delegiert werden. Dabei ist es empfehlenswert, auch hier idealerweise einer Sicherheitsgruppe die Rechte im Active Directory zu delegieren und nicht einzelnen Personen.
Damit ein Administrator das richtige Delegierungskonzept für seine Active Directory Gesamtstruktur erarbeiten kann, muss er sich dessen bewußt sein, was technisch möglich ist und was nicht. Er sollte dabei auch die Hintergründe kennen.
Was passiert nun im Hintergrund, wenn einem Benutzer oder einer Sicherheitsgruppe Rechte im Active Directory durch die Objektverwaltung oder durch das Kommandozeilentool DSACLS delegiert werden? Und woher weiß das Active Directory, das der Benutzer der eine Aufgabe durchführen möchte, das auch darf?
Um diese Fragen zu beantworten, müssen in diesem Zusammenhang die Begriffe SID, Access Token, ACL, ACE, SD, DACL, SACL und SDDL erläutert werden.
Security Identifier (SID)
Jedes Sicherheitsprinzipal wie Benutzer, Gruppen, Computer usw. erhalten beim erstellen in einer Active Directory-Umgebung oder auch lokal, eine einmalige Objekt-GUID sowie Objekt-SID. Der Security Identifier (zu deutsch, Identifikationsnummer), der Teil des security descriptors ist, dient zur eindeutigen Kennzeichnug eines Objekts (z.B. eines Benutzers). Der leserfreundliche Name eines Sicherheitsprinzipal ist eher für den Menschen gedacht, da er sich Namen einfacher merken kann, als eine Zahlenkombination. Jede Berechtigung die einem Benutzerkonto für den Zugriff auf Objekte bzw. Ressourcen zugewiesen wird, werden vom Windows-Betriebsystem immer direkt der SID zugewiesen. Oder werden einem Benutzer Aufgaben im Active Directory delegiert, werden die Berechtigungen ebenfalls direkt der SID zugewiesen.
Wird der Benutzer in eine andere Domäne verschoben, so ändert sich seine SID. Denn in der SID ist auch die betreffende Domäne hinterlegt. Ein SID ist ein Zahlen-Array mit einer variablen Länge, das sich wie folgt zusammensetzt:
S-1-5-21-956547467-2769573453-2154042951-500
S = SID 1 = Die Revisionsnummer 5 = Identifier Authority 21 = Typisierung des nachfolgenden SID-Teils 956547467-2769573453-2154042951 = Domäne 500 = Benutzer (in diesem Beispiel, der Administrator)
Access Token
Wenn ein Sicherheitsprinzipal (security principal) wie es ein Benutzer darstellt, seinen Benutzernamen sowie das Kennwort im Logon-Fenster an einem Client eingibt, werden diese Anmeldeinformationen an einen Domänencontroller (DC), den der Client durch das DNS mitgeteilt bekommt, übermittelt. Der DC überprüft ob das richtige Kennwort passend zum Benutzernamen eingegeben wurde. Falls dies der Fall sein sollte, erstellt der DC während dem Anmeldeprozess ein Access Token und falls nicht, erhält der Benutzer eine Fehlermeldung das der Benutzername oder das Kennwort falsch sei. Das Token wird dabei vom Local Security Authority (LSA) Prozess des DCs erstellt. Das Access Token enthält Informationen über die Identität und Privilegien des Sicherheitsprinzipal. In dem Access Token sind die folgenden SIDs und Informationen enthalten:
-
Die SID des Benutzers (der Benutzername sAMAccountName oder UPN ist Schall und Rauch für die Systeme, viel wichtiger ist die SID die dahintersteckt).
-
Falls vorhanden, die SID-History des Benutzers (von Migrationen).
-
Die SIDs von jeder domänenlokalen Gruppe, worin der Benutzer direkt oder transitiv Mitglied ist.
-
Die SIDs jeder gloablen Gruppe, in denen der Benutzer direkt sowie verschachtelt Mitglied ist und die SID-History der globalen Gruppen.
-
Die SIDs der universellen Gruppen in denen der Benutzer direkt sowie verschachtelt Mitglied ist, samt der SID-History der universellen Gruppen. Dabei werden die Informationen zu den universellen Gruppenmitgliedschaften des Benutzers, vom globalen Katalog (GC) geliefert.
-
Die SIDs von jeder BuiltIn Gruppe, in der der Benutzer direkt oder transitiv Mitglied ist.
-
Die SIDs von jeder lokalen Gruppen, in der der Benutzer direkt oder transitiv Mitglied ist.
-
Eine Liste mit Privilegien.
-
Andere Zugriffsinformationen.
Das Access Token hat allerdings eine Beschränkung. In einem Token für einen Sicherheitsprinzipal können maximal 1.024 Einträge enthalten sein. Daher sollte unbedingt darauf geachtet werden, das gerade wenn Benutzerkonten über Jahre hinweg existieren und diese bereits mehrere Migrationen hinter sich haben, unbedingt die SID-History nach jeder Migration zu bereinigen [1]. Sonst kann das später zu Problemen führen.
Bekommt der Benutzer bei der Windows-Anmeldung folgenden Fehler:
The system cannot log you on due to the following error: During a logon attempt, the user`s security context accumulated too many security IDs
so liegt der Fehler darin, dass der Benutzer in zu vielen Gruppen enthalten ist oder die SID-History zu viele Einträge enthält.
Welche SIDs in dem Access Token enthalten sind, kann man sich mit dem Kommandozeilentool Whoami anzeigen lassen. Der Befehl dazu lautet Whoami /All.
Wichtig ist zu wissen, dass Access Token wird nur ein einziges Mal und zwar während der Benutzeranmeldung erstellt. Wird nun der Benutzer während seiner Benutzersitzung zu weiteren Gruppen hinzugefügt und es zeigt sich, dass der Benutzer weiterhin auf die neue Ressource keinen Zugriff erhält, so sollte sich der Benutzer erneut anmelden, damit die neuen Gruppeninformationen und somit die neuen Berechtigunen im Token enthalten sind.
Das Access Token in dem alle SIDs des Benutzers enthalten sind, ist quasi der Ausweis eines Benutzers im Netzwerk. Jedes Objekt bzw. jede Ressource enthält auf der anderen Seite eine Zugriffskontrollliste (Access Control List, ACL). Zu sehen ist die Zugriffskontrollliste in den Eigenschaften eines Objekts, im Reiter Sicherheit. In der Zugriffskontrollliste eines Objekts stehen die SIDs (in Form von Namen) der zugriffsberechtigten Personen drin. Darin sind die Benutzer oder Gruppen mit ihren entsprechenden Zugriffsrechten enthalten. Möchte nun ein Benutzer auf ein Objekt zugreifen, überprüft das Windows-Betriebssystem das Access Token des Benutzers, mit der Zugriffskontrollliste des Objekts. Findet sich eine SID die im Token enthalten ist auch in der Zugriffskontrollliste des Objekts wieder, erhält der Benutzer Zugriff auf das Objekt, mit seinen dort definierten Rechten.
[1] How To Use Visual Basic Script to Clear SidHistory Access Token Limitation
Access Control List (ACL)
Die Access Control List (zu deutsch, Zugriffskontrollliste), zu der die beiden Typen DACL und SACL gehören, besteht aus Access Control Entries Einträgen. Die beiden ACL-Typen DACL und SACL befinden sich im security descriptor des Objekts und sind Bestandteil der ACL. Die ACL ist eine Liste von festgelegten ACEs die spezifizieren, ob und mit welchen Rechten der Zugriff auf ein Objekt erlaubt, verweigert oder erfolgreich bzw. fehlgeschlagen überwacht wird. Die Zugriffskontrollliste die in den Eigenschaften eines jeden Objekts - im Reiter Sicherheit - zu finden ist, steuert den Zugriff auf ein Objekt. Damit der Reiter Sicherheit in den Eigenschaften eines Benutzerkontos erscheint, ist in der MMC „Active Directory-Benutzer und -Computer“ (ADBuC) unter „Ansicht“ die Option „Erweiterte Funktionen“ zu aktivieren.
Der Aufbau einer ACL sieht wie folgt aus:
ACL Size Hier wird die Größe des zugewiesenen Speichers für die ACL gespeichert. Die Größe des Speicherbedarfs hängt von der Anzahl und Größe der jeweiligen ACEs ab. Dabei kann eine ACL maximal 64kb groß werden. Das würde etwa 1820 ACEs entsprechen, wobei die Anzahl der ACEs wiederum abhängig von der Größe der ACEs ist. Aus Performancegründen sollte die ACL so klein wie möglich sein und nicht bis an ihre maximale Grenze wachsen.
ACL Revision In diesem Eintrag wird die Revisionsnummer für die Datenstruktur der ACL gespeichert.
ACE Count An dieser Stelle wird die Anzahl an ACEs in der ACL angegeben. Ist als Wert Null eingetragen, bedeutet dies, dass die ACL keine ACEs enthält - es ist leer. Wobei eine leere DACL sich von einer Null-DACL unterscheidet. Bei einer leeren DACL erhält keiner einen Zugriff auf das Objekt, aber eine Null-DACL gibt jedem uneingeschränkten Zugriff auf das Objekt. Daher sollte diese Einstellung vermieden werden.
ACE Dieser Eintrag enthält eine Liste mit den ACEs. Möchte ein Benutzer auf ein Objekt zugreifen, werden die ACEs in der Reihenfolge in der sie aufgelistet sind kontrolliert.
Access Control Entries (ACEs)
Die einzelnen ACEs im security descriptor eines Objekts, werden in den erweiterten Sicherheitseinstellungen eines Objekts angezeigt und legen den Zugriff entweder auf das gesamte Objekt oder auf ein einzelnes Attribut fest. Durch ACEs können Zugriffsrechte präzise, bis auf ein einzelnes Attribut vergeben werden. Somit kann z.B. einem Benutzer oder einer Gruppe lediglich das Recht zum lesen für das Feld Beschreibung (Attribut Description) eines Objekts erteilt werden, aber nicht das Schreibrecht. Ehe mit dem Bearbeiten oder Erstellen von ACEs begonnen wird, sollte sich vorher der Aufbau und die Funktionsweise des ACEs näher angeschaut werden.
Der Aufbau eines ACEs sieht wie folgt aus:
Access Mask In der AccessMask werden die Rechte definiert, wobei es für jeden Objekttyp unterschiedliche Rechte gibt. Hier können die gewünschten Berechtigungen ausgewählt werden, wie z.B. Vollzugriff, alle Eigenschaften lesen und schreiben, Besitzer ändern usw. oder die zu überwachenden Ereignisse konfiguriert werden. Durch die AccessMask werden zum einen die zu vergebenen Berechtigungen und zum anderen, die zu überwachenden Ereignisse festgelegt, abhängig von der durchzuführenden Aufgabe.
AceType An dieser Stelle können die entsprechenden Berechtigungen zugelassen bzw. verweigert werden (der Typ ist ACCESS_ALLOWED_ACE (0) oder ACCESS_DENIED_ACE (1)) oder die erfolgreiche bzw. fehlgeschlagene Überwachung aktiviert werden (der Typ lautet immer SYSTEM_AUDIT_ACE). Es wird also definiert, ob für ein Objekt oder für eine Eigenschaft die Berechtigung oder Überwachung festgelegt werden soll.
Trustee Im Trustee wird der Benutzer bzw. die Gruppe (das Ziel) festgelegt (genauer, die SID in Form des Namen), für den die Berechtigung oder die Überwachung gelten soll.
Aceflags Die Aceflags definieren die Vererbungsoptionen, je nachdem ob in der ACE Berechtigungen oder Überwachungen konfiguriert wurden. Diese Einstellung kann im Feld Übernehmen für: der ACE, dort betrifft es die ersten drei Einträge Nur dieses Objekt, Dieses und alle untergeordneten Objekte, Nur untergeordnete Objekte, vorgenommen werden.
Flags Alle ACEs enthalten die Eigenschaft Flags, durch das der ACE erkennt, welches Feld ObjectType oder InheritedObjectType zusätzlich noch gesetzt ist.
ObjectType Hier wird angegeben, auf welchen Objekttyp oder welches Attribut sich das ACE bezieht. Als Wert wird die GUID des Objekts oder des Attributs gespeichert.
InheritedObjectType Dieses Feld im ACE gibt die GUID des Objekts an, das den betreffenden ACE erben soll.
Diese Optionen sind in den Eigenschaften eines Objekts - im Reiter Sicherheit - dort auf Erweitert klicken - im Reiter Berechtigungen (DACL)/oder im Reiter Überwachung (SACL) auf Hinzufügen… klicken - danach den Benutzer oder die Gruppe auswählen bzw. eingeben - anschließend erscheint das Fenster „Berechtigungseintrag für… oder Überwachungseintrag für…“ was das ACE darstellt, zu finden.
Security Descriptor (SD)
Im Active Directory das auf Objekten basiert, wie es z.B. Benutzer, Grupppen, Computer, Container, Standorte usw. darstellen, besitzen alle Objekte sogenannte security descriptors (zu deutsch, Sicherheitsbeschreibungen). Die Werte der Sicherheitseinstellungen (wer darf mit welchen Rechten auf das Objekt zugreifen) werden in jedem Active Directory Objekt, in der Eigenschaft nTSecurityDescriptor gespeichert. Der Wert im nTSecurityDescriptor wird als SDDL-String gespeichert, den man sich z.B. mit LDP.exe oder dem „Active Directory Explorer“ anzeigen lassen kann. In dieser Eigenschaft werden alle Sicherheitsinformationen für das Objekt gespeichert. Das Windows Betriebssystem verwendet security descriptors um den Zugriff auf eine Ressource zu steuern. In den security descriptors wird folgendes festgelegt:
-
Es werden die Benutzer sowie Gruppen angezeigt, die Zugriff auf das Objekt haben.
-
Weiterhin werden die Berechtigungen angegeben, mit denen ein Benutzer oder eine Gruppe Zugriff auf das Objekt erhält.
-
Es werden die Ereignisse auf den Objekten definiert, die überwacht werden sollen.
-
Es wird der Besitzer des Objekts angegeben.
-
Weiterhin enthält der SD Informationen darüber, welche Rechte das Objekt von übergeordneten Containern vererbt bekommt.
Es existieren selbstverständlich nicht nur im Active Directory diese security descriptors. Ganz im Gegenteil, man findet sie an vielen Stellen auf einem System wieder, z.B. in Dateien und Verzeichnissen die auf einem NTFS-Dateisystem gespeichert sind, Freigaben, Drucker, Registry etc. Im Prinzip existieren security descriptors auf allen Objekten, auf denen eine Zugriffssteuerung konfiguriert werden kann. Dabei befinden sich die Sicherheitsbeschreibungen in den erweiterten Sicherheitseinstellungen eines Objekts (in den Eigenschaften eines Objekts - im Reiter Sicherheit - dort auf Erweitert).
Der security descriptor ist eine binäre Datenstruktur mit einer variablen Länge und besteht im wesentlichen aus den folgenden Teilen:
- Der Header beinhaltet eine Revisionsnummer und eine Reihe von Optionen die beschreiben, welche Eigenschaften vorhanden
sind und welche hinzugefügt oder geändert wurden.
- In der Discretionary Access Control List (DACL) werden die einzelnen Zugriffsrechte für ein bestimmtes Objekt, in Form von
Access Control Entries (ACEs) festgelegt. In der DACL sind die Benutzer und/oder Gruppen eingetragen, denen der Zugriff auf das Objekt erlaubt oder verweigert wird. Werden einem Benutzer oder einer Gruppe Aufgaben im Active Directory delegiert, so werden automatisch die SIDs der Personen in die DACL der Objekte geschrieben. Der Inhalt bzw- die Einträge in der DACL werden vom Besitzer kontrolliert.
- Die SACL ist vergleichbar mit der DACL, allerdings mit dem Unterschied, dass die SACL für die Protokollierung - anstatt für
den Zugriff auf ein Objekt zuständig ist. In der System Access Control List (SACL) sind die Überwachungseinstellungen enthalten. Auch hier befinden sich ACEs, die den definierten erfolgreichen oder fehlgeschlagenen Zugriff protokollieren. Findet ein Zugriff auf ein Objekt statt für den die Protokollierung aktiviert wurde (sei es erfolgreich oder fehlgeschlagen), verzeichnet das Betriebssystem im Sicherheitslog einen Eintrag.
- Der Security Identifier (SID) des Besitzers (Owner). Der Besitzer eines Objekts kann die Berechtigungen bearbeiten und anderen
Benutzern Rechte auf das Objekt erteilen.
- Ein weiterer Bestandteil ist der SID der primären Gruppe des Besitzers
(existiert aus Kompatibilitätsgründen zu Unix/Macintosh Systemen).

Security Descriptor Definition Language (SDDL)
Die Security Descriptor Definition Language stellt ein Textformat dar, das zur Beschreibung von security descriptors dient. In diesem String, der natürlich jederzeit veränderbar ist, werden die Sicherheitsinformationen in Form von Access Control Lists (ACLs) samt den einzelnen Access Control Entries (ACEs) eines Objekts, im nTSecurityDescriptor gespeichert. Microsoft verwendet die SDDL immer dann, wenn ein security descriptor im String-Format definiert werden soll.
Die nachfolgend genannte kryptische Zeichenkette stellt einen SDDL-String dar (alles in einer Zeile):
O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0x7;;;BA)(A;;0x7;;;SO) (A;;0x3;;;IU)(A;;0x3;;;SU)(A;;0x3;;;S-1-5-3)
Solch einen SDDL-String findet man z.B. dann wieder, wenn einem Benutzer das Recht vergeben werden soll, dass Eventlog eines DCs lesen zu können. Dazu existiert im folgenden Registry-Pfad des DCs: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Eventlog\* in dem jeweiligen Schlüssel (Application, Directory Service, DNS Server…) ein REG_SZ Eintrag mit dem Namen CustomSD [2]. Dort fndet sich als Wert solch ein SDDL-String wieder. Oder in den Security Templates im Verzeichnis %windir%\security\templates trifft man ebenfalls einen SDDL-String an. Eine andere Stelle an der man einen SDDL-String vorfindet, wäre in der Eigenschaft nTSecurityDescriptor eines jeden Active Directoy Objekts.
Auf ein Active Directoy Objekt wirken mehrere Berechtigungen. Wird ein Objekt im Active Directory erstellt, erhält es standardmäßig gewisse Sicherheitsinformationen, im SDDL-String, die im Schema im Attribut Default-Security-Descriptor festgelegt sind. Zusätzlich erbt das erstellte Objekt weitere Berechtigungen, durch die darüberliegenden Einheiten (Container, OU, Domäne). Anschließend kann der Administrator jederzeit noch die Berechtigungen des Objekts modifizieren.
Gerade für Administratoren die evtl. durch Skripte ihre tägliche Arbeit erleichtern möchten, ist es unerlässich zu verstehen, wie ein SDDL-String sich zusammensetzt. Denn schließlich lässt sich die Delegierung von Rechten im Active Directory, im SDDL-String, natürlich auch per Skript setzen. Des Weiteren ist es unerlässich einen SDDL-String zu verstehen, wenn mit dem Active Directory-Kommandozeilentool DSACLS Rechte im Active Directory händisch oder per Skript delegiert bzw. gelesen werden sollen. Auch um Security Templates zu lesen und zu bearbeiten ist es zwingend, die Syntax verstanden zu haben.
Kommen wir nun zur Erläuterung eines SDDL-Strings. In einem SDDL-String werden die Zeichen fortlaufend durchgeschrieben und nicht durch Leerzeichen getrennt. Die Länge eines SDDL-Strings ist nicht hartcodiert und kann variieren. Die Schreibweise eines nTSecurityDescriptor SDDL-Strings würde so aussehen:
O:Owner-SIDG:Group-SIDD:DACL-Flags(ACE1- String)( ACE2- String)(…usw.)S:SACL-Flags(ACE1- String)( ACE2- String)(…usw.)
Jeder nTSecurityDescriptor SDDL-String besteht aus fünf Teilen. Diese wären:
- Header: Der Header enthält Eigenschaften (Flags) die beschreiben,
ob das Objekt die Vererbung von DACL und SACL erlaubt oder blockiert.
-
Owner: Der Besitzer eines Objekts trägt in einem SDDL-String das Präfix „O:“. Dieser Wert gibt an, welcher Trustee der Besitzer des Objekts ist. Hier die Erläuterung der geläufigsten SID-Strings (Abkürzungen) die der Wert Owner (sowie G:Group-SID) enthalten kann: AN = Anonymous AO = Account Operators AU = Authenticated Users BA = Builtin Administrators BO = Backup Operators CG = Creator Group CO = Creator Owner DA = Domain Administrators DU = Domain Users EA = Enterprise Admins LA = Local Administrator Account SA = Schema Administrators SO = Server Operatoren SY = Local System WD = Everyone (World)
Die komplette Liste der SID-Strings befindet sich auf dieser Seite: SID Strings (Windows)
Im o.g. SDDL-String ist in der kryptischen Zeichenkette als Owner der Eintrag „O:BA“ enthalten und dieser steht für „Builtin Administrators“. Statt des SID-Strings kann auch eine SID verwendet werden, z.B. so: O:S-1-5-21-956547467-2769573453-2154042951-500G:SYD:(…).
-
Primary Group: Die primäre Gruppe erhält in einem SDDL-String das Präfix „G:“. Dieser Wert enthält den SID-String der primären Gruppe eines Objekts. Der Wert des Owner und der Primary Group entspricht einer einzigen SID. Der Eintrag „G:SY” bedeutet, dass die primäre Gruppe Local System lautet.
-
DACL: Die DACL wird in einem SDDL-String mit einem „D:“ eingeleitet.
-
DACL-Flags: Dieser Wert ist ein security descriptor control Flag, das auf das DACL angewendet wird. Dieser Eintrag kann mehrere Werte enthalten (z.B. D:PAI), muss aber keine enthalten. Folgende Wert lassen sich dabei eintragen:
P = SDDL_PROTECTED. Das SE_DACL_PROTECTED Flag ist gesetzt. AR = SDDL_AUTO_INHERIT_REQ. Das SE_DACL_AUTO_INHERIT_REQ Flag ist gesetzt. AI = SDDL_AUTO_INHERITED. Das SE_DACL_AUTO_INHERITED Flag ist gesetzt.
-
SACL: Die SACL wird im SDDL-String als „S:“ gekennzeichnet.
-
SACL-Flags : Dieser Wert ist ein security descriptor control Flag das auf das SACL angewendet wird und ebenfalls (wie DACL-Flags) keine feste Länge hat. Bei dem SACL-Flags String werden die gleichen Werte wie bei dem DACL-Flags String verwendet.
-
ACE-String: Der ACE-String der in Klammern gesetzt ist, beschreibt einen ACE im security descriptor für den DACL und SACL. Der ACE-String lautet beim DACL sowie SACL gleich und setzt sich aus den folgenden sechs Feldern (jeweils getrennt durch ein Semikolon) zusammen, die nicht alle gesetzt sein müssen:
(ACE-Type;ACE-Flags;Rights;ObjectGUID;Inherit-ObjectGUID;Account-SID)
- Als ACE-Type könnten unter anderem A für Allow oder D für Deny eingetragen sein, was den Optionen „Zulassen“ oder „Verweigern“ im security descriptor des Objekts entspricht. Bei einem Eintrag der SACL könnte als Wert AU für Audit (Überwachung) eingetragen sein.
- Falls das Objekt ein Container sein sollte kann mit dem ACE-Flags String angegeben werden, das sich das ACE nur auf den Container oder seinen Inhalt bezieht.
- Der Rights String gibt die Berechtigungen für den ACE an.
- Der String ObjectGUID hat als Wert die GUID einer Objektklasse, eines Attributs oder Attribut Sets.
- Im Inherit-ObjectGUID kann sich die GUID einer Objektklasse befinden. Falls es gesetzt ist, bezieht sich die Vererbung auf den ACE der untergeordneten Einträge der Objektklasse.
- Im sechsten Teil Account-SID wird der Name des Benutzer- oder Gruppenkontos angegeben (Trustee), auf dem sich die Berechtigungen auswirken. Als Wert kann entweder ein SID-String (z.B. DA) oder die SID in Form von S-1-5-21 angegeben werden.
Ein ACE-String könnte dabei in der Praxis so aussehen: (A;;WP;;;DU) und hat dabei folgende Bedeutung:
- ACE-Type lautet in dem String A, was für „Zulassen“ steht.
- Ein Wert im ACE-Flags ist nicht gesetzt.
- Als Berechtigung wurde der Wert WP (Write_Property) vergeben, was „Schreibberechtigung“ im Active Directory-Objekt bedeutet.
- Es ist keine ObjektGUID eingetragen.
- Ebenfalls ist der Wert Inherit-ObjektGUID nicht eingetragen.
- Die Berechtigung wurde an DU (Domain_Users) vergeben, das für „Domänen-Benutzer“ steht.
Mit dem Kommandozeilentool SC kann man sich unter anderem die Sicherheitsinformationen von Diensten anzeigen lassen. Der security descriptor des Dienstes NTDS auf einem Windows Server 2008 DC sieht so aus:
C:\SC SDSHOW NTDS
D:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;SY) (A;;CCLCSWLORC;;;BO)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
Man kann erkennen, dass neben dem DACL auch die SACL durch das S: gesetzt ist. Die Zugriffsrechte eines Active Directory Objekts werden dabei, durch die folgenden ACE-Strings geregelt:
CC = Create all child Objects CR = All extended Rights DC = Delete all Child Objects DT = Delete Subtree LC = List Contents LO = List Object RC = Read permissions RP = Read all Properties SD = Delete SW = All Validated Writes WD = Modify Permissions WO = Modify Owner WP = Write all Properties
Alle Werte die in einem ACE-String enthalten sein können, werden auf der folgenden Seite erläutert: ACE Strings (Windows)
[2] How to set event log security locally or by using Group Policy in Windows Server 2003
Objektverwaltung zuweisen
Die technische Umsetzung einer Active Directory-Delegierung über die GUI, wird im Snap-In Active Directory-Benutzer und -Computer durchgeführt. Mit einem Rechtsklick auf den Standardcontainer Users oder einer OU, ruft man mit der Auswahl von Objektverwaltung zuweisen… den Assistent zum Zuweisen der Objektverwaltung auf (der bereits seit Windows 2000 existiert). Nach Auswahl des Benutzers oder der Gruppe kann im darauffolgenden Schritt die Wahl zwischen einem allgemeinen und benutzerdefinierten Task getroffen werden. Bei dem benutzerdefinierten Task gilt es auf den darauffolgenden beiden Schritten, zum einen den Objekttyp für die Delegierung auszuwählen und zum anderen, die gewünschten Berechtigungen die auf Attributebene aktiviert werden können auszuwählen.
Der gewiefte Administrator kann den Delegierungsassistenten im ADBuC überspringen und direkt in den erweiterten Sicherheitseinstellungen des Containers (auch eine OU ist ein Container) die entsprechenden Berechtigungen vergeben. Denn der Assistent für die Objektverwaltung macht auch nichts weiter, als die Personen mit den vergebenen Berechtigungen im security descriptor des Containers einzutragen.
Um auf die Anfangsfrage zurückzukommen was im Hintergrund passiert, wenn einem Benutzer oder einer Sicherheitsgruppe Rechte im Active Directory delegiert werden, ist nichts weiter, als das die Benutzer mit den vergebenen Rechten im security descriptor des Objekts eingetragen werden.
Die bereits delegierten Rechte auf einem Objekt zeigt einem der Objektverwaltungs-Assistent leider nicht an. Stattdessen ist in der MMC „ADBuC“ unter Ansicht die Option „Erweiterte Funktionen“ zu aktivieren, damit in den Eigenschaften eines Objekts der Reiter Sicherheit erscheint. Danach kann in den erweiterten Sicherheitseinstellungen (im security descriptor) die Person ausgewählt und mit einem Klick auf Bearbeiten… die gesetzten Berechtigungen eingesehen werden. Sollen die vergebenen Berechtigungen dem Benutzer entzogen werden, so gilt es lediglich den Benutzer aus der ACL des Objekts zu entfernen. Einen Assistenten für das Entfernen von Berechtigungen gibt es nicht.
Über die Kommandozeile lassen sich die Berechtigungen mit dem Tool DSACLS, das sich in den Windows Support Tools befindet (z.B. auf der Windows Server 2003 CD im Verzeichnis Support\Tools), ebenfalls ansehen sowie vergeben. Mit dem folgenden Befehl werden die Berechtigungen für den Standardcontainer USERS (im ADBuC) aufgelistet: Dsacls CN=Users,DC=intra,DC=dikmenoglu,DC=de.
Alles was mit dem Assistenten delegiert werden kann, lässt sich auch in einem Skript mit DSACLS realisieren. Die Syntax zu dem Tool wird in der Hilfe erläutert, die sich mit dem Befehl Dsacls -? aufrufen lässt.
Die vergebenen Berechtigungen können in Form von ACEs auch mit dem Kommandozeilentool DSREVOKE angezeigt und entfernt werden.
Objektdelegierungen einrichten Der Objektdelegierungsassistent Delegierte AD-Berechtigungen anzeigen und entfernen
Zusammenfassung
Das Delegierungskonzept sollte sorgfältig geplant, in einer Testumgebung getestet und ganz wichtig, dokumentiert werden. In der Planungsphase sollten diese Fragen geklärt werden:
- Welche Berechtigungen sollen die entsprechenden Personen erhalten?
Dabei werden idealerweise Berechtigungen Gruppen und nicht einzelnen Personen zugewiesen.
- Ist die gewünschte Berechtigung die delegiert werden soll technisch realisierbar?
- Wenn es technisch realisierbar ist, können mit den Standard-MMCs wie z.B. „Active Directory-Benuzter und -Computer“
die Aufgaben durchgeführt werden?
Wenn ein entsprechendes Konzept erarbeitet, getestet und implementiert wurde, gestaltet sich die tägliche Administration in der Praxis mit dem geringsten Aufwand, wobei die Benutzer nur mit den notwendigsten Rechten ausgestattet werden.
Das Delegierungskonzept sollte dabei nicht übertrieben werden, ganz nach dem Motto „soviel wie nötig - so wenig wie möglich“. Denn wenn unüberlegt Berechtigungen delegiert werden, kann das unter Ümständen zu Performance-Einbußen im Active Directory führen.
Large Numbers of ACEs in ACLs Impair Directory Service Performance
Des Weiteren sollte bei dem Delegierungskonzept unbedingt darauf geachtet werden, dass einem der AdminSDHolder nicht in die Quere kommt.
Delegated permissions are not available and inheritance is automatically disabled
Weitere Informationen: Security Descriptors and Access Control Lists Technical Reference Security Descriptor Definition Language (Windows) Best Practices for Delegating Active Directory Administration Best Practices for Delegating Active Directory Administration Appendices Best practices and guidance for writers of service discretionary access control lists Well-known security identifiers in Windows operating systems
An welchen Stellen stößt das Active Directory und seine Werkzeuge an die Grenzen?
Das "Active Directory-Benutzer und -Computer" Snap-In
-
Falls in der MMC Active Directory-Benutzer und -Computer in einem Container bzw. OU mehr als 2000 Objekte enthalten sind, wird die folgende Meldung angezeigt:
Screenshot vom Windows Server 2008
Anschließend kann dem Hinweis gefolgt und somit die maximale Anzahl der angezeigten Elemente erhöht werden. Dieses Verhalten trifft auf Windows 2000, Windows Server 2003 und Windows Server 2008 zu.
Die maximal unterstützte Seitengröße für LDAP-Antworten
-
Um sich z.B. vor Denial of Service (DoS) Attacken zu schützen, liefert das Active Directory bei einer LDAP-Abfrage als Ergebnis 1.000 Datensätze. Übersteigt das Ergebnis die Grenze von 1.000 Datensätzen, wird nach den 1.000 Einträgen der folgende Fehler angezeigt: Size Limit Exceeded Error.
Es bestehen zwei Möglichkeiten dieses Problem zu umgehen. Zum einen ist es das ändern der maximum Page Size auf dem LDAP-Client und zum anderen, dass Erhöhen des Wertes MaxPageSize in den LDAP-Richtlinien auf den DCs.
How to view and set LDAP policy in Active Directory by using Ntdsutil.exe
Der Name einer Organisationseinheit (OU)
-
Der Name einer OU kann maximal 64 Zeichen enthalten. Damit soll sichergestellt werden, dass beim aufrufen der Gruppenrichtlinien die sich im SYSVOL-Verzeichnis befinden durch einen UNC-Pfad, nicht die Grenze von insgesamt 260 Zeichen überschritten wird. Denn wenn der UNC-Pfad zu den GPOs 260 Zeichen überschreiten sollte, können somit die GPOs weder gelesen, noch an die DCs, Server und Clients angewendet werden.
Siehe auch: Windows 2000 Supports Fully Qualified Domain Names up to 64 UTF-8 Bytes Long
Die Länge des Dateinamens
Der NetBIOS-Computername
-
Der NetBIOS-Name eines Computerkontos ist auf 15 Zeichen beschränkt. Eigentlich enthält dieser 16 Zeichen, wobei aber das 16. Zeichen für das System reserviert ist. Der Computername darf auch nicht ausschließlich aus Zahlen bestehen.
Windows 2000 Does Not Permit All-Numeric Computer Names
Der NetBIOS-Name einer Domäne
Die Länge des Fully Qualified Domain Name einer AD-Domäne
- Der FQDN einer Active Directory-Domäne darf insgesamt 64 Zeichen (samt Punkten) enthalten.
Weitere Beschränkungen bezgl. der Namenskonventionen
Die maximale Anzahl an Objekten die ein Domänencontroller erstellen kann
Die maximale Anzahl an SIDs die innerhalb einer Domäne erstellt werden kann
- Innerhalb einer Domäne können ca. eine Milliarde Security Identifier (SIDs) erstellt werden.
Die maximale Anzahl an GPOs die auf ein Objekt wirken können
- Es können maximal 999 Gruppenrichtlinienobjekte auf ein Benutzer- oder Computerkonto angewendet werden.
Dabei können auf einem System natürlich mehr als 999 GPOs existieren. Diese Grenze wurde aus Performancegründen festgelegt.
Die maximale Anzahl an Benutzern pro Gruppe
- Unter Windows 2000 kann eine Benutzergruppe maximal 5.000 Mitglieder enthalten.
Unter Windows Server 2003 existiert diese Grenze nicht.
Siehe auch: Die Linked Value Replikation (LVR)
Die maximale Anzahl an Änderungen innerhalb eines schreibvorgangs im AD
-
Werden automatisiert z.B. per Skript oder Management-Tools eine größere Menge an Änderungen im Active Directory durchgeführt (z.B. das erstellen, löschen oder bearbeiten von Benutzern), können innerhalb einer Transaktion nicht mehr als 5.000 Änderungen durchgeführt werden.
Die maximale Gruppenzugehörigkeiten eines Sicherheitsprinzipals
- In das Access-Token eines Sicherheitsprinzipals wie es z.B. Benutzer, Gruppen oder Computer darstellen,
können maximal 1.024 Einträge existieren. Bei der Anmeldung eines Benutzers wird vom Local Security Authority (LSA) ein Access-Token generiert. In diesem Access-Token befindet sich der Security Identifier (SID) des Benutzers, die SIDs der direkten Gruppen in denen das Benutzerkonto Mitglied ist, die SIDs von Gruppenverschachtelungen und in einer Windows Server 2003 Umgebung noch die SID History. Befindet sich der Benutzer in mehr als 1.024 Gruppen, so schlägt die Authentifizierung des Benutzers fehl.
Tatsächlich sollte sich das Benutzerkonto nicht in mehr als 1.015 Gruppen befinden, denn vom LSA werden standardmäßig bis zu 9 Well-Known SIDs dem Access-Token hinzugefügt.
Users Who Are Members of More Than 1,015 Groups May Fail Logon Authentication
In der Praxis hat sich allerdings gezeigt, dass bereits Probleme auftauchen, in denen der Benutzer sich in weitaus weniger Guppen befindet. Unter Windows 2000 - dort je nach SP-Stand - kann es schon bei Gruppenmitgliedschaften zwischen 70-80 bzw. 120 Gruppenmitgliedschaften zu Problemen kommen.
Group Policy may not be applied to users belonging to many groups New resolution for problems with Kerberos authentication when users belong to many groups
Unter Windows Server 2003 kann es ebenfalls zu Problemen kommen, wenn sich der Benutzer in weitaus mehr als 70 Gruppen befindet:
Authentication Fails Due to User PAC Troubleshooting Kerberos Errors When you try to log on to a Windows Server 2003-based domain by using a domain user account, the logon request fails What's in a Token
Die empfohlene maximale Anzahl an Domänen innerhalb einer Gesamtstruktur
-
In einer Windows 2000 Gesamtstruktur wird empfohlen, nicht mehr als 800 Domänen zu betreiben. Die empfohlene Anzahl an Domänen innerhalb einer Windows Server 2003 Gesamtstruktur, die sich in der Gesamtstrukturfunktionsebene „Windows Server 2003“ befindet, ist auf 1.200 Domänen beschränkt. Diese Grenze gilt sicherlich auch für eine Windows Server 2008 Gesamtstruktur.
Die empfohlene Anzahl an Domänencontrollern pro Domäne
-
Die unterstützte Anzahl an Domänencontrollern innerhalb einer Windows Server 2003-Domäne beträgt 1.200. Diese Grenze wurde festgelegt, damit im Windows Server 2003 das SYSVOL-Verzeichnis, das durch das File Replication Service (kurz, FRS) repliziert wird, noch ordnungsgemäß rückgesichert werden kann. Dabei kann es bereits bei über 400 DCs pro Domäne zu problemen kommen, wenn das DNS auf den DCs betrieben wird und der AD-integirerte DNS-Name mit dem AD-Namen der Domäne gleich lautet.
Problems with Many Domain Controllers with Active Directory Integrated DNS Zones
Weitere Informationen: Active Directory Maximum Limits - Scalability
|
Copyright © 2012 Yusuf Dikmenoglu. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme:
|
|