Unentbehrliches Netzwerk-Know-how (tecCHANNEL COMPACT)

LDAP, Teil 1

Veröffentlicht: 06. Okt 2006

LDAP steht als Abkürzung für Lightweight Directory Access Protocol, die abgespeckte Version des X.500 Directory Service. Hier liegen die Wurzeln von LDAP. In Grunde genommen geht es aber erst einmal um ein Verzeichnis. Ein Verzeichnis ist eine Sammlung von hierarchisch gegliederten Einträgen (Entities).

*
Auf dieser Seite
LDAP-GrundlagenLDAP-Grundlagen
AbfrageoperationenAbfrageoperationen

Auch wenn der Begriff LDAP in der Praxis sehr locker verwendet wird, bezeichnet er eigentlich nur ein Protokoll, über das auf die in einem Verzeichnis gespeicherten Daten zugegriffen wird. Die eigentlichen Datenbankfähigkeiten werden von einem separaten Back-End-Programm bereitgestellt.

LDAP definiert also nur ein Protokoll für den Zugriff auf ein solches Verzeichnis. Kurz: ein Nachrichtensatz, der auf bestimmte Datenarten zugreift. Verzeichnisdienste können in verschiedenen Formen auftreten, ihnen sind aber folgende Eigenschaften gemeinsam:

Ein Verzeichnisdienst ist für Lesezugriffe optimiert. Auf ein Verzeichnis wird fast ausschließlich lesend und selten schreibend zugegriffen. Dies ist ein signifikanter Unterschied zu einer Datenbank.

Ein Verzeichnisdienst dient nicht nur der Speicherung von Informationen, er implementiert ein verteiltes Modell zur Informationsablage.

In einem Verzeichnisdienst sind die Informationen in einem Verzeichnisbaum organisiert. Es können mehrere Personen für die Administration von Teilbereichen des Verzeichnisbaums zuständig sein. Durch die Baumstruktur ist eine effiziente Suche möglich (Suche in Teilbäumen). Verzeichnisdienste besitzen ausgereifte Suchmöglichkeiten. Durch die Baumstruktur in Verzeichnisdiensten lassen sich hierarchische Strukturen wie zum Beispiel Organisationen sehr einfach abbilden.

Verzeichnisdienste bieten die Replikation zwischen unterschiedlichen Verzeichnisservern zum Datenabgleich an.

Mehrere solcher Verzeichnisdienste existieren bereits: Novells NDS (Novell Directory Services)/Novell eDirectory, Microsoft NTDS (NT Directory Services) bzw. ADS (Active Directory Services), Banyans StreetTalk, OSIs X.500 oder das Domain Name System (DNS).

LDAP-Grundlagen

Das Lightweight Directory Access Protocol ist zwar durch internationale RFCs definiert, jedoch noch kein offizieller Standard. Dennoch kann man bei LDAP von einem De-facto-Standard sprechen. LDAP bietet einen vollen Verzeichniszugriff über einen TCP/IP-Stack und vereinfacht so den Zugriff auf ein X.500-Verzeichnis. Es wurde nur ein Teil der DAP-Funktionen übernommen, allerdings reichen die vorhandenen Funktionen vollständig aus, um den Rest zu emulieren. In der Version LDAPv3 besitzt das Leichtgewicht nur noch neun Kernfunktionen, die allerdings vollkommen ausreichen.

Abfrageoperationen

search

read (implementiert durch „search“ mit Mächtigkeit der Ergebnismenge = 1)

compare

Authentifizierungs- und Kontrolloperationen

add

delete

modifiy

modifiy DN (rename)

Authentifizierungs- und Kontrolloperationen

bind (anmelden/authentifizieren)

unbind (abmelden)

abandon (Anfrage abbrechen)

Ursprünglich sollte LDAP nur als Mittler zwischen IP-Clients und einem OSI-X.500-Server dienen.

Schema: Zusammenspiel LDAP-Client, LDAP-Server und abzufragende Daten.

Schema: Zusammenspiel LDAP-Client, LDAP-Server und abzufragende Daten.

LDAP ist asynchron, d.h., bei mehreren Anfragen über das Protokoll müssen die Antworten nicht in der gleichen Reihenfolge erfolgen wie die Anfragen.

LDAP in seiner Ursprungsversion bildet selbst keinen Verzeichnisdienst – wird aber als „heißer“ Kandidat gehandelt, mit dem eine Integration der unterschiedlichen Verzeichnisdienste gelingt. Alle relevanten Hersteller haben auch bereits eine Unterstützung von LDAP zu ihrem Verzeichnis angekündigt oder bieten sie bereits an. So wie sich IP als Netzprotokoll durchgesetzt hat, wird mit LDAP eine einheitliche Möglichkeit geschaffen, auf Verzeichnisse zuzugreifen.

Der Mehrwert von LDAP beschränkt sich aber nicht nur auf die Interoperabilität zwischen verschiedenen Verzeichnissen und dem Abbild von Benutzerinformationen in einem Unternehmen. Denkbar, und bereits in RFC 2307 vorgesehen, ist die Speicherung folgender Einträge, um einen Netzwerkinformationsdienst zu bilden:

Benutzer

Gruppen

IP-Dienste (Zuordnung zwischen Namen zu Portnummern und umgekehrt)

IP-Protokolle

RPCs (Zuordnung von Remote Procedure Call-Nummern)

NIS-Netzwerkgruppen

Boot-Informationen (Boot-Parameter und MAC-Adresszuordnungen)

Einhängepunkte für Dateisysteme

IP-Hosts und Netzwerke

