Bis Active Directory 2003 war es nur möglich, eine einzige Passwortrichtlinie für alle Benutzer einer Domain einzurichten. Dies erfolgte über die Default Domain Policy.
Seit Active Directory 2008 ist es möglich, Passwortrichtlinien granular für verschiedene Benutzer zu erstellen. Allerdings ist das Ganze nicht so trivial, wie man vielleicht vermuten würde. Es ist nicht möglich eine solche Richtlinie an eine OU zu verlinken. Um individuelle Passwortrichtlinien nutzen zu können, werden diese entweder direkt auf das Benutzerobjekt oder aber auf ein entsprechendes Gruppenobjekt verlinkt. Diese Gruppe muss eine globale Sicherheitsgruppe sein. Sie können dazu am besten eine „Schattengruppe“ verwenden, die nur diesen Zweck hat.
Im Active Directory (>2008) gibt es einen „Password Settings Container“, in dem die „Password Settings Objects“ (PSO) abgelegt werden. Den Container finden Sie unter dem System Container. Sie können sich diesen mit dem „Active Directory Users and Computers“ anzeigen lassen, wenn Sie unter View die „Advanced Features“ auswählen.
Funktionsweise
- Ein PSO besitzt ein Attribut, welches msDS-PSOAppliesTo heißt und das einen Forwardlink für Benutzer- und Gruppenobjekte enthält. In diesem Attribut können mehrere Werte (Multi-valued Attribute) enthalten sein, was bedeutet, dass das PSO auf mehrere Benutzer, bzw. Gruppen verlinkt sein kann.
- Benutzer- und Gruppenobjekte haben ein Attribut, welches msDS-PSOApplied heißt und das den entsprechenden Backwardlink auf das PSO enthält. Durch den Backwardlink ist es natürlich möglich, auf das Objekt (Benutzer oder Gruppe) mehrere PSOs verlinken zu können. In einem solchen Fall wird das tatsächlich angewendete PSO über RSoP (Resultant Set of Policy) errechnet.
RSOP
Wurden einem Benutzerobjekt (über Gruppen oder direkt) mehrere PSOs zugewiesen, erfolgt die Berechnung, welches tatsächlich verwendet wird, über folgenden Mechanismus:
Jedes PSO hat ein Attribut mit dem Namen msDS-PasswordSettingsPrecedence, welches den ganzzahligen Wert „1“ oder größer enthält. Je kleiner die Zahl, desto größer die Priorität. Sollten mehrere PSOs hier den gleichen Wert enthalten, wird das PSO mit der kleinsten GUID angewendet.
Ermittlung des zuständigen PSOs
- Ein direkt mit dem Benutzerobjekt verknüpftes PSO hat automatisch die höchste Priorität. Es „sollten“ nicht mehrere PSOs mit einem Benutzer direkt verknüpft werden. Was genau das zur Folge hat, konnte ich leider nicht eruieren. MS selbst trifft dazu auch keine definitive Aussage 😉
- Wenn kein PSO mit dem Benutzer verknüpft ist, werden alle Mitgliedschaften des Benutzerobjektes und die jeweilig mit den Gruppen verlinkten PSOs gelesen und das mit der höchsten Priorität angewendet.
- Wenn weder das Benutzer-, noch ein zugehöriges Gruppenobjekt ein PSO verknüpft hat, gilt die Default Domain Policy zum Ermitteln der Passwortrichtlinie.
PSO erstellen
Zum Erstellen eines PSOs, gibt es verschiedene Möglichkeiten. Um den Rahmen nicht zu sprengen, gehe ich hier nur auf die Möglichkeiten per Powershell und ADSIEdit ein.
Powershell
Um die benötigten CMDLets nutzen zu können, muss über Import-Module ActiveDirectory das AD Modul in die Powershell geladen werden.
Über das CMDLet New-ADFineGrainedPasswordPolicy können Sie ein neues PSO erstellen. Über Set-ADFineGrainedPasswordPolicy und über Remove-ADFineGrainedPasswordPolicy kann das PSO verändert, bzw. gelöscht werden.
New-ADFineGrainedPasswordPolicy pw_pol1 -Precedence 10 -ComplexityEnabled $TRUE -LockoutDuration 0.0:30:00 -LockoutThreshold 5 -MaxPasswordAge 90.00:00:00 -MinPasswordLength 7 -PasswordHistoryCount 5
Damit ist das PSO erstellt. Nun verlinken Sie es noch an einen User oder eine Gruppe.
Get-ADUser marcol_a |Add-ADFineGrainedPasswordPolicySubject pw_pol1
Prüfen Sie nun das PSO.
ADSIEdit
Wählen Sie unter dem Container CN=Password Settings Container –> New –> Object.
Sie erhalten damit automatisch die Class msDS-PasswordSettings zur Auswahl. Vergeben Sie einen Namen und klicken Sie sich durch die Einstellungen.
Nachdem Sie den Wizard abgeschlossen haben, existieren im Container nun zwei Objekte. Wählen Sie die Properties des neu erstellten aus und weisen Sie noch einen Benutzer zu.
Priorität RSOP
Dem Benutzerobjekt Marcol_a sind nun zwei PSOs zugeordnet. Durch die unterschiedlichen Prioritäten sollte nun das PSO pw_pol1 angewendet werden. Prüfen können Sie dies in den Eigenschaften des Benutzerobjektes. Es sind im Attribut ms-DSPSOApplied zwar beide PSO verlinkt, Sie sehen allerdings im Attribut ms-DSResultantPSO, dass nur pw_pol1 tatsächlich angewendet wird.