LDAP

Tomas Pyszko, 139625 at mail.muni.cz

Obsah

X.500

X.500 je série standardů vyvinutých organizací ITU ( International Telecommunication Union ):

ITU-T number ISO/IEC number 9594-x Title of Standard
X.500 ISO/IEC 9594-1 The Directory: Overview of concepts, models and services
X.501 ISO/IEC 9594-2 The Directory: Models
X.509 ISO/IEC 9594-8 The Directory: Public-key and attribute certificate frameworks
X.511 ISO/IEC 9594-3 The Directory: Abstract service definition
X.518 ISO/IEC 9594-4 The Directory: Procedures for distributed operation
X.519 ISO/IEC 9594-5 The Directory: Protocol specifications
X.520 ISO/IEC 9594-6 The Directory: Selected attribute types
X.521 ISO/IEC 9594-7 The Directory: Selected object classes
X.525 ISO/IEC 9594-9 The Directory: Replication
X.530 ISO/IEC 9594-10 The Directory: Use of systems management for administration of the Directory

Standardy se zabývají adresářovými službami, zahrnují protokoly:

V praxi se však tento komplexní model ne zcela prosadil, zvláště pro svou velikost a složitost. Existuje však řada implementací jednotlivých částí X.500, např. LDAP.

LDAP - základní popis

LDAP (Lightweight Directory Access Protocol) je protokol definovaný pro modifikaci a přístup k datům na adresářovém serveru. Adresářový server využívá hiearchické stromové struktury, která je vhodná zejména pro práci s adresáři, informacemi o uživatelích (např. pro vyhledávání adres konkrétních uživatelů v příslušných adresářích, accounting) nebo například může zastoupit některé sítové informační služby (NIS a podobně). Sám neimplementuje složité transakční mechanismy (na rozdíl od relačních databází) ani funkce pro kontrolu integrity.

Protokol LDAP je odvozen od protokolu DAP ( X.500 ) a je implementován hned v několika verzích:

LDAP: Instalace a konfigurace

Jednotlivé implemetnace LDAPu mají vyvořenou řadu manuálů, nemá proto cenu zabývat se všemi najednou. Zaměříme se tedy na jednu z konktretních verzí a to na OpenLDAP. OpenLDAP je jedna z nejrozšířenějších implementací, je to projekt s otevřeným zdrojovým kódem a má své instalační balíčky ve většině dostupných distribucí.

Balíček OpenLDAP obsahuje:

Po instalaci příslušného balíčku nebo instalaci ze zdrojových kódu standadní cestou "./configure, make, make test a make install" nás bude nejprve zajímat konfigurační soubor slapd.conf.

Výchozí nastavení tohoto souboru obsahuje několik atributů a nastavení, ze kterých si popíšeme jen ty základní:

#slapd.conf:
#".shcema" soubory obsahují definice jednotlivých atributů a tříd
#jejich formát je například nasledující:
#attributetype ( 1.3.6.1.1.1.1.17 NAME 'ipProtocolNumber'
#        EQUALITY integerMatch
#        SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema

#soubor pro uchování identifikačního čísla procesu
pidfile         /var/run/slapd/slapd.pid

#soubor s postupem pro spuštení démona slapd
#příklad:
#/usr/sbin/slapd -g openldap -u openldap -f /etc/ldap/slapd.conf
argsfile        /var/run/slapd/slapd.args

loglevel        none

#dynamicky načítané moduly
modulepath      /usr/lib/ldap
moduleload      back_hdb

#maximální počet záznamů, vrácených při hledání
sizelimit 500

#počet procesorů použitých pro indexování
tool-threads 1

#backend - poskytuje rozhraní a funkce
#hdb je návrh hierarchické stromové databáze
backend         hdb

#specifická direktiva databáze
database        hdb

#kořenový adresář v databázi
suffix          "dc=com"


directory       "/var/lib/ldap"
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index           objectClass eq
lastmod         on
checkpoint      512 30


#a na závěr přístupová práva
#povolíme číst všem cokoli ( v řadě případů nežádoucí, vhodné pro ladění ) 
access to *
        by * read

