Mit einigen Konfigurationsarbeiten lassen sich Zope und der Verzeichnisdienst LDAP verbinden. Ab sofort benutzt und verwaltet der Applicationserver nicht mehr seine eigene Userdatenbank, sondern die zentrale von LDAP – der anfallende Pflegeaufwand sinkt.
Der Applicationserver Zope[1] besitzt eine eigene und damit proprietäre Userverwaltung. Theoretisch könnte man sie per Schnittstelle anderen Systemenkomponenten zugänglich machen, um nicht mehrere Benutzerdatenbanken führen müssen. Besser ist aber natürlich der umgekehrte Weg.
Schnell fällt dabei die Wahl auf den etablierten Meta-Verzeichnisdienst Lightweight Directory Access Protocol, denn LDAP hat ebenso wie Zope den Vorteil, dass es weitgehend plattformneutral ist. Viele Serverprogramme, die das Anmelden von Benutzern verlangen, besitzen LDAP-Schnittstellen. Außerdem gibt es für LDAP zahlreiche Verwaltungstools. Eine Menge Unternehmen setzt schon LDAP-Server als Metaverzeichnisse ein, was redundante Datenhaltung und die damit einhergehenden Konsistenzprobleme vermeidet.
Betreibt eine Firma bereits die Novell NDS oder ein Active Directory, ist das für den hier beschriebenen Einsatzzweck kein unüberwindliches Hindernis. Diese Systeme besitzen nämlich LDAP-Schnittstellen, an die sich Zope andocken kann. Gibt es bisher keinen firmenweiten Verzeichnisdienst, ist – abhängig von der Unternehmensgröße und der Komplexität der jeweiligen IT-Landschaft – sogar zu überlegen, ob aus dem in diesem Beitrag beschriebenen Anlass nicht ein LDAP-Server installiert werden sollte. Mit OpenLDAP[2] entstehen dabei nicht mal Lizenzkosten.
Selbst die Endnutzer haben direkt etwas von LDAP: Praktisch jedes Mailclient-Adressbuch besitzt eine LDAP-Schnittstelle. Dem Admin erleichtert ein Metadirectory seinen Alltag sowieso – wenn mal alles darauf umgestellt ist. Zu berücksichtigen ist allerdings der Lernaufwand für bislang LDAP-unkundige Administratoren. Je mehr Benutzer aber zu verwalten sind, desto weniger fallen diese Nachteile ins Gewicht.
LDAP-Struktur in aller Kürze erklärt
Zu LDAP sind im Linux-Magazin bereits mehrere Artikel erschienen ([3],[4], [5]), die sich unter anderem mit den Grundlagen und dem Aufbau einer LDAP-Datenbank befassen. An dieser Stelle reicht darum eine knappe Wiederholung: LDAP organisiert eine objektorientierte Datenbank. Typisch für solche Datenbanken sind die Objektklassen und Objekte. Die Datenbank ist als Baum strukturiert, der bei einem Ursprung oder einer Wurzel beginnt. Sie heißt bei LDAP Rootdn (Root Distinguished Name). Hinzu kommt grundsätzlich ein Suffix, in der Regel der Name der Firma und das Länderkürzel.
Damit Zope überhaupt auf den LDAP-Server »slapd« zugreifen kann, muss der natürlich laufen – jedoch nicht zwingend auf derselben Maschine. Der LDAP-Standardport ist 389. Ist man nicht alleiniger Administrator im Hause und pflegt ein anderer Administrator die LDAP-Datenbank, sind auf jeden Fall folgende Daten zu erfragen: das Suffix, der Rootdn, dessen Kennwort (falls Zope die LDAP-Datenbank pflegen soll), der Users Base Distinguished Name sowie der Groups Base DN.
Die Firma Cytux
Als Beispiel dient hier die fiktive Firma Cytux, die in Deutschland beheimatet sei. Die oben als notwendig genannten Informationen lauten wie folgt:
suffix="dc=cytux,dc=de" rootdn="cn=Manager,dc=cytux,dc=de" Kennwort="secret" Users Base DN="ou=mitarbeiter,dc=cytux,dc=de" Group Base DN="ou=abteilung,dc=cytux,dc=de"
Die Distinguished Names bekommen stets das Suffix »dc=cytux,dc=de« mit auf den Weg. Der »rootdn« heißt »Manager«, ihm gehört das Kennwort »secret«. Das sind übrigens die Standardeinstellungen von OpenLDAP nach der Installation. Die Users Base benötigt Zope, um jederzeit feststellen zu können, unter welcher Gruppe die User zu finden sind. Im Beispiel heißt die Users Base »mitarbeiter«, sie speichert alle Mitarbeiter von Cytux. Group Base ist »abteilung«; mit ihr ordnet Zope den Usern Gruppen zu. Die Struktur der Firma ist in Abbildung 1 dargestellt.
Ziel |
|
Wer Zope und (Open)LDAP bisher getrennt einsetzt, kann nach dem Abarbeiten der Anleitung in diesem Artikel in Zope
|
Zope ruft LDAP!
Mit den kompletten Informationen bewaffnet erfolgt jetzt die Anbindung von Zope an LDAP. Dazu sind erforderlich:
- LDAP User Folder (aktuell in der Version 2.2)[6]
- Die Library Python-ldap[7] (für Python 2.2, funktioniert aber auch mit 2.1,[8])
- Zirka ein halber Tag Zeit
Rollen Zope-weit verteilen
Im unteren Teil des Fensters mit der »Groups«-Lasche darf der Admin Zope-Rollen an LDAP-Gruppen binden. Dies geschieht allerdings in Zope und nicht im LDAP-Server. Das Beispiel von Abbildung 6 bindet die LDAP-Gruppe »Developer« an die Zope-Rolle »Manager«. Dadurch bekommen alle LDAP-User, die der LDAP-Gruppe »Developer« zugeordnet sind, die »Manager«-Rolle in Zope. Abbildung 7 zeigt noch einmal alle Bindungen in einer Übersicht.
Beim aufmerksamen Zope-Administrator kommt vielleicht die Frage auf, warum nicht die LDAP-Gruppe »Management« an die Zope-Rolle »Manager« gebunden wurde. Das wäre deshalb nicht sachdienlich, weil nicht das Management der Firma die Inhalte des Zope-Servers pflegen soll, sondern die Mitarbeiter aus der Abteilung »Developer«.

