LDAP

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@nullunivention.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 durch uid=steuwer referenziert, der Pfad dann durch die Elemente cn=users (einem sogenannten Container) und dc=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.

Ingo Steuwer beschäftigt sich seit 1999 mit Linux und ist seit 2004 bei Univention. Als Head of Professional Services liegt sein Fokus auf der Betreuung von Projekten mit UCS.

Was ist Ihre Meinung? Hinterlassen Sie einen Kommentar!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.