#povolíme zápis uživateli "admin"

access to *
        by dn="cn=admin"  write

LDAP: Informační model - schéma

Úkolem informačního modelu LDAPu je definovat datové typy a informace, které lze v adresářovém serveru ukládat. Jak již bylo řečeno, informační data jsou v LDAPu uložena ve formě stromové struktury. Tato struktura se nazývá DIT (Directory Information Tree) a má vrchol rootDSE, který obsahuje globální informace o adresáři a nemá jméno, čí třídu. Jednotlivým záznamům se v LDAPu říká objekty a ty jsou tvořeny skupinou atributů, které maji vždy typ a alespon jednu hodnotu. Implementace informačního modelu se nazývá schéma, které definuje strukturu a obsah každého objektu, jenž může být v adresářové službě vytvořen.

Běžně používané atributy v AD:

jménopopis
givenNamekřestní jméno
snsurname - příjmení
descriptionpopis
mailadresa elektronické pošty
companyjméno společnosti
departmentoddělení ve firmě

Příklad datových typů atributů:

datovy typ popis
intinteger
binbinary data
ciscase insensitive string
cescase exact string
dndistinguished name
teltelephone number

Je vhodné konstatovat, že záznam nemusí být instancí pouze jedné objektové třídy. Třídy jsou ve schématu uspořádány hierarchicky a mohou být trojice různých druhů, od kterých se pak odvíjí možnost jejich využití a kombinace v definici záznamu.

LDAP: Jmenný model

Na rozdíl od informačního modelu, se jmenný model zabývá uložením záznamu ve stromové struktuře. Každý záznam musí v rámci celého stromu serveru obsahovat svůj jedinečný identifikátor DN ( Distinguished Name ) a také relativní identifikátor RDN (Relative Distinguished Name) v rámci jedné úrovně větve.

Mějme například doménový strom a v něm jedinečný záznam dn="uid=erigona dc=lab dc=fi dc=muni dc=cz", takovýto strom by měl v rámci nejnižší úrovně RDN="uid=erigona"

LDAP atributjménoAD atribut jméno
CN Common Name CN Common Name
OU Organization Unit OU Organization Unit
O Organization DC Domain Component
C Country - -

LDAP: Funkční model

Jedním z dalších modelů LDAPu je funkční model. Ten zajištuje základní operace pro manipulaci a přístup k datům, umožnuje tedy zjistit jejich stav, či měnit jejich obsah.

Pro přístup k databázi jsou určeny operace bind a unbind. Rovněž každý adresářový server podporuje základní operace nad daty a to jak s pomocí základních utilit pro hledání, mazání, porovnávání a modifikování záznamů, tak i za pomocí jednotlivých knihovních funkcí řady programovacích a skriptovacích jazyků (např. NET::LDAP v perlu).

oblastoperacepopis
autentizace (Authentication)bindinicializuje spojení, vyjednává o metodě autentizace, autentizuje
unbind ukončí session
abandon klient žádá o ukončení posílání výsledků na poslední dotaz
dotazování (Interrogation) search výběr dat z určitého regionu pomocí filtru
compare porovná hodnotu atributu se zadanou hodnotou
aktualizace (Update) add vytvoří nový objekt
modify upraví atributy záznamu (vytvořit, smazat, upravit)
modify RDN slouží k přesunutí objektu v rámci stromu adresáře
delete smazání záznamu

LDAP: Bezpečnostní model

Tento model má za úkol řídit přístup k databázi a to díky implementované autentizaci a autorizaci.

LDAP autentizace

Umožnuje autentizovat uživatele hned několika způsoby a to:

LDAP autorizace

Proces který nastupuje po uspěšné autentizaci. Nyní už víme o jakého uživatele se jedná, ale to neznamená, že mu povolíme vše. Daný uživatel muže nad databází provádět pouze to, co je mu dovoleno.

Příkladem je třeba povolení administrátoru zapisovat do databáze:

access to *
        by dn="cn=admin"  write

Toto nastavení se provádí v konfiguračním souboru slapd.conf

LDAP: Nástroje

LDAP: LDIF formát

Literatura