Abbildung 3: Angaben des LDAP-Servers beim Anlegen einer »LDAPUserFolder«-Instanz. Beim Eintippen des Passworts erscheinen natürlich nur Sternchen.

Abbildung 4: Als Ergebnis einer Suche innerhalb der Lasche »Users« wird (in diesem Beispiel) ein Benutzer angezeigt.
Viele Möglichkeiten
Auf gleiche Weise sind andere Verknüpfungen von LDAP-Gruppen und Zope-Rollen definierbar. So könnte der Admin die »Consulting«-Abteilung mit einer Zope-Rolle verknüpfen, die ihr Rechte an einem Projektverzeichnis in Zope verleiht, um Abrechnungsdaten eingeben zu dürfen. Die Abteilung »Marketing« wiederum erhält vielleicht Rechte zum Einführen einer in Zope installierten Anwendung, die verkaufsfördernde Maßnahmen kalkulieren hilft.
Das Management bekommt zum Beispiel die Rechte über eine Zope-Rolle, die den Zugriff auf Betriebsabrechnungsbögen erlaubt und so weiter. In Abbildung 7 ist an der rot gestrichelten Linie erkennbar, welche Rolle der Mitarbeiter »G. Grosshans« hat.
Unterordner mit eigenen Rechten
Wenn es nötig ist, darf man in untergeordneten Ordnern die vom »LDAPUserFolder«-Hauptordner geerbten Rechte auch ändern. Dazu ist im Unterordner ein »LDAPUserSatellite«-Objekt (siehe oben) anzulegen. Damit ist es möglich, Rechte explizit zu ändern ohne einen neuen LDAP-Server definieren zu müssen. Als Referenz ist einfach ein LDAP-Server anzugeben. Diese und andere Details beschreibt die Hilfe des LDAP-User- Folder-Pakets. Sie erläutert auch das API, über das sich alle manuell möglichen LDAP-Aktionen auch automatisieren lassen.
Tipp: Wer über LDAP User Folder hinaus die komplette Struktur eines LDAP-Servers verwalten und zudem Verwaltungsaufgaben an andere Zope-User oder Rollen delegieren muss, sollte sich mit dem LDAP Directory Manager (STLDAP-Manager,[9]) befassen. (jk)
Infos |
|
[1] Zope: [http://www.zope.org], [http://www.zope.com], [http://www.dzug.org] [2] OpenLDAP: [http://www.openldap.org] [3] V. Schwaberow, “OpenLDAP-Praxis”: Linux-Magazin 5/01, S. 84 [4] Th. King, “Workshop: LDAP, Teil 1”: Linux-Magazin 6/01, S. 106 [5] Th. King, “Workshop: LDAP, Teil 2”: Linux-Magazin 8/01, S. 119 [6] LDAP User Folder: [http://www.dataflake.org/software/ldapuserfolder] [7] Python-ldap als RPM-Datei für Zope 2.6.1: [http://www.open-it.org/download/redhat7.2 /RPMS/python-ldap-2.0.0pre03-1.i386.rpm] [8] Homepage von Python-ldap: [http://python-ldap.sf.net] [9] STLDAP-Manager: [http://zope.org/Members/stevray/STLDAPManager] |










