700 likes | 854 Views
Lightweight Directory Access protocol (LDAP). Projektování distribuovaných systémů Lekce 16 Ing. Jiří ledvina, CSc. Agenda. Motivace Pochopení LDAP Informační struktura Jména Funkce a operace Bezpečnost Model protokolu Mapování na transportní služby Protokol kódování Diskuse.
E N D
Lightweight Directory Access protocol (LDAP) Projektování distribuovaných systémů Lekce 16 Ing. Jiří ledvina, CSc.
Agenda • Motivace • Pochopení LDAP • Informační struktura • Jména • Funkce a operace • Bezpečnost • Model protokolu • Mapování na transportní služby • Protokol kódování • Diskuse Projektování distribuovaných systémů (72 stran)
Adresáře • Off-line adresáře – telefonní seznamy, … • On-line adresáře – udržované v elektronické podobě a také přístupné v elektronické podobě • Vlastnosti on-line adresářů • Dynamické • Vkládání, mazání, aktualizace záznamů • Flexibilní • Ukládání různých typů informací • Text, video, audio, certifikáty, … • Informace o nastavení aplikace • Zabezpečené • ACL – Access Control List – práva přístupu uživatelů • Personalizovatelné • Možnost uchovat specifické informace pro jednoho uživatele Projektování distribuovaných systémů (72 stran)
Typy adresářů podle použití • Aplikační adresáře (IBM Lotus Notes, …) • Vlastní systém ukládání záznamů, orientované na aplikaci • Adresáře síťových OS • Microsoft Active Directory (LDAP, Kerberos, CIFS – Common Interface File Systém) • Novell Directory Services • NIS – Network Information Services (SUN) • Účelové adresáře • DNS • Univerzální standardizované adresáře • X.500, LDAP Projektování distribuovaných systémů (72 stran)
Adresářové služby a databáze • Databáze jsou složitější • Složité dotazy • Propojení mnoha tabulek • Možnost realizace transakcí • Srovnatelný poměr mezi čtením a ukládáním dat • Velká režie • Adresářové služby • Jednoduché dotazy • Převládá čtení nad zápisy • Nepožadují transakční zpracování • Decentralizované uložení informace • Možnost replikací Projektování distribuovaných systémů (72 stran)
Motivace a vývoj • Zvyšování spolehlivosti síťových zařízení • Potřeby v informacích • Funkčnost • Jednoduchost použití • Administrace • Konzistentní organizace • Integrita • Důvěrnost Projektování distribuovaných systémů (72 stran)
X.500 • X.500 standard. CCITT 1988 • Refer ISO 9594 – X.500-X.521 of 1990 Projektování distribuovaných systémů (72 stran)
Základní prvky X.500 • DIT – Directory Information Tree • Adresářový strom • Hierarchická struktura • Listy obsahují informaci (data) • Uzly uvnitř stromu informační vazby • DN – Distinguished Name • Jméno použité pro rozlišení informace (od kořene stromu) • Sestává z relativních DN (RDN) – rozlišení v podstromu (větvi stromu) Projektování distribuovaných systémů (72 stran)
DN a RDN Projektování distribuovaných systémů (72 stran)
X.500 • Organizace položek adresáře do hierarchického stromu • Výkonné prostředky pro vyhledávání • Často používán pro propojení nekompatibilních systémů • Používá DAP pro komunikaci klientů a serverů • DAP (App. Layer) požaduje celý OSI zásobník • Příliš obtížné pro malé aplikace • Mnoho informací uloženo na mnoha serverech včetně replik Projektování distribuovaných systémů (72 stran)
X.500 • Síťová aplikace typu server/klient • DUA – Directory User Agent • DSA – Directory Server Agent • Předpokládá připojení klienta k libovolnému serveru, který má vazby na X.500 servery • Klientovi se databáze jeví jako kompaktní (obdoba DNS) • Princip modifikace informace tam, kde vzniká • Dotazování mezi X.500 servery (různé způsoby dotazování) • Protokol pro komunikaci klient/server – DAP (Directory Access Protocol • Protokol pro komunikaci mezi servery (? SAP – Server Access protocol) Projektování distribuovaných systémů (72 stran)
Přechod DUA X.500 na LDAP • X.500 – (DAP + OSI) - standardizace ITU 1980 • LDAP – (TCP/IP) – 1993 • Tim Howes (University of Michigen) • Steve Kille (Isode Limited) • Wengyik Yeong (Performance Systems • LDBP Lightweight Directory Browsing Protocol • ASN.1 + LBER • Lightweight BER (zjednodušení zpracování při zachování transparentnosti reprezentace dat • BER, ale textuální reprezentace Projektování distribuovaných systémů (72 stran)
Přechod DUA X.500 na LDAP • Původně představa vytvoření brány mezi jednoduchým klientem a protokolem DAP (komunikace DUA/DSA) • Později náhrada této brány vlastním serverem + úložištěm dat • Komunikace DAP nahrazena LDAP • Nyní protokol LDAP verze 2 nebo 3 Projektování distribuovaných systémů (72 stran)
LDAP Server Projektování distribuovaných systémů (72 stran)
Adresářový strom a adresářová struktura Projektování distribuovaných systémů (72 stran)
Co je to LDAP? • Lightweight Directory Access Protocol • Používá se pro přístup k informaci a pro její úpravu v adresářích budovaných na X.500 model • Specifikace definuje obsah zpráv přenášených mezi klientem a serverem. • Zahrnuje operace pro vytváření a ukončování spojení se serverem Projektování distribuovaných systémů (72 stran)
Pochopení LDAP • Zjednodušená varianta k DAP • Používá TCP/IP zásobník místo zásobníku ISO/OSI • Některé funkce zjednodušuje a jiné vynechává … • K reprezentaci dat používá řetězce místo DAP notace ASN.1 Projektování distribuovaných systémů (72 stran)
Komponenty LDAP • Standardizovaný přístup k adresářovým službám • Zahrnuje 4 modely • Komponenty • LDIF – LDAP Data Interchange Format • Standardizovaný formát pro výměnu dat (BER, LBER) • LDAP server • LDAP klient • LDAP API – rozhraní pro vývoj vlastních aplikací • C, PERL, Java, CGI, … Projektování distribuovaných systémů (72 stran)
LDAP schéma • Množina definic pravidel nad adresářovým stromem • Definuje třídy objektů (objectclass) • Definuje množinu povinných a nepovinných atributů • Definuje jednotlivé atributy Projektování distribuovaných systémů (72 stran)
Příklad - OID organizace objectclass ( 1.3.6.1.4.1.98546.1.2.1 NAME 'exampleObject' DESC 'example.org objects' SUP top AUXILIARY MUST displayName MAY uniqueIdentifier ) Projektování distribuovaných systémů (72 stran)
Příklad - OID organizace objectclass ( 1.3.6.1.4.1.98546.1.2.1 NAME 'exampleObject' DESC 'example.org objects' SUP top AUXILIARY MUST displayName MAY uniqueIdentifier ) objectclass ( 1.3.6.1.4.1.98546.1.2.2 NAME 'examplePerson' DESC 'example.org people' SUP exampleObject AUXILIARY MAY ( personalTitle $ ou )) objectclass ( 1.3.6.1.4.1.98546.1.2.3 NAME 'exampleGroup' DESC 'example.org group' SUP top STRUCTURAL MUST displayName MAY ( member $ description $ owner )) Projektování distribuovaných systémů (72 stran)
Příklad adresářové položky (LDIF) dn: cn=John Doe,dc=example,dc=com cn – uzel RDN dc – rodičovské DN dn – Domain Name, dc – Domain Component, cn – Canonical Name cn: John Doe givenName: John atribut sn: Doe atribut telephoneNumber: +1 888 555 6789 telephoneNumber: +1 888 555 1232 mail: john@example.com manager: cn=Barbara Doe,dc=example,dc=com objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top Projektování distribuovaných systémů (72 stran)
LDAP • Informační struktura • Struktura informace uložená v LDAP adresáři • Jmenná struktura • Jak je informace uložena a pojmenována. • Funkční struktura a operace • Popisuje jak mohou být operace prováděny nad informacemi uloženými v LDAP adresáři • Bezpečnost • Popisuje jak může být informace chráněna před neautorizovaným přístupem Projektování distribuovaných systémů (72 stran)
LDAP uložení informace Projektování distribuovaných systémů (72 stran)
LDAP uložení informace • Každý atribut je popsán typem/syntaxí a hodnotou • Může definovat jak se budou hodnoty chovat během operací prohledávání adresářů • Syntax může být: bin, ces, cis, tel, dn,atd. • bin – binární informace • ces – case exact string (directory string), při porovnávání rozlišuje malá/velká písmena • tel – telefonní číslo, reprezentace jako řetězec, mezery jsou ignorovány • dn – rozlišující jméno (distinguished name) • Generalized time – rok, měsíc, den a čas reprezentovány jako tisknutelný řetězec • Postal address – poštovní adresa s řádky oddělenými znakem ‘$’ Projektování distribuovaných systémů (72 stran)
Rozumné strukurální třídy dle RFC • Není třeba vymýšlet vlastní třídy • Lépe je využít to, co je hotové a kombinovat • Případně rozšiřovat existující třídy o vlastní atributy Projektování distribuovaných systémů (72 stran)
Obecné atributy LDAP Projektování distribuovaných systémů (72 stran)
LDAP uložení informace • Každá položka popisuje objekt (Class) • Osobu, server, zařízení, atd. • Příklad položky: • InetOrgPerson(cn, sn, ObjectClass) • Příklad atributů: • cn (cis), sn (cis), telephoneNumber (tel), ou (cis), owner (dn), jpegPhoto (bin) Projektování distribuovaných systémů (72 stran)
Identifikátory objektů • Globální OID • Unikátní v celém světě • ID globálních objektů přidělovány centrální autoritou (IANA) • OID vychází ze záznamu tečkovou notací (čísla, jména) • OID = 1.3.6.1.4.1.x • x je přípona, kterou přiděluje IANA • ZČU má přiděleno číslo 11433 • Další podskupiny si organizace určuje sama Projektování distribuovaných systémů (72 stran)
Soubor informací o objektech • Záznamy – informace o objektech • Objektová třída – množina atributů • Atributy jsou popsány vlastnostmi • Mohou nabývat jednu nebo více hodnot • Forma reprezentace dat (syntaxe) – RFC 2252 • Definují sadu pravidel • Atributy mají jedinečný prefix (tečková notace) Projektování distribuovaných systémů (72 stran)
Syntaxe některých typů Projektování distribuovaných systémů (72 stran)
Pravidla shody Projektování distribuovaných systémů (72 stran)
Aliasy Projektování distribuovaných systémů (72 stran)
Atributy • Mají definován • Typ hodnoty • Povolené operace • Definované také pomocí OID • Mohou být • Uživatelské – definované uživatelem • Operační – obsahují systémové informace Projektování distribuovaných systémů (72 stran)
Definice atributu dle RFC2252 AttributeTypeDescription = "(" whsp numericoid whsp ; Identifikátor Typu atributu [ "NAME" qdescrs ] ; Název používaný typem atributu [ "DESC" qdstring ] ; Popis [ "OBSOLETE" whsp ] [ "SUP" woid ] ; Odvození od jiného typu atributu [ "EQUALITY" woid ; Název pravidla shody pro shodu [ "ORDERING" woid ; Název pravidla shody pro porovnání [ "SUBSTR" woid ] ; Název pravidla shody pro podřetězec [ "SYNTAX" whsp noidlen whsp ] ; OID syntaxe [ "SINGLE-VALUE" whsp ] ; Standardně vícehodnotové [ "COLLECTIVE" whsp ] ; Standardně not collective [ "NO-USER-MODIFICATION" whsp ]; Standardně modifikovatelné uživatelem [ "USAGE" whsp AttributeUsage ]; Standardně userApplications whsp ")" Projektování distribuovaných systémů (72 stran)
LDAP jména • DN skládá se ze sekvence relativních DN • cn=John Smith,ou=Austin,o=IBM,c=US • Directory Information Tree (DIT) • Vytváří se podle geografických nebo organizačních schémat • Aliases: podobné stromům • Aliases mohou odkazovat na uzly stromu, které nejsou listy Projektování distribuovaných systémů (72 stran)
LDAP jména • Schema • Definuje povolené třídy objektů • Definuje kde jsou uloženy • Definuje jaké mají atributy (objectClass) • Definuje které atributy jsou volitelné (objectClass) • Definuje typ/syntaxi každého atributu (objectClass) • LDAP schema musí být čitelné klientem Projektování distribuovaných systémů (72 stran)
LDAP příklady jmen Projektování distribuovaných systémů (72 stran)
LDAP funkce a operace • Ověřování • BIND/UNBIND – připojení/odpojení • ABANDON – opuštění – zrušení operace • Dotazování • Search - vyhledání • Compare entry - porovnání • Opravy • Add an entry – přidání položky • Delete an entry (pouze listy stromu, ne aliasy) – zrušení položky • Modify an entry, Modify DN/RDN (jméno, relativní jméno) – modifikace položky nebo jména položky Projektování distribuovaných systémů (72 stran)
Komunikace klient/server • Klient vytváří relaci se serverem (BIND) • Podle DNS jména/IP adresy a portu • Bezpečnost • Ověřování založené na ID uživatele a heslu • Anonymní připojení – implicitní práva přístupu • Podpora Kerbera a šifrování • Klient provádí operace • Read/Update/Search • SELECT X,Y,Z FROM PART_OF_DIRECTORY • Klient ukončuje relaci (UNBIND) • Klient může relaci přerušit (ABANDON) Projektování distribuovaných systémů (72 stran)
Operace BIND/UNBIND/ABANDON • Požadavek obsahuje verzi LDAP, jméno pod kterým se chce klient připojit, typ ověřování • Jednoduché – anonymní, jednoduché nešifrované heslo • Kerberos v4 k LDAP serveru (krbv42LDAP) • Kerberos v4 k DSA serveru (krbv42DSA) • Server odpovídá indikací stavu • UNBIND: ukončuje relaci • UnbindRequest ::= [APPLICATION 2] NULL • ABANDON: • MessageID to abandon Projektování distribuovaných systémů (72 stran)
Operace vyhledávání a porovnávání • Požadavek zahrnuje • baseObject: an LDAPDN • Scope: kolik úrovní stromu má být prohledáváno • derefAliases: zpracování aliasů • sizeLimit: max počet vrácených položek • timeLimit: max čas prohledávání • attrsOnly: vrací typy atributů nebo také jejich hodnoty • Filter: podmínky které mají být splněny při prohledávání • Attributes: seznam atributů, ke kterým se hledá odpověď • Čtení i výpis seznamu je realizován jako vyhledávání • Porovnání: podobné vyhledávání, ale vrací true/false Projektování distribuovaných systémů (72 stran)
Parametry vyhledávání • Base – prohledávání podle DN (strom, podstrom) • Size – maximální počet položek • Attributes – seznam atributů, které se mají vrátit • Attrsonly – • true – hodnoty/atributy • False – pouze seznam atributů • Scope – hloubka prohledávání • Time – maximální doba prohledávání • Search_filter – omezení prohledávání na specifické atributy nebo jejich hodnoty • “objectclass = *” “cn=novak*” Projektování distribuovaných systémů (72 stran)
Rozsah prohledávání • Base • Omezeno pouze na základní objekt • Informace o uživatelích • One level • Omezeno pouze na následující úroveň (potomky) • Informace o členech organizace • Subtree • Prohledání celého podstromu Projektování distribuovaných systémů (72 stran)
Filtrování, operátory filtrování • Vyhledají se objekty podle DN a rozsahu vyhledávání • V dalším kroku je možné vytvořit podmnožinu podle zadaných kritérií filtrování • Jednoduché operace • Logické &, |, ! • Relační • ~= - přibližně stejné • >= - větší nebo rovno • <= - menší nebo rovno • * - libovolné Projektování distribuovaných systémů (72 stran)
Filtrování, operátory filtrování • Příklady • (objectClass=název objektu) • (cn=Josef P*) • (|(uid=novak)(uid=patek)) • (&(|(uid=Petr)(uid=Pavel))(objectclass=person)) Projektování distribuovaných systémů (72 stran)
LDAP URL • RFC 4516 • ldap://host:port/DN?atributy?scope?filter?extensions • Host – jméno nebo adresa LDAP serveru • Port – síťový port • DN – jméno použité jako základ pro prohlrdávání • Atributy – seznam atributů oddělených čárkou • Scope – rozsah prohledávání (base, one, sub) • Filter – filtr prohledávání (RFC4515) – objectClass=* Projektování distribuovaných systémů (72 stran)
LDAP URL • ldap://foo.bar.com/dc=bar,dc=com • ldap://argle.bargle.com/dc=bar,dc=com??sub?uid=barney • ldap://ldap.bedrock.com/dc=bar,dc=com?cn?sub?uid=barney • ldap://ldap.zcu.cz:389/uid=ledvina, ou=Users, ou=rfc2307, o=zcu, c=cz??base?(objectClass=*) • Scope • Base • One • Sub Projektování distribuovaných systémů (72 stran)
Příklad výpisu Softerra LDAP Browser 2.5 #------------------------------------------------------------------------------- # This file has been generated on 04.15.2008 at 11:33 from ldap.zcu.cz:389 # by Softerra LDAP Browser 2.5 (http://www.ldapbrowser.com) #------------------------------------------------------------------------------- version: 1 dn: uid=ledvina,ou=Users,ou=rfc2307,o=zcu,c=cz objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: pleiadesPerson Projektování distribuovaných systémů (72 stran)
Příklad výpisu Softerra LDAP Browser 2.5 uid: ledvina uidNumber: 1330 gidNumber: 100 givenName: Jiri loginShell: /bin/tcsh homeDirectory: /users/l/ledvina/home mail: ledvina@kiv.zcu.cz cn: Jiri LEDVINA sn: LEDVINA Projektování distribuovaných systémů (72 stran)