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 objectClass má objectCategory 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 |
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
.

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.
V 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
- Použití adresářových služeb v informačních systémech - Na českém internetu jsem narazil na velmi pěkný zdroj informací a to je diplomová práce Karla Benáka
- Využití LDAPu v praxi - další zajímavý český zdroj
- How Active Directory Searches Work - velice pěkný článek popisující LDAP s přihlédnutím k AD a následně vyhledávání
- Active Directory Architecture
- Default Active Directory Attributes in the Windows 2000 Schema
- Active Directory Attributes in Windows 2000 and Windows 2003
Komentáře
Skvele! Diky!
Perfektní článek, díky!
Stručně a jasně vysvětleno, co jsem potřeboval vědět.
vyborny clanek
Skvělý článek. Děkuji.
Perfektní..! Thenks
největší vrušení, děkuju !
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 :)
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??
sakra Michale, proč se s tím svěřuješ tady?
moc komerční
coool
odpověď na [1]Martin: Hezké
Ahoj suprový článek, lepší jak Peterka!
Super článek, díky za jemný úvod do AD:)