LDAP alapok

Innen: AdminWiki

Ez a fejezet lényegében az alábbi diplomamunka kivonata - köszönet a szerzőnek!

Még erősen hiányos - TODO!

Címtár

A címtár fogalma egy 1998. körül kidolgozott szabványon alapul, amely egyetlen elosztott, hierarchikus (fa szerkezetű), objektum orientált adatbázis (directory, címtár) elvi megvalósítását definiálja. Ebben a szabványban az adatbázis-hozzáférés kliens (Directory User Agent - DUA) - szerver (Directory Service Agent - DSA) jellegű és a kommunikáció módja a DAP (directory access protokol).

A fenti modellt egyszerűsítette az 1993-ban kiadott RFC 1487 és az ezen alapuló más RFC-kkel definiált LDAP (Lightweight Directory Access Protocol - inkább modell), amely logikailag szakít az "egyetlen fa" adatbázissal és technikailag TCP/IP kommunikációt határoz meg.

A címtár, mint szolgáltatás

A címtár olyasmi, mint egy relációs adatbázis, de magában foglal egy részletesebb, tulajdonság alapú információkezelést. A címtárban az információt általában gyakrabban olvassák, mint írják. A címtárakat összetett kérdések gyors megválaszolására hangolják, ezért széles körben replikálják az információkat, hogy növeljék az elérhetőséget és a rendelkezésre állást, miközben csökkentik a válaszidőt. A többszörözött címtár információk egyes példányai között átmeneti rendezetlenség megengedett (nincs tranzakciós szemlélet, nem jelent problémát az adatok rövid ideig tartó inkonzisztenciája).

LDAP információs modell

Az LDAP szerveralkalmazások mindegyikének ugyanúgy kell reprezentálnia az általa tárolt információt, függetlenül attól, hogyan tárolja azt. Ennek az információs modellnek az alapja a címtár információs fa (Directory Information Tree - DIT). Ebben a fában minden csomópontnak nulla vagy több gyermek csomópontja lehet és a gyökér csomópontot leszámítva minden csomópontnak, pontosan egy szülője van. Az információ a fa csomópontjaiban tárolódik. Az LDAP információs modell lehetőséget ad arra, hogy a DIT egyes alfái más-más DSA-kon legyenek, ezzel valósítva meg a DIT elosztottságát (az X.500 modell szerint a világon egy egységes DIT létezik, aminek egyes alfái vannak csak elszórva és egy alfa csak egyszer használható, de az LDAP-hoz kapcsolódó információs modell ezt már nem követeli meg ilyen szigorúan).

A kép eredetije: http://www.zytrax.com/books/ldap/ch2/

A DIT minden csomópontjának adott hierarchia szinten egyedi nevet adunk (Relative Distinguished Name - RDN). A teljes DIT-ben az egyes csomópontok helyét egyértelműen megadja a gyökértől az adott csomópontig vezető úton vett csomópontok RDN-jeinek összessége (ez maga a Distinguished Name azaz a DN). A DIT szerkezetéből adódóan a névtárban nincs két elem, aminek azonos lenne a DN-je. Az RDN-ek típus=érték alakú párok, a teljes DN ilyen RDN-ek vesszővel elválasztott sorozata (pl.: DN: cn=Robert Smith, ou=people, dc=example, dc=com).

LDAP objektumok

A DIT csomópontjaiban található információt attribútum halmazok írják le. Objektum orientált szemlélettel minden csomópont egy vagy több LDAP osztály példánya, amely osztály meghatározza, hogy egy őt reprezentáló adatnak mik a kötelező és a lehetséges attribútumai. Egy attribútum egy névazonosítót és egy vagy több érteket tartalmaz. Az attribútumnak van típusa (pl. string, numeric stb.), mely meghatározza a lehetséges értékek formai követelményeit (szintaxis) valamint egy összehasonlítási szabálya, mely szerint az értékek azonosnak tekinthetőek (pl.: caseIgnoreMatch - kis és nagybetű különbségére érzéketlen). Minden csomópontnak kötelező attribútuma az általa megvalósított osztályok felsorolása (ObjectClass), illetve léteznie kell minden, az aktuális RDN-ben (azonosítóban) szereplő attribútumnak is.

A kép eredetije: http://www.zytrax.com/books/ldap/ch2/

Egy csomópont adatainak szöveges leírására az RFC 2849-ben definiált LDAP Data Interchange Format (LDIF) használatos. Egy konkrét példa egy LDIF bejegyzésre az alábbi:

dn: cn=Kiss Irma, ou=Bakfis, c=hu
objectclass: top
objectclass: person
objectclass: posixaccount
cn: Kiss Irma
sn: Kiss
mail: kissir@bakfis.hu
loginShell: /bin/bash
uidNumber: 1000
gidNumber: 1000
HomeDirectory: /home/kissir

Mindig az első sorban található az adatelem teljes DN-je. Utána jönnek az attribútum név és érték párok kettősponttal elválasztva. Ezeknek a sorrendje nem meghatározott. A többszörös értékű attribútumok többször vannak felsorolva. Az attribútum nevekben a nagy és kisbetűket nem különböztetjük meg egymástól.

Az LDAP szabvány előírja, hogy minden attribútum és osztály névnek globálisan egyedinek kell lennie ezért minden sémaelemet (attribútum definíciót és osztályt) globálisan egyedi azonosítóval látnak el. Ez az azonosító az OID (Object Identifier). Az OID hierarchikusan felépülő számsor (pl.: az Internet OID-e: 1.3.6.1 de OID-t használnak az pl. az SNMP objektumok azonosítására is), melyek formátumát az X.680-683 ITU szabványok definiálják. Elvileg mindenki definiálhatna saját OID-t (ha igényel ilyen számtartományt a IANA-tól), de erre általában nincsen szükség. Létezik tesztelésre használható ("nem route-olható") OID tartomány (1.1.x) is.

Az osztályok között egyszerű, egyszeres öröklődés valósítható meg. Az LDAP ismer abstract (az öröklődés alaposztályai, az adatok az ilyen osztályokat nem valósítják meg közvetlenül), structural (minden adat pontosan egy ilyen típusú osztályt valósíthat meg) és auxiliary (egy adat tetszőleges számú ilyen típusú osztályt megvalósíthat) típusú osztályokat.

LDAP séma

Egy DIT alfa nem építhető fel ötletszerűen, illeszkednie kell (legalább) egy sémára. Az LDAP séma nem más, mint a rendszer által használható LDAP osztályok definíciója.

TODO!

Irodalom