dsacls.exe ist das Kommandozeilenwerkzeug, mit dem man Berechtigungen auf Objekte in Active Directory manipulieren kann. Heute hatte ich Gelegenheit, es in einer Extremsituation zu nutzen.
In einem Testszenario sollten für 16.308 Benutzerkonten die AD-Zugriffsberechtigungen geändert werden. Für jedes einzelne Objekt gab es sieben Änderungen: Zwei vorhandene Berechtigungen wurden entfernt und fünf neue hinzugefügt. Das Ganze wurde über eine große Batchdatei gesteuert, die für jedes der Objekte die sieben dsacls-Kommandos ausführte. Das passierte auf einem Domänencontroller unter Windows Server 2008 R2, der in einer nicht optimierten VM lief (nur 512 MB RAM und eine einzige virtuelle Festplatte).
Der Vorgang dauerte etwas weniger als zwei Stunden. Erst war ich überrascht über die lange Bearbeitungszeit, aber dann habe ich mal nachgerechnet:
- 16.308 Objekte mit jeweils sieben ACL-Änderungen ergibt 114.156 einzelne ACL-Änderungen.
- Die Ausführung dauerte etwas weniger als zwei Stunden, was etwa 1000 ACL-Änderungen pro Minute ergibt.
- Das wiederum bedeutet, dass etwas mehr als 15 Änderungen pro Sekunde erfolgten.
- Hierbei muss man – neben dem geringen Arbeitsspeicher des Servers – berücksichtigen, dass jede Änderung im Ereignisprotokoll mitgeschrieben wurde und dass dsacls bei jeder Ausführung die Berechtigungen des Objekts als Text ausgibt, hier umgeleitet in eine Datei.
- Die Datenbank-Dateigröße des AD änderte sich durch diesen Vorgang übrigens nicht, was wahrscheinlich auf die pro Objekt geringe Anzahl geänderter ACLs zurückzuführen ist.
http://faq-o-matic.net/?p=2175