www.SAMURAJ-cz.com 

17.12.2017 Daniel Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Adresářové služby a LDAP

Pátek, 14.09.2007 14:11 | Samuraj - Petr Bouška |
Tento článek pouze stručně popisuje adresářové služby, hlavně se zaměřením na Active Directory, a dále protokol pro komunikaci s adresářovými službami LDAP. V praxi se často zaměňují termíny adresář, adresářová služba a LDAP a článek vysvětluje vzájemné vazby mezi nimi. Jedná se o teoretický úvod k praktickému použití LDAPu v PHP.

Adresář

Adresář (directory) je databáze (hierarchická struktura), v které jsou uloženy informace o pojmenovaných objektech na síti, které jsou organizovány a sdružovány do skupin. Příkladem je počítač, tiskárna, služba, doména či uživatelský účet. Adresář se liší od relační databáze, je navržen pro časté čtení a vyhledávání a pouze občasný záznam. V adresáři můžeme uchovávat data různých typů, jako text, digitální certifikát či obrázek. Můžeme omezovat přístup k záznamům pomocí ACL (Access Control List).

Adresářová služba

Adresářová služba (directory service - DS) je aplikace či skupina aplikací, které ukládají a organizují informace o uživatelích a zdrojích v počítačové síti. Adresářová služba přistupuje k adresáři, občas označovanému jako adresářové repository (directory repository). Adresářová služba také funguje jako centrální autentizační autorita, která umožňuje (bezpečnou) autentizaci zdrojů (uživatelů, služeb, počítačů).

Adresářová služba zprostředkovává informace z adresáře administrátorům, uživatelům, aplikacím apod. Adresářová služba vytváří fyzickou síťovou topologii a protokoly tak, aby vše bylo transparentní pro uživatele. Adresářová služba může být součástí operačního systému nebo také aplikace (např. elektronická pošta). Adresářové služby využívá většina síťových operačních systémů.

Adresářové služby jsou velmi vhodné pro určité účely, které jsou ve stylu kartotéky, tedy správa uživatelů, telefonních čísel a podobných dat. Stejně hojně se využívá vlastnosti pro autentizaci. Naopak oproti klasickým relačním databázím mají některé nevýhody, jako kontrola dat (referenční integrita apod.), složité dotazy, obsáhlé modifikace.

Rozšířeným příkladem adresářové služby je Active Directory (AD) firmy Microsoft. AD využívá LDAP (stejně jako většina adresářových služeb) a vyhovuje standardu LDAP v3 popsaném v RFC 3377.

LDAP

LDAP je zkratka pro Lightweight Directory Access Protocol, což je aplikační protokol pro dotazování a modifikaci adresářových služeb nad TCP/IP. V 80tých letech vznikla skupina standardů X.500 (DAP, DSP, DISP, DOP), které pokrývají adresářové služby. Zjednodušením standardu X.500 a zaměřením na TCP/IP vznikl LDAP.

LDAP používá LDAP Data Interchange Format (LDIF), což je standardizovaný textový formát pro výměnu dat. Data jsou při přenosu kódována pomocí Lightweight Basic Encoding Rules (LBER), to však není z důvodu bezpečnosti, ale nehomogenity prostředí, proto je velmi jednoduché data dekódovat.

LDAP je popsán pomocí čtyř modelů

  • informační model - schéma - popisuje strukturu informací (atributy) v adresáři
  • jmenný model - popisuje, jak jsou informace organizovány a odkazovány
  • funkční model - popisuje, co může být uděláno s informacemi
  • bezpečnostní model - jak jsou informace chráněny

Informační model - schéma

Informace v adresáři jsou uloženy ve stromové struktuře, která se označuje jako Directory Information Tree (DIT). Kořenem adresářového stromu je rootDSE, která obsahuje globální informace o adresáři a nemá žádné jméno ani třídu. Informační model je založen na záznamech, které obsahují informace o nějakém objektu (něčem konkrétním), jako je uživatel či počítač. V Active Directory se LDAP záznamům říká objekt. Objekty jsou složeny ze skupiny atributů, které mají vždy typ a jednu nebo více hodnot.

Implementace informačního modelu se označuje jako schéma, což je sada objektů, které definují strukturu a obsah každého objektu, který může být vytvořen v adresářové službě. Schéma tedy definuje všechny možné třídy objektů a atributy. Výchozí schémata pro určitý adresář je možno rozšiřovat, příkladem je doplnění Exchange serveru do AD, které rozšíří schéma dalšími atributy potřebnými pro poštovní služby.

Třídy objektů (object classes) jsou kategorie objektů, které mohou být vytvořeny v adresáři. V LDAPu se používá označení objectClass a může se jednat například o user, computer, organizationalUnit, domain, container, group. Třídy objektů jsou zařazeny do jedné ze tří kategorií Structural, Abstract a Auxiliary.

