LDAP

Petr Smělý, 256139@mail.muni.cz

Obsah

LDAP a adresářové služby

LDAP (Lightweight Directory Access Protocol) je protokol pro přístup a modifikaci dat na adresářovém serveru. Adresářový server obsahuje obvykle taková data, která se často nemění, jako informace o zaměstnancích, uživatelích nebo telefonních číslech. Data jsou representována objekty a atributy a uspořádána do stromové strukutury. Strom obvykle odpovídá geografickému nebo organizačnímu uspořádání dat, která uchovává, a pro nejvyšší úrovně často využívá DNS jmen. Například seznam zaměstnanců Chicagské pobočky společnosti ACME by byl v adresáři employees.chicago.acme.org.

LDAP Schema

Definici dat v adresáři zajišťuje LDAP Schema, které definuje třídy, povinné a volitelné atributy a dědičnost mezi třídami. Každý záznam v adresáři je instancí nějaké třídy.

Příklad definice třídy a atributu z core.schema

objectclass ( 2.5.6.2 NAME 'country'
        DESC 'RFC2256: a country'
        SUP top STRUCTURAL
        MUST c
        MAY ( searchGuide $ description ) )
attributetype ( 2.5.4.4 NAME ( 'sn' 'surname' )
        DESC 'RFC2256: last (family) name(s) for which the entity is known by'
        SUP name )

Vyhledávání a modifikace LDAP, LDIF

K LDAP serveru se dá přistupovat pomocí konzolových nástrojů ldapsearch, ldapadd, ldapmodify, ldapremove a GTK programu GQ. Všechny nástroje pro manipulaci s LDAP daty pracují s daty ve formátu LDIF. Záznamy obsahují jednoznačný identifikátor Distinguished Name (DN). Nejlevější složka DN se označuje jako Relative Distinguished Name (RDN). Na ukázkovém LDIF souboru

 dn: cn=John Doe,dc=employees ,dc=chicago ,dc=acme,dc=org
 cn: John Doe
 givenName: John
 sn: Doe
 telephoneNumber: +1 888 555 6789
 objectClass: inetOrgPerson
 objectClass: organizationalPerson
 objectClass: person
 objectClass: top

je Distinguished Name cn=John Doe,dc=employees ,dc=chicago ,dc=acme,dc=org, Relative Distinguished Name je cn=John Doe

LDIF obsahuje položky

dnDistinguished Name
objectClassTřída, které je objekt instanci. Může obsahovat více objectClass, pokud třídy od sebe dědí nebo pokud jsou pomocné.
dcDomain component
cnCommon name
telephoneNumber, givenNameAtributy závislé na třídách

openLDAP

Projekt openLDAP implementuje LDAP protokol, obsahuje knihovny, démona pro běh LDAP serveru slapd a nástroje ldap*. Architektura openLDAP je rozdělená na frontend, overlay a backend. Forntend se stará o komunikaci se sítí a protokoly, overlay sleduje data mezi frontendem a backendem a může sloužit například pro logování. Backend se stará výhradně o ukládání dat. Významné backendy jsou třeba back-bdb (databáze), back-ldif (ukládání do textových ldif souborů) a back-passwd. Může zároveň běžet několik backendů a overlay.

Konfigurace

Soubor ldap.conf definuje implicitní hodnoty pro server a nástroje, jako je nastavení implicitního DN v hodnotě BASE.

ldap.conf

#
# LDAP Defaults
#


BASE	dc=employees,dc=chicago,dc=acme,dc=org
URI	ldap://ldap.acme.org

konfigurace slapd a backendů se nastavuje v /etc/ldap/slapd.conf. Záleží na pořadí acces to, přístupová práva se vyhodnocují postupně.

/etc/slapd.conf

# global configuration section
include /usr/local/etc/schema/core.schema
access to * by * read

# BDB definition
database bdb
suffix "dc=employees,dc=chicago,dc=acme,dc=org"
directory /usr/local/var/openldap-data
rootdn "cn=Manager,dc=employees,dc=chicago,dc=acme,dc=org"
rootpw secret
# database access control definitions
access to attrs=userPassword
    by self write
    by anonymous auth
    by dn.base="cn=Admin,dc=employees,dc=chicago,dc=acme,dc=org" write
    by * none
access to *
    by self write
    by dn.base="cn=Admin,dc=employees,dc=chicago,dc=acme,dc=org" write
    by * read

Login pomocí LDAP

LDAP může fungovat jako alternativa k souborům /etc/passwd, /etc/shadow a /etc/group. V tom případě je seznam uživatelů uložen v adresáři a informace z etc souborů jsou v atributech zděděných ze tříd posixAccount, shadowAccount případně u skupin posixGroup. V odpovídajícíh PAM souborech se použije modul pam_ldap.

Nastavení NSS pro LDAP provádí libnss-ldapd, buď už při instalaci nebo úpravou konfiguračních souborů. Do nsswitch.conf se přidá podle potřeby ldap.

Replikace

Replikace je v openLDAP postavená na modelu provider/consumer. Poskytovatel poskytuje replikační updaty spotřebitelům. Spotřebitel může vystupovat jako poskytovatel pro ostatní spotřebitele, nemusí přitom být ani LDAP server. Synchronizace provádí ze strany spotřebitele syncrepl engine pomocí speciálního protokolu a nastavuje se v slapd.conf. Na straně poskytovatele je replikace zahrnutá v overlay, nastavuje se v slapd.conf poskytovatele. Mnohem více informací je v administrátorské příručce openLDAP.

Literatura