RFC 822-konforme Mailaliase

Aber es ist mehr möglich: Durch Integration von LDAP als „Namensdienstleister“ in Anmeldediensten ist auch ein Single Sign-On in heterogenen Umgebungen denkbar. Ein Username/Passwort-Paar regelt den Zugriff auf sämtliche Ressourcen im Netz!

Anwendung findet der Verzeichnisdienst LDAP z.B. bei:

Authentifizierung und Speicherung von Benutzern (im Unix-Umfeld Samba, Sendmail)

Authentifizierung auf Webseiten (Apache, WebDav)

Namensdienste sowie Ressourcen-Verwaltung (im Unix-Umfeld Hosts usw.)

Adressbücher kombiniert mit Benutzerverzeichnissen

Speicherung von Konfiguration von verschiedener Software

LDAP ist als Zugriffsprotokoll auf X.500-Verzeichnisse entworfen worden. Seine Spezifikation beruht auf der Nomenklatur von X.500. Durch Gateways ist es aber nicht mehr auf diesen einen Verzeichnisdienst festgelegt. Die Einträge sind als Objekte verpackt. Sie bestehen aus Attributen mit Typen und Werten und sind in einem hierarchischen Baum strukturiert. Das kennen Sie bereits aus dem hierarchischen Namenssystem von Lotus Domino. Dieser in einer objektorientierten Baumstruktur abgelegte Baum kann über mehrere Server verteilt sein. Jedes Element in diesem Baum ist ein Objekt.

Jedes dieser Objekte hält verschiedene Attribute. Sowohl die Attribute als auch die Objekte unterliegen festen Definitionen: einem LDAP Schema. In diesen Schemata wird definiert, welche Objekte welche Attribute besitzen können. Außerdem ist dort festgelegt, welche Attribute vorhanden sein können und welche vorhanden sein müssen.

Diese Definitionen werden auch Objektklassen (objectClass) genannt. Durch Auswahl dieser Objektklassen in einem Objekt wird diesem zugewiesen, welche Attribute es besitzt. Objektklassen definieren also, welche Attribute mit welchem Wertetyp erlaubt sind. Mögliche Typen sind u.a. IA5 (ASCII)-Zeichenketten, JPEG-Fotos, Sounddaten, URLs und PGP-Schlüssel.

Durch Erweiterung der Schemata lassen sich weitere Strukturen und Definitionen für Attribute hinzufügen. In den Schemata wird außerdem für jeden Objekttyp sowie für die entsprechenden Attribute eine eindeutige Identifikationsmöglichkeit definiert, Unique Object Identifier (OID, Objektkennung) genannt. Diese OIDs werden weltweit eindeutig vergeben.

LDAP-Objekte sind standardisiert, um ein Miteinander einer Vielzahl von Verzeichnisdienst-Servern zu gewährleisten. Ein LDAP-Schema definiert die Liste möglicher Typen von Einträgen (die man als Objektklassen bezeichnet) zusammen mit den mit ihnen verknüpften Attributen. Schema-Definitionen werden in Dateien gespeichert. Bei OpenLDAP liegen die Schema-Dateien im Unterverzeichnis /etc/openldap/schema.

Die Attribute werden über ihre Datentypen, Formate, Vergleichsmethoden usw. definiert. Innerhalb einer Objektklasse können Attribute erforderlich oder optional sein. Das gleiche Attribut kann Teil von mehr als einer Objektklasse sein.

Beispiel für Attributtypen 
cn – Common Name
dc – Domain Component
sn – Surname
uid – User ID

Ein Verzeichniseintrag kann in mehreren Objektklassen vorhanden sein.

Die hierarchische Baumstruktur wird als Directory Information Tree (DIT) bezeichnet, der den gesamten von einem Server vorgehaltenen Namensraum abbildet (siehe Abbildung). Mit einem oder mehreren Attributtyp-Wert-Paaren, aus denen der so genannte Relative Distinguished Name (RDN) gebildet wird, erhält ein Eintrag einen Namen, der in der Hierarchie-Ebene, in welcher der Eintrag eingeordnet ist, eindeutig sein muss. Durch die Aneinanderreihung der einzelnen RDNs in den verschiedenen Hierarchie-Ebenen von einem Wurzelknoten bis hin zum RDN des Eintrags, wird der so genannte Distinguished Name (DN) gebildet, welcher ein im gesamten Datenbestand eindeutiger Name ist.

Die Unterscheidung in RDN und DN ist wichtig. Wenn der DN wie ein absoluter Pfad zwischen der Wurzel eines Dateisystems und der entsprechenden Datei anmutet, so ist der RDN wie der Dateiname an sich.

Hierarchie: LDAP Directory Information Tree (DIT).

Hierarchie: LDAP Directory Information Tree (DIT).

Jedes Objekt hat einen eigenen Eintrag für Zugriffsrechte. Hier werden die Zugriffsrechte auf das Objekt festgelegt. Diese Zugriffsrechte werden vererbt. Dies ermöglicht eine verteilte Administration, in der unterschiedliche Administratoren für unterschiedliche Teile des Verzeichnisbaumes zuständig sind. Die Daten können auf verschiedene Server, so genannte DSAs (Directory Service Agents) verteilt werden.

Teile und herrsche: Autonomie und verteilte Verwaltungsmöglichkeiten im Tree.

Teile und herrsche: Autonomie und verteilte Verwaltungsmöglichkeiten im Tree.

© www.tecCHANNEL.de

Mit freundlicher Genehmigung von www.addison-wesley.de


**
In diesem Beitrag
**