Pozn.: Objekt může být zařazen do více tříd naráz. Příkladem je uživatel (user) v AD, který je zařazen do tříd top, person, organizationalPerson a user. Nebo počítač (computer) je v top, person, organizationalPerson, user, computer.

Protože bývá objekt zařazen do několika objectClass, tak je hledání méně efektivní a nemusí být přesné (například při hledání podle objectClass=user se naleznou i počítače). Proto můžeme použít hledání podle kategorie objektů, tedy atributu objectCategory. Na rozdíl od objectClassobjectCategory pouze jednu hodnotu (je to classSchema objekt), což by mělo odkazovat na nejvíce specifickou třídu v hiearchii tříd objektů. Může se jednat třeba o user, computer, group, organizationalUnit.

Pozn.: Každý objekt classSchema má atribut defaultObjectCategory, což je pro většinu tříd sama třída. Když při hledání zadáme objectCategory = X, tak X je ldapDisplayName řídy. LDAP automaticky expanduje tento výraz na objectCategory = defaultObjectCategory třídy X. Atribut objectCategory se ukládá ve tvaru distinguished name a LDAP provádí automaticky konverzi do tohoto tvaru.

Atributy objektů (object attributes) jsou charakteristiky (vlastnosti) objektů. Atribut může obsahovat jednu nebo více hodnot, například jméno, příjmení, e-mail. Určité atributy patří k určité třídě objektů a schéma také definuje, které hodnoty musí být vyplněny a které jsou volitelné. Schéma také určuje, jaké typy hodnot může atribut nabývat, například textový řetězec, celé číslo.

Podle toho, kde se nachází objekt ve stromové struktuře, se jedná buď o list (leaf object, nemá žádné potomky) nebo o kontejner (container object). Kontejner v sobě může obsahovat jeden či více objektů.

Následující tabulka ukazuje několik běžných atributů používaných v AD.

jméno popis
sAMAccountName SAM Account Name, přihlašovací uživatelské jméno, které podporuje starší systémy
sAMAccountType typ účtu
userPrincipalName UPN, přihlašovací jméno uživatelského účtu ve tvaru <user>@<DNS-domain-name>
displayName jméno, které využívají aplikace (třeba Exchange)
givenName křestní jméno
sn surname - příjmení
description popis
mail adresa elektronické pošty
company jméno společnosti
department oddělení ve firmě
location umístění
streetAddress ulice
memberOf seznam skupin, kterých je členem

Jmenný model

Distinguished Name - DN

Pro identifikaci objektů se používá Distinguished Name (DN), což je jednoznačný identifikátor objektu a obsahuje úplnou cestu k záznamu (pozici ve stromě). DN se skládá ze jména objektu a jmen jednotlivých kontejnerů a domén, které obsahují objekt, oddělených čárkou. Jednotlivé položky obsahují název atributu a přiřazenou hodnotu atributu, třeba ou=zamestnanci.

Následující obrázek ukazuje příklad části adresáře AD pro doménu firma.cz. V kontejneru (organizační jednotce) zaměstnanci je umístěn uživatel Jan Novák, pro kterého je DN = cn=Jan Novák,ou=zamestnanci,dc=firma,dc=cz.

Část adresáře

Občas nepotřebujeme specifikovat celou cestu k objektu a můžeme pak použít Relative Distinguished Name (RDN), které je relativní a jednoznačné v daném kontejneru. Jedná se o poslední část DN, pro našeho uživatele je RDN = cn=Jan Novák.

Další možnosti identifikace

Běžnou identifikací objektu v LDAPu a také v AD je použití DN, ale existují i další metody speciálně pro Active Directory.

Můžeme použít OID (Object Identifiers), což je hierarchický, unikátní identifikátor, složený s dekadických číslic oddělených tečkou. Jedná se o stejný identifikátor jako u SNMP. Je běžný u X.500.

Active Directory má každý objekt přiřazen jednoznačné 128-bitové číslo, které se označuje GUID (globally unique identifier). Toto číslo je stálé a nemění se při přesunu objektu v rámci lesa.

Active Directory také používá obdobu DN, která se označuje jako AD canonical name a příkladem je zápis firma.cz/zamestnanci/Jan Novák.

Jmenné atributy (Naming Attributes)

Každá část DN je vyjádřena pomocí typ_atributu=hodnota. Typ atributu, který se používá k popisu RDN, se označuje jako jmenný atribut. Každá třída má přiřazen jmenný atribut, například User (uživatel) má cn. Následující tabulka ukazuje jmenné atributy pro LDAP a jejich ekvivalent pro AD.

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

Funkční model

Funkční model LDAPu definuje, co se může provádět s informacemi v adresáři. Jedná se o 9 operací, které jsou zařazeny do 3 funkčních oblastí.

oblast operace popis
autentizace (Authentication) bind inicializuje 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

