Hlavní navigace

Lehký úvod do LDAP

Lukáš Zapletal

V tomto článku si přečtete něco o základní koncepci LDAP (Lightweight Directory Access Protocol), možnosti využití v praxi a nakonec se podíváme, jak to všechno funguje na Linuxu.

I když je zkratka trochu zavádějící (někdo si může myslet, že jde o protokol pro přístup k adresářům na vzdáleném systému :), jedná se o adresářovou informační službu. V praxi to například znamená seznam lidí firmy, jejich přihlašovací jména, domovské adresáře, osobní informace, jména jejich e-mailů nebo čísla telefonů. LDAP může stejně tak dobře uchovávat nastavení uživatelských programů. Data se nemusejí nutně vztahovat na osoby, protokol může pomoct vyhledat různé přístroje ve velké firemní síti (např. fax nebo tiskárnu) a zobrazit jejich umístění či obsahovat různé číselníky (budov, pracovišť atd.).

Tabulka č. 79

Obrázek 1: Znázornění LDAP stromu

LDAP je jednoduchý a dobře navržený protokol umožňující nejen klást poměrně složité dotazy, ale i vkládat, modifikovat a mazat záznamy. Celou službu je možno si představit jako veliký strom či adresář na souborovém systému, který obsahuje celý svět. Tento strom obsahuje záznamy (entries). Každý záznam musí mít definovány atributy (attributes) – povinné a volitelné. Ty definujeme pomocí objektů (object class), které jsou nadefinovány na serveru. Standardně máte nadefinováno jen několik základních objektů typu person nebo organization. Další si již musíte nadefinovat sami (dle aplikace, která to vyžaduje). Dobrou studnou příkladů je Linuxcenter HK. Každý záznam (entry) ve stromu má jedinečné jméno, tzv. „distinguished name“ neboli „DN“. Příklad DN:

o=Firma ABC, s.r.o., c=CZ

Prvním záznamem je třída „country“, která má pouze jeden povinný atribut „c“. Níže ve stromu je třída „organization“, která má také jeden povinný atribut „o“. Tak to jde dále – pod organizací je organizační jednotka (organization unit) atd. Jednotlivé záznamy se v DN oddělují čárkami – mezera za čárkou není nutná.

Jistě si řeknete, jak je možné, aby LDAP umožňoval prohledat celý svět. Samozřejmě že každý LDAP server má na starosti určitou část (většinou je to právě konkrétní firma) – říkáme, že server má určenou základní DN (base DN) zónu. Je to podobné jako u DNS. Většina klientů je schopna vracet dotazy v tzv. LDIF (LDAP Data Interchange Format) formátu, který umí servery zase exportovat a importovat, což významnou mírou napomáhá distribuci a modifikaci dat. Ačkoliv je to textový formát, některé třídy mají binární atributy (např. třída jpegPhoto) a umožňují ukládat binární data (za pomocí kódování). Příklad takového LDIF záznamu:

dn: cn=lzap, ou=Informatika, o=Firma ABC, s.r.o., c=CZ
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: lzap
givenName: Lukas
sn: Zapletal
mail: Lukas.Zapletal@firma.cz
description: Bla bla bla...

Výhodou tohoto řešení je možnost velmi efektivně nastavovat přístupová práva (dokonce i na jednotlivé atributy objektů). LDAP servery nabízejí také autentifikaci a dokonce i přes SSL, takže se o svá data nemusíte bát. Systém LDAP umožňuje repliky, takže můžete zátěž rozprostřít na více serverů.

A jaká má LDAP využití v praxi? Asi nejvýznamnější je autentifikační funkce. Server bude znát jména i hesla uživatelů a bude autentifikovat veškeré účty v síti (poštovní, ftp…). Výhodou je, že uživatelé budou mít na všechno jedno jméno a heslo. Dají se tak pohodlně „synchronizovat“ uživatelské účty na různých systémech (např. NOVELL nebo NT). Větší firmy mohou LDAP využít k vyhledávání informací o objektech v síti (osoby, emaily, tiskárny, faxy…). K prohledávání emailů stačí správně nakonfigurovat poštovní program – většina LDAP podporuje (Pegasus, Outlook, Netscape, Mozilla…). Když už píšu o Netscape – jejich Navigator 4.5 nebo vyšší si umí přes LDAP (pokud máte na LDAP serveru příslušné objekty a nastavena práva – u Netscape tomu říkají Roaming Access) uložit konfiguraci (adresář, cookies, filtry, záložky, historie, certifikáty…) – což je velmi výhodné nejen pro toho, kdo cestuje (kolikrát já už nějakým způsobem ztratil svoje bookmarky!).

Na Linuxu máme jako vždy několik možností. Co se týče serveru, bude pravděpodobně nejjednodušší použít OpenLDAP server, který vyvíjí open source komunita. Kdo chce, může začít s původním SLAPD serverem Mičigenské univerzity nebo použít jednu z komerčních distribucí např. od Innosoftu, ale my se nyní podíváme blíže právě na OpenLDAP.

V balíku naleznete vlastní démon (slapd), replikační server (slurpd), konzolové programy (LDAP klient, údržba databáze…), klientskou knihovnu a pomůcky pro export/import. Po klasickém ‚./configure;ma­ke;make install‘ (OpenLDAP můžete samozřejmě získat i ve formě RPM) nás čeká jednoduchá konfigurace. OpenLDAP server k uchování dat používá LDBM kompatibilní databázi (Sleepycat Berkeley DB 2.7.5 nebo GDBM), SHELL nebo passwd, což bohatě stačí, pokud uvážíme, že se data nějak zvlášť neaktualizují. Po startu démona stačí vytvořit ldif soubor a pomocí utility ldapadd data vložit. Nakonec můžete vše ještě otestovat programem ldapsearch. Komu se nebude líbit tento jednoduchý klient, může si vybrat z mnoha jiných (nejen pro Linux).

Našli jste v článku chybu?