Benutzer-/Gruppen-Synchronisierung
Bitte erstellen Sie vor jeder Änderung an einer Schnittstelle/Import einen vollständiges Backup. Falls das Ergebnis nicht zufriedenstellend ist kann dieses dann wiederhergestellt werden
Der Import von Benutzern und Gruppen aus dem Active Directory in i-doit findet immer über den console.php Befehl statt. Dazu benutzen wir das Kommando ldap-sync.
Am Ende des Artikels ist ein komplettes Beispiel der erstellten erweiterten Konfiguration zu finden.
Der Artikel zur Konfiguration vom LDAP-Verzeichnis/Active Directory sollte vorher jedem bekannt sein.
Wir werden hier verschiedene LDAP Filter und eine komplette ldap.ini Konfiguration durchgehen.
Ziel ist es alle Benutzer und Gruppen aus dem AD/LDAP mit i-doit zu synchronisieren, sowie deren Mitgliedschaften.
Ich setzte Grundkenntnisse im Bezug auf AD/LDAP voraus.
In diesen Beispielen wird für Personen die objectClass = user
verwendet.
Für Gruppen wird die objectClass = group
verwendet.
Wenn man nicht alle Benutzer oder Gruppen der Domäne synchronisieren will muss unter Nach Benutzern suchen in (OU)\*
der DN/CN einer OU bzw. eines Containers eingetragen werden.
Konfiguration der Filter#
Import von allen Benutzern#
Hier werden nur Benutzer synchronisiert, das bedeutet auch, dass keine Gruppen erstellt werden. Damit nur Benutzer synchronisiert werden muss der Filter so aussehen:
1 |
|
Import von Benutzern mit bestimmten Attributen#
Wir möchten hier auf ein Attribut filtern und nur diesen Benutzer synchronisieren.
Nur der Benutzer der im Attribut sAMAccountName
den Wert MichaelO
hat soll synchronisiert werden.
1 |
|
Import von allen Benutzern und allen Gruppen#
Hier werden Benutzer und Gruppen erstellt außerdem werden die Benutzer den jeweiligen Gruppen zugewiesen.
Damit Benutzer und Gruppen synchronisiert werden muss der Filter so aussehen:
1 |
|
Import von Benutzern die Mitglied der Gruppe idoit-read sind#
Damit nur Benutzer die Mitglied der Gruppe idoit-read
sind synchronisiert werden muss der Filter so aussehen:
1 |
|
Import von Benutzern die Mitglied der Gruppe idoit-read und idoit-write sind#
Damit nur Benutzer die Mitglied der Gruppe idoit-read
sind synchronisiert werden muss der Filter so aussehen:
1 |
|
Import von Benutzern und Gruppen die unterhalb einer Nested Group sind#
Ich habe eine Gruppe idoit in der die i-doit Gruppen idoit-read
und idoit-write
Mitglied sind. Diese beiden Gruppen sollen synchronisiert werden. Mit diesem Filter kann ich direkt die Gruppen und die Benutzer anlegen lassen.
Die Gruppe idoit wird dadurch nicht erstellt, es werden nur die Gruppen unterhalb der Gruppe erstellt. Außerdem werden die Gruppen nicht miteinander verknüpft, da Gruppen keinen Gruppen als Mitglied haben können.
1 |
|
So filtere ich Benutzer mit mehr als einer objectClass#
Wenn sich die Benutzer beispielsweise dadurch unterscheiden, dass sie zwei objectClass
-Attribute haben (z.B. Person und Benutzer), würde ich so den Filter aufbauen:
1 |
|
Welche weiteren Attribute über die ldap.ini importiert werden können#
- Der Beitrag ldap.ini Konfiguration sollte bekannt sein.
- Es kann eine .ini Datei für den Import erstellt werden, mit dieser können weitere Attribute importiert werden.
- Die Attributerweiterungen sollte bereits Konfiguriert sein.
- Wir verwenden den .ini Abschnitt "additional"
Die Konfiguration der Attributerweiterungen#
Hier noch mal als Tabelle
Feldname | Attribut | Mapping mit |
---|---|---|
Feldname 1 | objectSid | Key: custom_1 |
Feldname 2 | objectGUID | Key: custom_2 |
Feldname 3 | - | Key: custom_3 |
Feldname 4 | - | Key: custom_4 |
Feldname 5 | - | Key: custom_5 |
Feldname 6 | - | Key: custom_6 |
Feldname 7 | - | Key: custom_7 |
Feldname 8 | - | Key: custom_8 |
Benutzer statisch Räumen zuordnen#
In der ldap.ini
können feste Zuweisungen von Benutzern zu Räumen eingetragen werden.
Die Benutzer werden dann dem zugewiesenem Raum als Kontakt zugewiesen.
(Die Räume müssen vorher in i-doit existieren!)
1 2 |
|
Benutzer als Kontakt zu Räumen zuordnen#
Es ist möglich, über die Funktion import_rooms
Personen als Kontakt zu Räumen zuzuordnen. Dazu muss die Option auf true
gesetzt werden. Räume werden automatisch angelegt, allerdings ohne Standort.
1 2 3 |
|
Bug
Aktuell muss das AAttribut in Kleinbuchstaben geschrieben werden physicaldeliveryofficename
So importiere ich Attribute aus dem LDAP#
Ich möchte weitere LDAP Attribute zu Benutzern importieren und habe schon die Attributerweiterungen Konfiguriert.
Nun muss ich noch die Konfigurationsdatei des LDAP-Sync konfigurieren (ldap.ini).
Die verfügbaren Attribute finden Sie in Ihrer AD-Konfiguration. Hieraus kann ich mir die Attribute suchen die ich zusätzlich Synchronisieren möchte.
Welche Attribute zu welchem Feld gehören kann man über Google finden oder z.B. hier SelfADSI externer Link.
Ich nehme mir als Beispiel folgende Attribute heraus und füge Sie in die ldap.ini ein:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Wie man hier sieht habe ich z.B. das Stammdaten Attribut department mit dem LDAP Attribute department gemapped.
Zusätzlich habe ich die Attributerweiterung verwendet. Der Aufbau für z.B.
1 |
|
wäre wie folgt:
attributes
sagt dem handler er soll das i-doit Attribut [custom_1] mit dem LDAP Attribut objectSid
synchronisieren.
Nachdem die Benutzer synchronisiert wurden finde ich folgende Stammdaten vor:
Weitere Optionen#
autoReactivateUsers#
Um einen sauberen Start zu haben, setzt diese Einstellung automatisch alle Benutzer vor der Synchronisierung auf den Status normal.
Dies ist hilfreich, falls Benutzer versehentlich vorher archiviert oder gelöscht wurden.
Info
Wir sollten uns bewusst sein, dass es mit NDS oder OpenLDAP derzeit nicht möglich ist, gelöschte Benutzer zu identifizieren, um sie später zu archivieren. Benutzer sind dann immer aktiviert!
1 |
|
ignoreUsersWithAttributes#
Deaktiviere die Synchronisierung für Benutzer mit Attributen, die gegen ignoreFunction geprüft wurden.
Diese Funktion hilft, eine Synchronisation unerwünschter Verzeichnisobjekte zu verhindern.
Der Benutzer wird nicht synchronisiert, wenn ignoreFunction für ALLE ausgewählten Attribute fehlschlägt.
Standardmäßig steht hier ignoreUsersWithAttributes=[]
somit wird nichts ignoriert.
Wir möchten nur Benutzer importieren bei denen die Attribute samaccountname
, sn
, givenname
und mail
nicht leer sind.
Somit müsste die Konfiguration für ignoreUsersWithAttributes
so aussehen:
1 2 3 4 |
|
ignoreFunction#
Ist die Prüffunktion zum Ignorieren von Benutzern (siehe ignoreUsersWithAttributes
)
Dies kann ein beliebiger Funktionsname sein, der über call_user_func
oder die definierten Funktionen aufrufbar ist.
definierte functions:
1 2 3 4 |
|
Beispiel: empty
würde als empty($value) ausgeführt werden
Wir prüfen auf leere Attribute mit
1 |
|
Synchronisiere leere Attribute#
Diese Option entscheidet, ob geleerte Attribute aus dem AD mit i-doit synchronisiert werden sollen oder nicht.
1 |
|
Die komplette ldap.ini#
Hier eine fertige ini. Datei diese kann natürlich bearbeitet werden.
Der erste Teil der ldap.ini wird von Verwendung von Konfigurationsdateien für Console Commands bezogen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
Damit die .ini Datei verwendet wird, muss diese mit dem -c
parameter angegeben werden.
1 |
|