Pozn.: Active Directory podporuje několik dalších operací, které nejsou definovány v RFC.

Dotazy pomocí LDAPu

Operace search má řadu vstupních parametrů. Jedním z nich je výchozí bod hledání, který určuje kontejner, od kterého níže se bude prohledávat. Dalším důležitým parametrem je filtr.

Ve filtrech můžeme použít matematické operace shoda (atribut=hodnota), větší než (atribut>=hodnota), menší než (atribut<=hodnota) a přibližná shoda (atribut~=hodnota). Jednotlivé filtry můžeme kombinovat pomocí logických operací, používá se zápis (operator(filter1)(filter2)(filter3)). Logické operace jsou AND (&(filter1)(filter2)), OR (|(filter1)(filter2)) a NOT (!(filter1)(filter2)). Také můžeme použít zástupný znak * pro libovolné znaky.

Příklady vyhledávacích filtrů:

(objectCategory=*)                    // všechny objekty
(&(objectClass=user)(!(cn=susan)))    // všichni uživatelé mimo Susan

Bezpečnostní model

Poslední model LDAPu určuje, jak se přistupuje k datům z bezpečnostního hlediska. Souvisí s autentizačními službami z adresářových služeb.

Nástroj ldp.exe

Pokud se díváme do Active Directory, například pomocí Active Directory Users and Computers, tak se záznamy standardně zobrazují pomocí AD canonical name. Pokud bychom chtěli vidět AD z pohledu LDAPu, tak můžeme použít nástroj od Microsoftu, který se nachází v Support Tools a jedná se o ldp.exe. Tento nástroj je zajímavý s řadou funkcí. Hodí se pro testování řady věcí, jako je například vyhledávání (a definování filtrů).

Odkazy

zobrazeno: 48537krát | Komentáře [18]

Autor:

Související články:

Active Directory a protokol LDAP

Správa počítačové sítě ala Microsoft, to je Active Directory. Jedná se o velice rozsáhlou skupinu technologií a služeb. Základem jsou adresářové služby, adresáře a komunikační protokol LDAP.

Pokud se Vám článek líbil, tak mne potěšíte, když uložíte odkaz na některý server:

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře

  1. [1] Martin

    Skvele! Diky!

    Čtvrtek, 31.01.2008 14:26 | odpovědět
  2. [2] Pavel

    Perfektní článek, díky!

    Sobota, 21.02.2009 14:51 | odpovědět
  3. [3] František Němec

    Stručně a jasně vysvětleno, co jsem potřeboval vědět.

    Pátek, 12.06.2009 13:49 | odpovědět
  4. [4] Jirka

    :-O

    Pátek, 12.03.2010 12:02 | odpovědět
  5. [5] Tomas Riha

    vyborny clanek

    Čtvrtek, 22.04.2010 09:57 | odpovědět
  6. [6] Petr Čontofalský

    Skvělý článek. Děkuji.

    Pátek, 23.04.2010 12:22 | odpovědět
  7. [7] Brabeczek

    Perfektní..! Thenks ;-)

    Středa, 28.04.2010 12:47 | odpovědět
  8. [8] Sunset

    největší vrušení, děkuju !;-)

    Pátek, 30.04.2010 12:07 | odpovědět
  9. [9] Karel (Karviná)

    Opravdu kvalitní stránky. Dokonce je používáme ve škole jako studijní materiál.. Lepší manželku než tyto webowky jsem si vybrat nemohl :)

    Pátek, 30.04.2010 12:09 | odpovědět
  10. [10] Michal Jirásek

    Mam problém se kterým si nevědí ani doktoři... Mam řítkou stolici nevíte jak to mam vyřešit prosím váás??:-(

    Pátek, 30.04.2010 12:13 | odpovědět
  11. [11] Blanka Protrhlá

    sakra Michale, proč se s tím svěřuješ tady? :-O

    Středa, 05.05.2010 13:11 | odpovědět
  12. [12] Tomáš Marný

    moc komerční

    Středa, 05.05.2010 13:13 | odpovědět
  13. [13] Dement

    coool

    Pondělí, 16.01.2012 13:11 | odpovědět
  14. [14] Mustafa

    :-)

    Úterý, 20.11.2012 13:14 | odpovědět
  15. [15] Celestýn Pukavec

    ;-)

    Úterý, 27.11.2012 12:53 | odpovědět
  16. [16] SIRKA

    :-)

    Úterý, 14.01.2014 10:55 | odpovědět
  17. [17] pan Ivan

    odpověď na [1]Martin: Hezké

    Úterý, 20.01.2015 12:55 | odpovědět
  18. [18] Standa

    Ahoj suprový článek, lepší jak Peterka!

    Pondělí, 06.02.2017 10:08 | odpovědět
Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O


Ochrana proti SPAMu, zdejte následující čtyři znaky image code

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách