Active Directory und LDAP
Ein Connector bindet LDAP-Verzeichnisse an. Unter „Variante“ legen Administratoren fest, wie das Verzeichnis aufgebaut ist:
| Merkmal | Generic LDAP (ApacheDS) | OpenLDAP | Active Directory |
|---|---|---|---|
| Gruppen | groupOfNames, member | posixGroup, memberUid | group, member |
| Kontokennung | uid | uid | sAMAccountName |
| Eindeutige ID | entryUUID | entryUUID | objectGUID |
| Sperre | pwdAccountLockedTime | pwdAccountLockedTime | userAccountControl |
| Letzter Login | nicht voreingestellt | authTimestamp | lastLogonTimestamp, lastLogon |
Verbindung
Die Felder: „Host“, „Port“, „Base DN“ sowie „Bind DN“ und „Bind-Passwort“ des Dienstkontos. Unter „Erweitert“ stehen „User Search Base“ und „Group Search Base“ – ohne Angabe gilt der Base DN – und „SSL (LDAPS) verwenden“. Für Active Directory kommen weitere Felder hinzu, darunter „AD-Domain“ und „Initialer Kontostatus“. „Status prüfen“ meldet sich mit dem Dienstkonto am Verzeichnis an.
Konten
Nova legt neue Konten direkt unterhalb der „User Search Base“ an: bei Generic LDAP und OpenLDAP als uid=<Kennung>, bei Active Directory als cn=<Name>. In Active Directory setzt Nova sAMAccountName auf die Kennung und userPrincipalName nach der „UPN-Regel“, ohne Regel auf Kennung@AD-Domain. Die „Mail-Regel“ belegt bei allen Varianten das Attribut mail. Steht „Initialer Kontostatus“ auf „Deaktiviert“, entsteht ein AD-Konto gesperrt und bleibt es, bis es ausdrücklich aktiviert wird. Weitere Attribute schreibt Nova nach dem „Mapping“.
Nova findet Konten über uid oder mail, in Active Directory über sAMAccountName, userPrincipalName oder mail.
Gruppen
Gruppen übernimmt Nova mit einem Job vom Typ „LDAP-Gruppen importieren“ als Berechtigungen. Nova erkennt eine Gruppe an ihrer eindeutigen ID, sofern das Verzeichnis sie liefert. Wird sie innerhalb der „Group Search Base“ umbenannt oder verschoben, findet Nova sie darüber wieder und aktualisiert den gespeicherten DN. Ist die ID bekannt, akzeptiert Nova nur genau dieses Objekt: Eine neu angelegte Gruppe mit altem Namen oder DN gilt nicht als dieselbe Gruppe.
Mitgliedschaften ändert Nova einzeln; die übrigen Mitglieder einer Gruppe bleiben unberührt. Generic LDAP pflegt memberOf nicht selbst. Nova schreibt es dort zusätzlich, sofern das Verzeichnisschema das Attribut kennt.
Verschachtelte Gruppen
Nova liest die Gruppenstruktur. Der Dialog „Gruppe hinzufügen“ am Konto zeigt zu jeder Gruppe ihre Unter- und übergeordneten Gruppen. Aus einer Verschachtelung leitet Nova keine Zuweisungen ab. Bei Generic LDAP und Active Directory können Administratoren in diesem Dialog Gruppen verschachteln („Untergruppe hinzufügen“) und Verschachtelungen wieder lösen. OpenLDAP-Gruppen (posixGroup) lassen keine Verschachtelung zu.
Zyklusschutz: Bevor Nova eine Gruppe als Untergruppe einträgt, prüft Nova, ob sie die übergeordnete Gruppe direkt oder über weitere Ebenen bereits enthält. Ist das so, nimmt Nova die Änderung nicht vor. Dasselbe gilt, wenn sich die Prüfung nicht vollständig durchführen lässt – etwa weil ein Objekt nicht lesbar ist oder die Grenze von 64 Ebenen, 512 Lesezugriffen oder 5 Sekunden erreicht ist. Enthält das Verzeichnis bereits einen Zyklus, zeigt Nova einen Hinweis und durchläuft den Zyklus nicht wiederholt. Die Anzeige liest höchstens 5.000 Gruppen und 64 Ebenen; ist sie unvollständig, weist Nova darauf hin.
Passwörter
- Active Directory: Nova schreibt
unicodePwd. Das Verzeichnis nimmt Passwörter nur über eine verschlüsselte Verbindung an; ohne „SSL (LDAPS) verwenden“ lehnt Nova das Setzen ab. - Generic LDAP und OpenLDAP: Nova nutzt die Password-Modify-Operation nach RFC 3062 und, falls der Server sie nicht unterstützt, das Attribut
userPassword.
Sperren
- Active Directory: Nova setzt bzw. löscht das Bit
ACCOUNTDISABLEinuserAccountControl; die übrigen Bits bleiben unverändert. - Generic LDAP und OpenLDAP: Nova sperrt dauerhaft über das Password-Policy-Attribut
pwdAccountLockedTimeund entfernt es zum Entsperren. Das Passwort bleibt erhalten; das Ergebnis liest Nova zurück. Voraussetzung ist eine aktive Password Policy – bei OpenLDAP das Overlay ppolicy – und das Recht, dieses Attribut zu schreiben.
Letzter Login
In Active Directory liest Nova lastLogonTimestamp, ersatzweise lastLogon; bei OpenLDAP authTimestamp, sofern das Verzeichnis es pflegt. Für Generic LDAP ist kein Attribut voreingestellt; im Konfigurationsschlüssel last_logon_attrs lässt sich eines angeben.
Nötige Verzeichnisrechte
Das Dienstkonto („Bind DN“) braucht:
- Lesen: Konten unterhalb der „User Search Base“; Gruppen mit Mitgliederattribut und eindeutiger ID unterhalb der „Group Search Base“; bei Generic LDAP außerdem das Schema, um
memberOfzu prüfen; für den letzten Login die genannten Attribute. - Gruppen: Schreiben des Mitgliederattributs (
memberbzw.memberUid) an den Gruppen, die Nova verwaltet; bei Generic LDAP zusätzlichmemberOfan den Konten. - Konten: Anlegen, Ändern und Löschen unterhalb der „User Search Base“.
- Passwörter: Zurücksetzen – in Active Directory über
unicodePwd. - Sperren: Schreiben von
userAccountControlbzw.pwdAccountLockedTime. - Verschachtelung: Schreiben von
memberan übergeordneten Gruppen und Lesen der beteiligten Untergruppen.
Nova sollte sich per LDAPS verbinden („SSL (LDAPS) verwenden“); Active Directory verlangt das für Passwortoperationen.