Das installierte System enthält unter /etc/openldap/slapd.conf
eine vollständige Konfigurationsdatei für den LDAP-Server. Die einzelnen Einträge und die erforderlichen Anpassungen werden hier kurz beschrieben. Einträge, denen ein Rautenzeichen (#) vorangestellt wurde, sind nicht aktiv. Dieses Kommentarzeichen muss entfernt werden, um sie zu aktivieren.
Beispiel 25.2. slapd.conf: Include-Direktive für Schemata
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema
Diese erste in Beispiel 25.2, „slapd.conf: Include-Direktive für Schemata“ dargestellte Direktive in slapd.conf
gibt das Schema an, anhand dessen das LDAP-Verzeichnis organisiert wird. Der Eintrag core.schema
ist erforderlich. Dieser Direktive werden zusätzliche erforderliche Schemata angefügt. Die entsprechenden Informationen finden Sie in der vorhandenen Dokumentation zu OpenLDAP.
Beispiel 25.3. slapd.conf: pidfile und argsfile
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
Diese beiden Dateien enthalten die PID (Prozess-ID) und einige Argumente, mit denen der slapd-Prozess gestartet wird. Hier müssen keine Änderungen vorgenommen werden.
Beispiel 25.4. slapd.conf: Zugriffssteuerung
# Sample Access Control # Allow read access of root DSE # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # access to dn="" by * read access to * by self write by users read by anonymous auth # # if no access controls are present, the default is: # Allow read by all # # rootdn can always write!
In Beispiel 25.4, „slapd.conf: Zugriffssteuerung“ ist der Ausschnitt der Datei slapd.conf
dargestellt, mit dem die Zugriffsberechtigungen für das LDAP-Verzeichnis auf dem Server gesteuert werden. Die hier im globalen Abschnitt von slapd.conf
vorgenommenen Einträge sind gültig, sofern keine benutzerdefinierten Zugriffsregeln im datenbankspezifischen Abschnitt festgelegt werden. Durch diese Regeln würden die globalen Deklarationen außer Kraft gesetzt. Wie hier dargestellt, verfügen alle Benutzer über Lesezugriff auf das Verzeichnis, nur der Administrator (rootdn
) hat jedoch Schreibberechtigung für dieses Verzeichnis. Die Zugriffssteuerung in LDAP ist ein hochkomplexer Prozess. Folgende Tipps dienen als Unterstützung:
Jede Zugriffsregel weist folgende Struktur auf:
access to <what> by <who> <access>
what
ist ein Platzhalter für das Objekt oder Attribut, auf das Zugriff gewährt wird. Einzelne Verzweigungen des Verzeichnisses können explizit mit separaten Regeln geschützt werden. Darüber hinaus besteht die Möglichkeit, Bereiche des Verzeichnisbaums mit einer Regel durch die Verwendung regulärer Ausdrücke zu verarbeiten. slapd wertet alle Regeln in der Reihenfolge aus, in der sie in der Konfigurationsdatei angegeben sind. Allgemeine Regeln sollten nach den spezifischeren Regeln angegeben werden – die erste von slapd als gültig eingestufte Regel wird bewertet und alle folgenden Einträge werden ignoriert.
Mit who
wird festgelegt, wer Zugriff auf die mit what
angegebenen Bereich erhalten soll. Hier können reguläre Ausdrücke verwendet werden. Auch hier bricht slapd die Bewertung nach der ersten Übereinstimmung ab, sodass die spezifischeren Regeln vor den allgemeineren Regeln angegeben werden sollten. Die in Tabelle 25.2, „Benutzergruppen und ihre Zugriffsberechtigungen“ dargestellten Einträge sind möglich.
Mit access
wird der Zugriffstyp angegeben. Verwenden Sie die in Tabelle 25.3, „Zugriffstypen“ angegebenen Optionen.
Tabelle 25.3. Zugriffstypen
Tag | Umfang des Zugriffs |
---|---|
| Kein Zugriff |
| Für die Verbindung zum Server |
| Für Objekt für Vergleichszugriff |
| Für den Einsatz von Suchfiltern |
| Lesezugriff |
| Schreibzugriff |
slapd vergleicht das vom Client angeforderte Zugriffsrecht mit den in slapd.conf
gewährten Rechten. Dem Client wird Zugriff gewährt, wenn in den Regeln ein höheres als das angeforderte Recht oder gleichwertiges Recht festgelegt ist. Wenn der Client ein höheres Recht als die in den Regeln deklarierten Rechte anfordert, wird ihm der Zugriff verweigert.
In Beispiel 25.5, „slapd.conf: Beispiel für die Zugriffssteuerung“ ist ein Beispiel einer einfachen Zugriffssteuerung dargestellt, die mithilfe von regulären Ausdrücken beliebig entwickelt werden kann.
Beispiel 25.5. slapd.conf: Beispiel für die Zugriffssteuerung
access to dn.regex="ou=([^,]+),dc=suse,dc=de" by dn.regex="cn=administrator,ou=$1,dc=suse,dc=de" write by user read by * none
Mit dieser Regel wird festgelegt, dass nur der jeweilige Administrator Schreibzugriff auf einen einzelnen ou
-Eintrag erhält. Alle anderen authentifizierten Benutzer verfügen über Lesezugriff und alle sonstigen Benutzer haben kein Zugriffsrecht.
Festlegen von Zugriffsregeln | |
---|---|
Falls keine |
Detaillierte Informationen hierzu und eine Beispielkonfiguration für LDAP-Zugriffsrechte finden Sie in der Online-Dokumentation zum installierten openldap2
-Paket.
Neben der Möglichkeit, Zugriffsberechtigungen über die zentrale Serverkonfigurationsdatei (slapd.conf
) zu verwalten, stehen Zugriffssteuerungsinformationen (ACI, Access Control Information) zur Verfügung. Mit ACI können Zugriffsdaten für einzelne Objekte innerhalb des LDAP-Baums gespeichert werden. Diese Art der Zugriffssteuerung wird noch selten verwendet und von Entwicklern als experimentell betrachtet. Weitere Informationen hierzu erhalten Sie unter http://www.openldap.org/faq/data/cache/758.html.
Beispiel 25.6. slapd.conf: Datenbankspezifische Direktiven
database bdb checkpoint 1024 5 cachesize 10000 suffix "dc=suse,dc=de" rootdn "cn=admin,dc=suse,dc=de" # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd/tools. Mode 700 recommended. directory /var/lib/ldap # Indices to maintain index objectClass eq
Der Datenbanktyp, in diesem Fall eine Berkeley-Datenbank, wird in der ersten Zeile dieses Abschnitts festgelegt (siehe Beispiel 25.6, „slapd.conf: Datenbankspezifische Direktiven“). Mit checkpoint
wird die Datenmenge (in KB) festgelegt, die im Transaktionsprotokoll gespeichert wird, bevor die Daten in die tatsächliche Datenbank geschrieben werden. Hiermit wird auch die Zeit (in Minuten) bestimmt, die zwischen zwei Schreibvorgängen vergeht. Mit cachesize
wird die Anzahl der im Zwischenspeicher der Datenbank gespeicherten Objekte festgelegt. Mit suffix
wird angegeben, für welchen Teil des LDAP-Baums dieser Server verantwortlich sein soll. Mit dem darauf folgenden rootdn
wird festgelegt, wer für diesen Server über Administratorrechte verfügt. Der hier angegebene Benutzer muss nicht über einen LDAP-Eintrag verfügen und nicht als regulärer Benutzer vorhanden sein. Das Administratorpasswort wird mit rootpw
festgelegt. Anstelle von secret
kann hier auch der mit slappasswd erstellte Hash-Wert des Administratorpassworts eingegeben werden. Die directory
-Direktive gibt das Verzeichnis (im Dateisystem) an, in dem die Datenbankverzeichnisse auf dem Server gespeichert sind. Die letzte Direktive, index objectClass eq
veranlasst die Wartung eines Indizes aller Objektklassen. Attribute, nach denen die Benutzer am häufigsten suchen, können hier je nach Erfahrung hinzugefügt werden. Die an dieser Stelle für die Datenbank festgelegten benutzerdefinierten Regeln für Access
können anstelle der globalen Access
-Regeln verwendet werden.
Nachdem der LDAP-Server vollständig konfiguriert und alle gewünschten Einträge gemäß dem in Abschnitt 25.4, „Datenbehandlung im LDAP-Verzeichnis“ beschriebenen Muster vorgenommen wurden, starten Sie den LDAP-Server als root
, indem Sie den Befehl rcldap start
eingeben. Durch Eingabe des Befehls rcldap stop
können Sie den Server manuell anhalten. Den Status des laufenden LDAP-Servers fragen Sie mit rcldap status
ab.
Mit dem in Abschnitt 8.2.3, „Konfigurieren von Systemdiensten (Runlevel) mit YaST“ beschriebenen Runlevel-Editor von YaST kann der Server automatisch beim Booten und Anhalten des Systems gestartet bzw. angehalten werden. Darüber hinaus besteht die Möglichkeit, wie in Abschnitt 8.2.2, „Init-Skripts“ beschrieben, die entsprechenden Verknüpfungen zu den Start- und Anhaltskripts mit dem Befehl insserv über die Befehlszeile zu erstellen.