Unsere Arbeitswelt wird immer „bunter“, aber auch schwieriger zu managen und zu kontrollieren. Mitarbeiter bestimmen zunehmend selbst, welche Tools sie benutzen und wo sie arbeiten. Da verliert man als Admin leicht den Überblick und hat Angst die Kontrolle über die Sicherheit der Unternehmens-IT zu verlieren.
Zum Glück stellt UCS ein Identity und Access Management (IAM) zur Verfügung, mit dem sämtliche Tools, Geräte, Daten und Mitarbeiterzugänge zentral verwaltet werden können. Mit dem Aufbau eines zentralen IAM vermeiden Sie nicht nur eine Schatten-IT, sondern erlangen vor allem auch die vollständige Kontrolle über Ihr Netzwerk und Ihre kostbaren Daten.
Für diejenigen, die wenig technisches Hintergrundwissen zum Thema IAM in UCS haben, möchte ich im Folgenden die Begriffe LDAP / OpenLDAP näher erläutern, da sie die Grundpfeiler unseres IAM bilden.
Was ist LDAP / OpenLDAP?
LDAP ist die Abkürzung für „Lightweight Directory Access Protocol“. Ein Protokoll, das definiert wurde, um die Abfrage von Verzeichnisdiensten zu vereinheitlichen. Es ist als Vereinfachung aus dem deutlich umfangreicheren X.500 Standards hervorgegangen und hat sich als de-facto Standard für den Umgang mit Verzeichnisdiensten etabliert.
OpenLDAP versteht sich als Referenzimplementierung für diesen Standard und bringt sowohl eine Serverimplementierung als auch eine Client-Bibliothek für den Zugriff auf LDAP Server mit. Beides kommt in UCS zum Einsatz.
Verzeichnisdienst – Struktur und Objekte
Ein LDAP Server implementiert eine Datenbank, die über das LDAP Protokoll abgefragt werden kann. Wie mit anderen Datenbanken vergleichbar, liegen hier die eigentlichen Informationen im Dateisystem. OpenLDAP als „Datenbankserver“ kümmert sich dabei um die performante Bereitstellung der Daten, u. a. durch die Indizierung der Inhalte. Jedes „Objekt“ in der Datenbank entspricht dabei einem Datensatz, der zum Beispiel alle Eigenschaften („Attribute“) eines Benutzers speichert.
In der LDAP Notation sieht das dann beispielsweise so aus:
dn: uid=steuwer,cn=users,dc=univention,dc=local objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: posixAccount objectClass: top uid: steuwer mail: steuwer@univention.de displayName: Ingo Steuwer sn: Steuwer homeDirectory: /home/steuwer givenName: Ingo title: Head of Professional Services o: Univention GmbH
Ein Datensatz besteht immer aus Attribut-Wert-Paaren, z. B. sn: Steuwer
für den Nachnamen (surename / sn). Dabei gibt es im Kontext von LDAP wiederum spezielle Attribute wie zum Beispiel:
objectClass:
Das Attribut „Objektklasse“ definiert, welche Art von Datensatz das Objekt repräsentiert. Jede der zugeordneten Objektklassen erlaubt dabei eine Menge von Attributen. Welche Attribute das sind und welche Syntax sie unterstützen, wird wiederum durch „Schemata“ definiert, die dem LDAP Server bekannt gemacht werden.dn:
Der Distinguished Name (DN) definiert die Position des Objektes im Verzeichnisdienst. Das Verzeichnis ist dabei wie ein Baum aufgebaut, vergleichbar mit den meisten Dateisystemen. Die Reihenfolge in einem DN ist dabei vom Blatt zur Wurzel, also genau „andersherum“, als man es vom Pfad einer Datei im Dateisystem gewohnt ist. In unserem Beispiel ist das Objekt durchuid=steuwer
referenziert, der Pfad dann durch die Elementecn=users
(einem sogenannten Container) unddc=univention,dc=local
(der LDAP Basis, also der „Wurzel“ des Baums).
Wozu dienen Verzeichnisdienste?
Etabliert haben sich Verzeichnisdienste zur Speicherung von Infrastrukturinformationen und vor allem von Identitäten. Nicht zuletzt durch den verbreiteten Einsatz von Active Directory ist die Ablage umfangreicher Informationen zu Anwendern (Namen, Kontaktinformationen etc.) sowie der zugehörigen Authentifikations- und Authorisationsdaten zum Standard geworden. In diesem Kontext liegt ein wesentlicher Vorteil von LDAP gegenüber SQL-Datenbanken in den deutlich detaillierter definierbaren Zugriffsregeln durch Anwender auf Daten im Verzeichnisdienst.
Zugriff auf die Daten
Für den Zugriff auf die Daten stehen diverse LDAP Clients zur Verfügung. Unter UCS nutzt man meist die entsprechenden Module in der Management Console.
Im folgenden Beispiel sei aber eine Abfrage am Kommandozeilentool ldapsearch
illustriert.
Die wichtigsten Parameter sind:
- LDAP Server: Üblicherweise wird der LDAP Server als URI angegeben – für eine per SSL/TLS-verschlüsselte Verbindung in der Form „LDAPS://<FQDN>“
- LDAP Basis: LDAP Server unterstützen den Betrieb verschiedener „Datenpartitionen“, die über ihre LDAP Basis unterschieden werden. In UCS Umgebungen gibt es nur eine LDAP Basis, die auf UCS Systemen vorkonfiguriert ist. Im obigen Beispiel lautet diese
dc=univention,dc=local
, daher erfolgt die Angabe der Basis in der Konfigurationsdatei. Werden die Tools jedoch für den Zugriff auf andere LDAP Server verwendet, muss eine dort gültige Basis angegeben werden. - Authentifikation: LDAP Server geben bei anonymen Zugriffen meist keine Ergebnisse zurück. Im Gegensatz zu anderen Datenbanken gibt es dabei auch keine Fehlermeldungen, also kein „Access Denied“ o. ä., sondern schlicht keine Ergebnisse. Erst eine Authentifikation, z. B. durch die Angabe eines Benutzerkontos im LDAP als DN sowie dessen Passwort, ermöglicht den Zugriff.
- Filter: Die Suche nach Objekten im LDAP erfolgt über „Filter“. Üblich ist eine Kombination aus einer Objektklasse (z. B. für „ich suche nach einem User“ über „objectClass=person“) und einem Attribut (z. B. „uid=Administrator“). Um die beiden Beispiele zu einem Filter zu verknüpfen, werden diese durch „()“ eingefasst und durch ein vorangestelltes „&“ verbunden:
&(objectClass=person)(uid=Administrator))
Als voller Aufruf des Kommandozeilen-Tools ldapsearch
ergibt sich dann:
ldapsearch -H LDAPS://ucs-master.univention.local \ -x -D "uid=steuwer,cn=users,dc=univention,dc=local" -w "geheim"\ (&(objectClass=person)(uid=Administrator))
Die Option -H
erlaubt die Angabe einer LDAP URI zur Definition des zu verwendenden LDAP Servers. Bei der hier gewählten Angabe mit LDAPS
wird die Verbindung per SSL verschlüsselt. Dazu ist wichtig, dass die Zertifikate bekannt sind und der Server mit dem kompletten Domänennamen („fully qualified domain name“ / FQDN) angegeben wurde. Mit dem Parameter -x
wird ein einfacher LDAP Bind als Authentifikationsverfahren gewählt und über -D
und -w
Benutzer-DN und Passwort übergeben. Der Filter sucht dann nach dem Benutzerkonto von „Administrator“ – für ihn ist kein führender Optionsbuchstabe erforderlich.
Vereinfachungen in UCS mit „univention-ldapsearch“
UCS bietet auf allen Systemen das Kommandozeilen-Tool univention-ldapsearch
. Damit ist es „root“ Benutzern möglich, mit dem Account des aktuellen UCS Systems auf das LDAP zuzugreifen. Das Tool nutzt im Hintergrund ldapsearch
, übergibt aber die korrekten Werte für LDAP Server, LDAP Basis und Authentifikation. Es reicht also die Angabe des LDAP Filters für eine Suche:
univention-ldapsearch (&(objectClass=person)(uid=Administrator))
Weiterführende Informationen
Für nähere Informationen zu den Hintergründen von LDAP finden Sie einen guten Einstieg auf Wikipedia. Ein erster Anlaufpunkt für den konkreten Einsatz von OpenLDAP kann für Sie die Dokumentation auf der OpenLDAP Projektseite sein.
Neben den guten Man-Pages („man ldapsearch“) etc. gibt es auch zahlreiche Bücher. Und zu guter Letzt erhalten Sie einen fundierten Einstieg in die UCS Implementierung auch immer über unsere Dokumentation.
Kommentare
Frank Huthmann
Sehr gute Erklärung eines schwer (im Sinne von komplex) Begriffes in diesem Sinne sind Windows und Linux nicht all zu weit entfernt von dem was sich bei Domainen abspielt. Danke dem OpenLDAP Verfahren. Auch das sich Univention um solche Grundbegriffe zuerklären bereit ist, kann mann nur hoch anrechnen. Weiter so super. Ist zwar lange her mit dem posten, aber das tut dem Thema keinen Abbruch bringen. Manchmal muss so eine kurze Zusammenfassung eines extrem komplexen Themas genügen um einem wieder auf den Sprung zubringen.