Adresářové služby – úvod do problematiky
Transkript
Adresářové služby – úvod do problematiky
Technická zpráva TEN-155 CZ číslo 4/2000 Adresářové služby – úvod do problematiky Jiří Sitera 7. září 2000 1 Adresářové služby Tato kapitola se snaží o přiblížení pojmu „adresářové služby“ a poskytuje přehled základních informací z této oblasti. 1.1 Jmenné služby Jmenné služby obecně jsou jedním ze základních kamenů síťových technologií a síťové infrastruktury. Mnoho entit vyskytujících se v komunikačních technologiích se identifikuje čísly, přičemž existuje snaha o zavádění dalšího pojmenování těchto entit. V tomto okamžiku vzniká potřeba služby, která zajišťuje vazbu jména na číselnou identifikaci. Používání termínů „číslo“ a „jméno“ je spíše symbolickým, resp. snadno pochopitelným příkladem. Hlavním důvodem pro zavádění jmenného systému není totiž jen zakrytí vnitřních identifikátorů z hlediska člověka „přijatelnějšími“, ale i řada dalších aspektů, především souvisejících se strukturou jmenného prostoru zavedených jmen. Tento jmenný prostor je totiž obvykle strukturovaný – hierarchický a v každém případě nezávislý na omezeních a vnitřní struktuře primárních identifikátorů. Příkladem jmenné služby je DNS (Domain Name System). Jedná se o specializovanou jmennou službu, která poskytuje v rámci sítí TCP/IP a Internetu funkci pro převod IP adres na (DNS) jména. DNS jména mají hierarchický charakter a logickou strukturu nezávislou na struktuře odpovídajících IP adres. Pomocí DNS mohou být dále získávány některé další informace přiřazené jednotlivým jménům, jako jsou například odkazy na tzv. mail exchanger, tj. uzel prostřednictvím kterého je doručována pošta1 . Implementace DNS je navržena tak, aby vyhověla nárokům které jsou na ni kladeny – databáze zahrnuje celý Internet a poskytuje služby všem uzlům v něm zapojeným. Mezi hlavní znaky implementace patří distribuce dat, replikace dat a decentralizovaná správa. Více o DNS viz [DNSAit]. 1 Existují obecnější jmenné služby založené na infrastruktuře DNS, jako je například Hesiod, který slouží k distribuovanému přístupu k informacím typu uživatelé, služby, zdroje, atd. Stejně tak existují obecnější jmenné služby, které jsou samostatné. Jako příklad může sloužit NIS (Network Information System) (viz například také [DNSAit]). 1.2 Adresářové služby Adresářovou službou se rozumí specializovaná aplikace pro ukládání dat, jejich organizaci a přístup k nim. Specifikum je především v datovém modelu, který je rámcem pro práci s daty. Nejjednodušší představa je taková, že data jsou uložena ve formě položek, přičemž každá položka obsahuje několik atributů. Atribut je nositelem dat, tj. má hodnotu. Entry Name Attribute Name Value Obrázek 1: První přiblížení formy uložení dat v adresářových službách entry– položka, attribute–atribut, name–jméno, value–hodnota Na obrázku 1 je naznačen vzájemný vztah položek a atributů. Každá položka má unikátní jméno (globálně v rámci položek – více viz dále) a každý atribut má unikátní jméno v rámci položky2. Jméno položky je strukturované, složené z hierarchicky uspořádaných částí. Logicky jsou takto položky v adresářových službách rozmístěny v hierarchické struktuře, adresářovém stromu. V souvislosti s tím, se setkáváme s pojmem DIT (Directory Information Tree). 1.2.1 DIT – Directory Information Tree Pod pojmem DIT (Directory Information Tree) se rozumí především konkrétní návrh struktury adresářového stromu, jeho větvení, tj. rozčlenění položek a 2 Mohou existovat vícenásobné atributy, které si lze představit buďto jako jeden atribut s více hodnotami nebo jako několik atributů se stejným jménem a různými hodnotami. V podstatě jsou obě představy správné, ale je třeba si uvědomit, že k atributu lze přistupovat pouze na základě jeho jména, takže první představa spíše odpovídá možným operacím. Technická zpráva TEN-155 CZ číslo 4/2000 2 informací jimi nesených do hierarchicky uspořádaných skupin. Pro přiblížení významu DIT je na obrázku 2 je zobrazena část konkrétního adresářového stromu. Je účelné si uvědomit, že takto lze rozdělit položky adresářového stromu na uzly a listy. Uzly definují větve stromu, zatímco listy jsou samostatnými koncovými objekty. Samozřejmě i uzlová položka může nést další informaci, než je pouhá existence větve adresářového stromu, nicméně aby bylo lze umisťovat do příslušné větve nějaké položky musí uzlová položka existovat. zcu.cz <depts> People Staff civ Jiri Siter a Groups Administrators Groups Resources Jiri Siter a Node Leaf Obrázek 2: Stromová struktura adresářových služeb node–uzel, leaf–list Pro návrh DIT – architektury adresářových služeb z hlediska členění adresářového stromu a tím i informací – existuje mnoho různých postupů. Členění konkrétního stromu je totiž právě jedno, přičemž existuje vždy mnoho různých hledisek a vlivů, které je vhodné posoudit. V této oblasti existuje několik prací poskytujících rozbor jednotlivých možností (např. [DITDesign, NS-deploy]). Struktura stromu (DIT) se přímo projeví ve jménech jednotlivých položek. Každá položka obsahuje unikátní jméno, které je složeno z části, která popisuje do které větve adresářového stromu položka patří a z unikátního jména položky v rámci větve. Technická zpráva TEN-155 CZ číslo 4/2000 3 1.2.2 Pojmenování položek – DN (Distinguished Name) DN (Distinguished Name), tj. rozlišovací jméno identifikuje jednoznačně položku v globálním jmenném prostoru adresářového stromu. Rozlišovací jméno se skládá z RDN (Relative Distinguished Name), tj. relativních rozlišovacích jmen. Relativní rozlišovací jméno unikátně specifikuje položku v rámci jedné větve stromu. Rozlišovací jméno se skládá z jednotlivých relativních rozlišovacích jmen, které odpovídají větvím adresářového stromu, kterými je třeba projít v hierarchii mezi položkou a kořenem stromu. Lze říci, že tato hierarchická architektura a způsob pojmenování jednotlivých položek je analogická souborovému systému a jeho adresářové struktuře. Každé relativní rozlišovací jméno je odvozeno od atributu (jména a hodnoty) příslušné položky3. 1.2.3 Příklad – pojmenování atributů, tvorba rozlišovacího jména Pojmenování atributů Každý atribut má své jméno. Existují standardy pro jména a významy běžných atributů. Na tomto místě je třeba poznamenat, že každé položce je přiřazen typ položky (objectclass). Typ položky určuje, které atributy se mohou v položce vyskytovat, přičemž může stanovit skupinu atributů, které se musí v položce vyskytovat. Stejně tak atributy mají přiřazen typ. Zde se jedná pouze o jednoduché typy, jako například celé číslo či řetězec. Tato pravidla jsou definována tzv. schématem databáze. Více o schématu viz kapitola 1.5.2. Některé nejzákladnější atributy, které slouží jako elementy relativního rozlišovacího jména, jsou uvedeny v následující tabulce: Jméno atributu, alias country, c organization, o organizationalUnitName, ou commonName, cn význam jméno (zkratka) státu jméno organizace jméno organizační jednotky „common name“ položky příklad cz zcu civ Jiri Sitera Tabulka 1: Atributy pro relativní rozlišovací jména Rozlišovací jméno Na obrázku 3 jsou doplněny hodnoty některých základních atributů u položek 3 Toto je nejjednodušší případ, obecně je RDN odvozeno od atributů (jednoho nebo více) příslušné položky. Technická zpráva TEN-155 CZ číslo 4/2000 4 zcu.cz <depts> o=zcu, c=cz People ou=People Staff ou=Staff civ ou=civ Jiri Siter a cn= Jiri Sitera Groups ou=Groups Administrators ou=A dministrators Groups Resources Jiri Siter a Node Leaf Obrázek 3: Atributy určující relativní rozlišovací jméno položky Technická zpráva TEN-155 CZ číslo 4/2000 5 v příkladu adresářového stromu. Náš příklad specifikuje podvětev, která je umístěna v oblasti pojmenované dle organizace, v našem případě o=zcu, c=cz V této větvi jsou umístěny všechny objekty (položky) adresářového stromu z uvedeného příkladu, tj. všechna jména budou mít výše uvedenou specifikaci jako suffix. Pro uzly stromu v návrhu DIT jsou v našem příkladu použity atributy ou, organization unit name. Pojmenování objektu uživatele či skupiny je reprezentováno atributem cn. Pak pojmenování neboli rozlišovací jméno (DN) položky uživatele v příkladu je: cn=Jiri Sitera, ou=CIV, ou=Staff, ou=People, o=zcu, c=cz a (položky) skupiny: cn=Administrators, ou=Groups, o=zcu, c=cz 1.2.4 Základní vlastnosti Adresářové služby jsou navrženy pro specifickou oblast aplikací. Jak návrh komunikačního protokolu, tak implementace hlavních částí těchto systémů jsou vedeny snahou o specializaci. Hlavní myšlenkou je specifikace specializovaného datové modelu, který definuje rámec pro ukládání informací a přístup k nim (operace nad nimi). Za adresářové služby lze v podstatě považovat množinu nástrojů pro práci s takto uspořádanými daty (spolu s metodologií k jejich použití). Podstata tohoto přístupu je analogická jako například u relačních databází. Relační model dat je navržen a použit pro usnadnění tvorby složitých datových struktur a slouží také jako základ pro efektivní návrh a realizaci jisté množiny aplikací. Lze říci, že v případě adresářových služeb se jedná o specializovanou databázi určenou především pro realizaci aplikací, které zacházejí s daty, k nímž je velmi intenzivně přistupováno (čtení, prohledávání), ale nejsou příliš často měněna. A pokud jsou měněna, tak pouze velmi jednoduchými prostředky (žádné transakce apod.)4 . 4 Toto je základní představa adresářových služeb. To však neznamená, že se nemohou ukázat rozumnými například snahy o rozšíření možností změn položek v adresářových službách (často se měnící data, jako je např. stav zařízení; podpora jednoduchých transakcí) – otevřené standardy v těchto oblastech otevírají volnou cestu libovolnému vývoji, který se ukáže životaschopným. Technická zpráva TEN-155 CZ číslo 4/2000 6 1.2.5 Základní použití Základním příkladem použití adresářových služeb jsou aplikace jako telefonní seznam (seznam lidí), či databáze zdrojů, například tiskáren či aplikačních serverů. V případě telefonního seznamu mohou adresářové služby obsahovat položky reprezentující jednotlivé lidi, přičemž u každé položky jsou uvedeny atributy s informacemi jako je telefonní číslo, číslo kanceláře, e–mail apod. U objektů popisujících tiskárny může jít například o informace typu formát papíru, rychlost tisku, umístění či cena vytištěné strany. Adresářové služby primárně dovolují uživatelům a aplikacím hledat objekty (lidi, zdroje) dle specifikovaných podmínek. Například jsou určeny pro zodpovídání dotazů typu „hledám uživatele a znám e-mail“ nebo „hledám tiskárnu formátu A4, která umí tisknout barevně“. Adresářové služby mohou samozřejmě sloužit také k získávání informací o konkrétních objektech, tj. znám-li konkrétní specifikaci objektu (například jméno tiskárny), mohu se dotázat na její vlastnosti5 . Adresářové služby Specializované prostředky pro ukládání dat a přístup k nim. Optimalizace návrhu vzhledem k specifickým podmínkám, zejména: – Předpoklad málo se měnících informací. – Předpoklad jednoduchých operací s daty. – Předpoklad majority přístupů, které pouze čtou data, navíc obvykle potřebují data hledat. 1.3 1.3.1 X.500, LDAP – standardy adresářových služeb Co je to X.500 X.500 je obvyklá zkratka používaná pro označení standardu adresářových služeb, který definují dokumenty X.500 až X.521 [X.500]. Standard X.500 byl vytvořen CCITT (Consultative Committee on International Telephony and Telegraphy) a je postaven na rodině protokolů ISO/OSI. X.500 je poměrně komplexní a standardní specifikace pro adresářovou organizaci dat a operace nad nimi. 5 V literatuře se lze často setkat s pojmy jako jsou yellow pages a white pages. Tyto pojmy v podstatě odpovídají dvěma naznačeným přístupům. Hledání objektu, který splňuje žádané podmínky je analogické používání zlatých (žlutých) stránek (yellow pages), zatímco získání informací o konkrétním objektu (jehož identifikaci – jméno – znám) odpovídá použití bílých stránek telefonního seznamu (white pages). Technická zpráva TEN-155 CZ číslo 4/2000 7 Obecně lze říci, že X.500 je vystavěn na architektuře klient/server, přičemž definuje protokol pro komunikaci mezi klientem a adresářovým serverem directory access protocol (DAP). Protokol DAP, stejně jako implementace X.500 obecně, potřebuje OSI protokolový stack, který je relativně náročný na zdroje. Odtud plyne prvotní myšlenka návrhu prostředku pro jednodušší (lightweight) přístupu k adresářovým službám. 1.3.2 Co je to LDAP LDAP (Lightweight Directory Access Protocol) byl primárně navržen jako zjednodušená varianta protokolu DAP, tj. jako jednodušší přístupový protokol mezi klientem a adresářovým serverem (X.500). Hlavní zjednodušení tkví v použití rodiny protokolů TCP/IP jako komunikační vrstvy a ve zjednodušení protokolu jako celku (minimalizovány operace, vypuštěny složitější vlastnosti). Postupem času došlo k „osamostatnění“ protokolu LDAP, tj. byla uplatněna idea samostatného LDAP serveru, což znamená adresářový server, který komunikuje s klientem protokolem LDAP (dosud sloužil LDAP pouze jako přístupový protokol k „plnokrevnému“ X.500 serveru). Z obrázku 4 je tento vývoj jasně patrný. Tak se postupně stalo, že pod pojmem LDAP se rozumí nejen komunikační protokol, ale i adresářový server sám (a to obvykle včetně všech náležitostí, tj. především datového modelu a konceptu distribuované infrastruktury adresářových služeb). Z hlediska klienta by mělo být v principu jedno, zda přistupuje k adresářovým službám realizovaným samostatným (LDAP) serverem, či zda se jedná pouze o gateway k serveru X.500. LDAP – hlavní významy Protokol pro přístup k datům. Model ukládání, organizace a přístupu k datům (informacím). Rozhraní pro přístup k datům (operace). 1.3.3 Základní vlastnosti protokolu LDAP Specifikace protokolu LDAP je implementačně nezávislá a je vedena snahou o maximální jednoduchost – pro koncepci byla určující snaha o zjednodušení implementace (za účelem podpory nasazení LDAPu v aplikacích, tj. tvorby tzv. LDAP enabled aplikací). Díky těmto vlastnostem se protokol LDAP začal skutečně výrazněji prosazovat a dosáhl dokonce stavu, kdy je běžně implementován a užíván samostatně. Shrňme hlavní rozdíly oproti X.500: Technická zpráva TEN-155 CZ číslo 4/2000 8 LDA P Client TCP/IP LDA P Server ISO/OSI X.500 Server Directory Data Stand-alone LDA P server LDA P Client TCP/IP LDA P Server Directory Data Obrázek 4: Protokol LDAP a jeho úloha TCP/IP namísto OSI protokolového stacku, jednodušší funkční model, jednodušší reprezentace dat. Globálně se k vývoji situace kolem protokolu LDAP dá říci asi toto: Poté, co se protokol LDAP začal prosazovat díky svojí jednoduchosti, začala tato jednoduchost býti omezujícím aspektem pro některé případy nasazení. Z toho ovšem vyplynula snaha o vylepšování protokolu LDAP a jeho doplňování dalšími vlastnostmi. Takto se vlastně tvoří nový standard pro adresářové služby a to od elementárního (ale dostatečně otevřeného) základu, postupným doplňováním potřebných vlastností. LDAP – hlavní vlastnosti Jednoduchost, dobrý poměr implementační náročnosti vůči šíři spektra možného využití. Rozšiřitelnost, otevřenost. Distribuovaný model uložení dat a přístupu k nim. Technická zpráva TEN-155 CZ číslo 4/2000 9 1.4 Architektura protokolu LDAP Protokol LDAP definuje komunikaci mezi serverem a klientem. Klient zašle serveru zprávu obsahující požadavek na provedení jedné z definovaných operací a server vrátí odpověď (viz obrázek 5). Zprávy obsahují také příslušná data a informace o jejich formátu. Základní schéma komunikace: Klient naváže spojení s LDAP serverem. Pro operaci navázaní spojení se používá termín binding. Klient se může připojit anonymně nebo musí prokázat svoji identitu (identitu uživatele) – provede se autentizace jednou z možných metod. Pro navázaní spojení je tedy nutné, aby klient znal IP adresu a port, na kterém je LDAP server. Klient má k dispozici spojení na server (identifikace spojení byla vydána serverem při navázání spojení) a může v jeho rámci posílat žádosti o provedení definovaných operací nad adresářovými daty. Klient uzavře spojení s adresářovým serverem. Pro tuto operaci se používá termín unbinding. Ačkoli se nejedná o přímou součást protokolu LDAP, jedním z důležitých faktorů v této oblasti je standardní LDAP API (application program interface), tj. rozhraní (knihovny) přímo přístupné pro psaní aplikací. Největší význam má standardní rozhraní do jazyka C a jazyka Java. LDAP Architektura klient/server. Komunikace prostřednictvím rodiny protokolů TCP/IP. Standardní LDAP API, knihovny pro psaní aplikací. Z hlediska návrhu adresářových služeb je komunikační protokol pouze jedním z několika aspektů návrhu a implementace. Pro lepší pochopení celku je vhodné rozčlenit LDAP do několika modelů: Informační model – struktura informací uložených v adresářových službách. Jmenný model – organizace a identifikace informací v adresářových službách. Technická zpráva TEN-155 CZ číslo 4/2000 10 Directory server Directory client app. Internal directory server structure Application Back end Request Reply API Front end LDA P Client Library LDA P reply/request TCP/IP TCP/IP TCP/IP Obrázek 5: Komunikace – architektura klient/server Technická zpráva TEN-155 CZ číslo 4/2000 11 Funkční model – operace nad informacemi v adresářových službách. Bezpečnostní model – řízení přístupu k informacím v adresářových službách. 1.5 Informační model Základní pojmy informačního modelu adresářových služeb byly nastíněny v kapitole 1.2. Základní datová jednotka umístěná v adresářových službách se nazývá položka. Položka má atributy, které popisují její vlastnosti. Jak položka, tak atribut jsou identifikovány jménem (obrázek 1). 1.5.1 Atributy, syntaxe atributů Každý atribut má přiřazen typ, tj. informaci o tom, jaké hodnoty může nést, neboli informaci o syntaxi pro zápis hodnot atributu. Typ atributu také definuje zacházení s hodnotou atributu při operacích, například při prohledávání či porovnávání. Například je definován typ atributu pro uložení telefonního čísla. Atribut označený tímto typem může obsahovat libovolný text, přičemž znaky jako mezera a pomlčka se ignorují pro účely porovnávání. Dále se ignoruje velikost písmen a je definováno lexikografické uspořádání. Základní typy hodnot atributů jsou následující: ces: řetězec znaků, při porovnávání se bere ohled na velikost písmen (Case Exact String) cis: řetězec znaků, při porovnávání se nebere ohled na velikost písmen (Case Insensitive String) tel: telefonní číslo, tj. řetězec znaků, mezery a pomlčky jsou při porovnávání ignorovány stejně tak jako velikost písmen bin: libovolná (binární) data dn: rozlišovací jméno (objektu v adresářových službách) 1.5.2 Schéma Také jména atributů a jejich význam, samozřejmě včetně přiřazení typu atributu, jsou standardizována. Každá položka má navíc přiřazen typ, který popisuje které atributy se musí a které se mohou u ní vyskytovat. Globálně se pro označení popisu těchto pravidel používá pojmu schéma. Technická zpráva TEN-155 CZ číslo 4/2000 12 Jméno atributu, alias organization, o organizationalUnitName, ou commonName, cn surname, sn telephoneNumber jpegPhoto typ atributu cis cis cis cis tel bin význam jméno organizace jméno organizační jednotky „common name“ položky jméno osoby telefonní číslo portrét osoby Tabulka 2: Příklady běžných atributů Příklady některých nejběžnějších atributů, jejich typ a význam: Schéma definuje třídy objektů (object class), tj. typy položek, které se mohou vyskytovat v adresářovém stromu. Třída objektu definuje jména a typy atributů, které se mohou v objektu (položce) vyskytovat, přičemž určuje, které z nich jsou povinné (musí se vyskytovat). Typ položky ve formě jména třídy objektu je u každé položky uveden ve vyhrazeném a povinném atributu objectClass. Příklady tříd objektů (obsahují pouze příklady atributů, přičemž tučně tištěné jsou povinné): Třída objektu význam příklad atributů inetOrgPerson Reprezentuje člověka (v intranetu) commonName (cn) surname (sn) objectClass mail telephoneNumber organization Reprezentuje organizaci organization (o) objectClass location (l) postalAddress seeAlso Tabulka 3: Příklady tříd objektů Při definování tříd objektů je možno používat dědičnost, tj. definovat novou třídu objektů jako rozšíření jiné, již definované třídy. Schéma lze tedy chápat také jako hierarchii tříd objektů6 . Schéma dává možnost definovat vlastní datové typy, definovat popis nových objektů nebo rozšiřovat či měnit popis běžných objektů. Pro interoperabilitu 6 Atribut objectClass obsahuje jména všech tříd objektů, které jsou použity pro definici aktuální třídy objektu, tj. ze kterých je aktuální třída objektů odvozena. Technická zpráva TEN-155 CZ číslo 4/2000 13 je velmi důležitá standardizace, proto je třeba vycházet ze standardizovaných schémat. Základní informace z této oblasti lze najít v [rfc2252] a [rfc2256]. Pro pokročilejší řešení interoperability je definován v rámci LDAP verze 3 mechanismus pro publikaci schématu. Adresářový server poskytuje některé základní informace o sobě včetně schématu, klienti mohou definovaným způsobem k těmto informacím přistupovat. Pro textový zápis položky a obsahu adresářového stromu je definována syntaxe LDIF (LDAP Data Interchange Format) viz kapitola 1.9. Základní nástroje pro komunikaci s adresářovým serverem z příkazové řádky (viz kapitola 1.10) používají pro zápis dat také formát LDIF. LDAP – informační model Datové entity: položka, atribut. Položka – má typ položky (třída objektu), – obsahuje atributy, – má jméno, DN (rozlišovací jméno) globální v rámci DIT, – uspořádání do Directory Information Tree (DIT). Atribut – má typ, – má hodnotu, resp. hodnoty, – má jméno – identifikaci v rámci položky. Schéma – rozšiřitelnost (ale také standardizace). 1.6 Jmenný model Základní koncept jmenného modelu byl nastíněn již v kapitole 1.2. Položky jsou organizovány do hierarchické struktury zvané Directory Information Tree (DIT). Každá položka je jednoznačně identifikována jménem (DN), přičemž toto jméno jednoznačně určuje polohu položky v rámci stromu. Technická zpráva TEN-155 CZ číslo 4/2000 14 1.7 Funkční model Standardní operace protokolu LDAP lze rozdělit do tří kategorií: Dotazování a prohledávání – slouží pro získávání informací z adresářového stromu. Operace search a compare. Změny dat – operace add, delete, modify (modifyRDN). Základní prostředky pro změnu dat. Autentizace – navázání spojení a prokázání identity uživatele. Operace bind a unbind. 1.7.1 Operace search Pro realizaci veškerého přístupu k datům (čtení) v adresářovém serveru slouží jediná operace, prohledávání. Tato operace je navržena obecně, tj. pokryje jak potřebu hledání, tak čtení přesně specifikovaných dat. Specifikace požadavku pro operaci search se definuje prostřednictvím několika základních parametrů: Báze Rozlišovací jméno definující nejvyšší objekt v hierarchii DIT, který je prohledáván. Rozsah Specifikuje rozsah prohledávání vzhledem k bázovému objektu. Lze požadovat prohledání celého podstromu, jedné úrovně podstromu či pouze bázového objektu samého. Prohledávací filtr Pro definici kritéria pro výběr vyhovujících položek existuje relativně komplexní syntaxe a sémantika tzv. prohledávacího filtru. Základní syntaxe filtru je: <atribut> <operátor> <hodnota> kde nejjednodušším operátorem je rovnítko, například sn=Sitera. Filtry lze skládat pomocí logických operací. Syntaxe je: ( <operátor> (<filtr>) (<filtr>) (<filtr>) ...) například (& (ou=civ)(mail=si*)), kde & je operátor logického součinu a * zástupný znak pro libovolný řetězec. Pak tedy tento příklad definuje prohledávací filtr, jemuž vyhovují všechny položky mající atribut Technická zpráva TEN-155 CZ číslo 4/2000 15 ou s hodnotou civ a atribut mail s hodnotou, která začíná znaky si. Podrobnější informace o syntaxi filtru viz [rfc2254]. Atributy k vyzvednutí Je možno omezit množinu atributů, které jsou z hlediska konkrétního dotazu zajímavé. Limity Klient může omezit maximální počet položek vrácených dotazem nebo maximální objem času který je možno věnovat na zodpovězení dotazu. To je užitečná vlastnost v případě dotazů, u kterých není z hlediska klienta jasná informace o objemu položek, které splňují kritéria dotazu. 1.7.2 Operace compare Operace compare slouží speciálně pro porovnání hodnoty atributu konkrétní položky se zadanou hodnotou. Vrací logickou hodnotu. 1.7.3 Operace pro změnu dat Operace pro změnu dat: add: Vytvoření nové položky. delete: Zrušení existující položky. Mohou být smazány pouze položky, které jsou listy stromu (tj. pokud neexistují žádné položky umístěné v podstromu mazané položky). modify: Slouží ke změnám uvnitř existující položky. Dovoluje měnit hodnotu atributu, mazat atribut a přidávat nový atribut. modifyRDN: Slouží ke změně rozlišovacího jména položky. Dovoluje změnit pouze relativní rozlišovací jméno v rámci větve, ve které je položka umístěna. 1.7.4 Autentizační operace Operace pro navázání a řízení komunikace: bind: Navázání spojení mezi LDAP serverem a klientem. Při navázání spojení probíhá autentizace. unbind: Zrušení spojení mezi LDAP serverem a klientem. abandon: Operace, kterou klient požaduje zrušení nedokončené (předchozí) operace. Technická zpráva TEN-155 CZ číslo 4/2000 16 Vlastní autentizace může být provedena několika standardními mechanismy. Více viz kapitola 1.8. 1.7.5 Možnosti rozšíření funkčního modelu Také funkčního model je navržen jako rozšiřitelný. Jednak je možno definovat tzv. controls, což jsou dodatečná rozšíření standardních operací, jednak je možno definovat zcela nové operace (extended operations). LDAP – funkční model Prohledávání – obecně definovaná operace search. Změna dat, na úrovni položek a na úrovni atributů. Otevřený návrh, rozšiřitelnost. 1.8 Bezpečnostní model Z hlediska bezpečnosti lze v rámci protokolu LDAP hovořit především o autentizaci uživatele, tj. metodě prokázání identity (a tím vazbě uživatele na položku která ho reprezentuje v adresářovém stromu), o bezpečnosti obecně (zabezpečení proti odposlechu a napadení komunikace) a o autorizaci (řízení přístupových práv k jednotlivým objektům a operacím nad nimi). Autorizace není dosud součástí žádného přijatého standardu. Existuje řada řešení (obvykle formou přístupových listů, např. Netscape [NS-doc]) a návrh standardu. 1.8.1 Autentizace Z hlediska prokázání identity uživatele (autentizace) lze v současných adresářových službách mluvit o třech základních možnostech: Žádná autentizace Nejjednodušší přístup, určený obvykle pouze pro čtení veřejných položek, je anonymní. V tomto případě není potřeba provádět žádnou autentizaci. Základní autentizace Jednoduchá metoda prokázání identity uživatele. Klient specifikuje DN uživatele a jeho heslo. Heslo je uloženo (obvykle přes jednosměrnou šifru) v atributu příslušné adresářové položky. SASL (Simple Authentication and Security Layer) SASL (Simple Authentication and Security Layer) je standardizovaná ([rfc2222]) Technická zpráva TEN-155 CZ číslo 4/2000 17 cesta pro dodatečné zabezpečení spojově orientovaných komunikačních protokolů. Jedná se v podstatě o jasně definované rozhraní, jehož prostřednictvím lze propojovat standardní autentizační mechanismy s komunikačními protokoly. Podpora SASL je novou vlastností standardu LDAP verze 3. Základní schéma použití SASL autentizace je následující: 1. Klient předá informace pro autentizaci: – DN – rozlišovací jméno entity, která se autentizuje. – mechanismus – identifikace SASL autentizačního mechanismu. Server může prostřednictvím SASL podporovat několik autentizačních mechanismů7 . Běžně podporovaným autentizačním mechanismem je SSL (nebo jeho následník TLS - viz kapitola 1.8.2)8, přičemž tyto protokoly poskytují také zabezpečení komunikace. – credentials – data prokazující identitu (v příslušném autentizačním mechanismu). 2. Přes LDAP API dojde autentizační požadavek LDAP serveru, který pro jeho vyřízení použije příslušný autentizační modul (dle zadaného mechanismu). 3. Příslušný autentizační modul na základě předaných dat rozhodne, zda je identita prokázána či nikoli. Za tímto bodem se může skrývat další komunikace vlastní autentizačnímu mechanismu (např. Kerberos). 1.8.2 Zabezpečení komunikace Protokol SSL (Secure Socket Layer) je určen jak pro zabezpečení komunikace tak pro provádění autentizace komunikujících entit. Slouží primárně pro zabezpečení TCP/IP komunikace – jako mezivrstva mezi aplikací a běžnou TCP/IP komunikační abstrakcí (sokety). Další informace o protokolu SSL a TLS (Transport Layer Security) přesahují rámec tohoto dokumentu. Lze pouze doporučit některé základní informační zdroje [ssl, rfc2246, tls]. LDAP – bezpečnostní model Autentikace – prokázání identity uživatele, vazba na objekt v adresářových službách. 7 Samozřejmě server musí podporovat klientem použitý autentizační mechanismus, jinak nemůže autentizace uspět. Podporované autentizační mechanismy lze získat standardizovaným LDAP dotazem. 8 Mezi jiné možné autentizační mechanismy patří: Kerberos, S/Key, GSSAPI ([rfc2078]), CRAM-MD5. Technická zpráva TEN-155 CZ číslo 4/2000 18 Zabezpečení – komunikace, odolnost proti napadení. Autorizace – řízení přístupu. 1.9 LDIF LDIF (LDAP Interchange Format) [ldif] je textový formát pro zápis obsahu adresářových služeb. Slouží také jako prostředek pro zápis operací pro změnu obsahu adresářových položek. LDIF se používá především pro hromadné změny dat, import a export dat (přenos ze serveru na server) apod. LDIF také využívají nástroje pro komunikaci s LDAP serverem z příkazové řádky. V této kapitole lze najít základní nástin formátu LDIF, další informace viz doporučená literatura. 1.9.1 LDIF – formát pro zápis adresářových položek Popišme použití formátu LDIF pro zápis adresářových položek. LDIF soubor se skládá z bloků dat oddělených prázdnou řádkou. Každý blok dat reprezentuje jednu položku. Základní struktura: dn: <rozlišovací jméno> objectClass: <třída objektu> ... <jméno atributu>: <hodnota atributu> ... Atribut objectClass je z hlediska formátu LDIF atribut jako každý jiný, jeho zvýraznění ve výše uvedené struktuře slouží pouze k přiblížení obvyklého vzhledu LDIF formátu položky. Příklad položky: dn: cn=Jiri Sitera, ou=CIV, ou=Staff, ou=People, o=zcu, c=cz objectClass: top objectClass: organizationalPerson objectClass: inetOrgPerson cn: Jiri Sitera sn: Sitera mail: [email protected] seeAlso: http://home.zcu.cz/ sitera l: UI404 1.9.2 LDIF – formát pro zápis změn adresářových položek Způsob zápisu příkazů pro modifikaci položek v adresářových službách je popsán v kapitole 1.10.2. LDIF Standardní textový formát pro zápis dat v adresářových službách. Slouží také pro zápis příkazů pro modifikaci dat v adresářových službách. Pro hromadné změny dat, export a import databáze adresářového serveru. Technická zpráva TEN-155 CZ číslo 4/2000 19 1.10 Nástroje pro komunikaci s LDAP serverem z příkazové řádky Nástroje pro komunikaci s LDAP serverem z příkazové řádky jsou obvykle součástí prostředků pro tvorbu aplikací, často označovaných jako SDK (Software Development Kit). Nicméně v hlavních rysech jsou zcela kompatibilní. Základní použití těchto nástrojů je nastíněno v následujících odstavcích. Více informací viz příslušná dokumentace, např. [NS-admin]. 1.10.1 Prohledávání adresářového stromu – ldapsearch Funkce ldapsearch odpovídá operaci search LDAP funkčního modelu. Základní použití: ldapsearch -h <LDAP server> -b <báze> <prohledávací filtr> například: ldapsearch -h pleiades.zcu.cz -b ’o=zcu,c=cz’ ’sn=sitera’ Dále lze parametry prohledávání určit především: seznam atributů, jejichž hodnoty mají být vráceny, rozsah prohledávání, port na kterém je LDAP server (implicitně 389), limity, autentizační data (jednoduchá autentizace, tj. DN a heslo), zabezpečení a autentizaci, obvykle se používá SSL. 1.10.2 Modifikace položek adresářového stromu – ldapmodify, ldapdelete, ldapmodrdn Příkaz ldapmodify používá pro zadávání požadavků na modifikaci adresářových položek tzv. LDIF update formát. Základní syntaxe je: dn: <rozlišovací jméno> changetype: <typ změny> <bližší specifikace změny> <seznam atributů> ... - <bližší specifikace změny> <seznam atributů> ... Technická zpráva TEN-155 CZ číslo 4/2000 20 Například pro provádění základních změn uvnitř položky se užívá specifikace changetype:modify, přičemž bližší specifikace změny může být: add: <jméno atributu> – přidá specifikovaný atribut a jeho hodnotu do položky. Existuje-li již takový atribut, přidá mu další hodnotu. Například: dn: cn=Jiri Sitera, ou=CIV, ou=Staff, ou=People, o=zcu, c=cz changetype: modify add: telephoneNumber telephoneNumber: 580 delete: <jméno atributu> – smaže specifikovaný atribut z položky. Pokud má specifikovaný atribut více hodnot, smaže všechny. Je-li potřeba smazat pouze jednu hodnotu a ostatní ponechat, je možno ke jménu atributu připsat hodnotu, která se má smazat. replace: <jméno atributu> – slouží k obecné modifikaci atributu – zadáním cílového stavu, tj. neexistuje-li atribut, je vytvořen a není-li specifikována žádná nová hodnota, tak je případný původní atribut smazán. Další typy změny jsou: add, delete a modrdn. Takto lze pomocí příkazu ldapmodify a příslušného LDIF vstupu zakládat, mazat a přejmenovávat položky. Přidání nových položek lze také realizovat na základě běžného LDIF souboru popisujícího tyto položky. K tomu slouží přepínač -a příkazu ldapmodify – poté je operace add implicitní. Smazání položky je možno také realizovat příkazem ldapdelete. Poznamenejme ještě, že při operacích, které mění data v adresářovém serveru, je potřeba použít autentizaci a pravděpodobně také zabezpečení komunikace (SSL). 2 LDAP – Co dále? Vzhledem k rozsahu tohoto dokumentu není možno pokročilejší a praktičtější otázky probírat podrobně. Proto se tato kapitola snaží poskytnout stručnou formou základy pro praktickou práci s adresářovými službami, jmenovitě protokolem LDAP a pro studium informací z této oblasti, které sami o sobě překračují rámec tohoto dokumentu. 2.1 2.1.1 Některé další důležité vlastnosti protokolu LDAP LDAP URL V rámci snah o standardizaci protokolu LDAP a využití adresářových služeb jako jednotné informační infrastruktury byl navržen URL (Universal Resource Technická zpráva TEN-155 CZ číslo 4/2000 21 Locators) [url] formát pro přístup k LDAP službám. LDAP URL je přijatým standardem [rfc2255] a podporuje ho řada aplikací (například Netscape Navigator 4.0). Základní syntaxe LDAP URL: ldap://<host>:[<port>] [/ [<dn>[? [<atributy>] [? [<rozsah>] [? [<filtr>]]]]]] kde: ldap: Specifikuje protokol LDAP. Může zde být také ldaps což určuje použití protokolu LDAP přes SSL (implicitní port 636). host: Jméno LDAP serveru. port: TCP/IP port na kterém je přítomen server. dn: Rozlišovací jméno určující bázi pro hledání. atributy: Seznam atributů, které mají být získány. rozsah: Rozsah hledání. base, one nebo sub. Implicitní je base. filtr: Filtr pro hledání. Implicitní je objectClass=* Příklad použití LDAP URL pro dotaz: ldap://pleiades.zcu.cz/o=zcu,c=cz??sub?sn=sitera LDAP URL je velmi flexibilní – může vyjadřovat odkaz na LDAP server, odkaz na položku v adresářových službách nebo LDAP dotaz. LDAP URL lze také s výhodou používat pro specifikaci dotazů v aplikacích. 2.1.2 Odkazy LDAP server nemusí obsahovat celý adresářový strom. Tento strom může být rozprostřen mezi hierarchicky uspořádané servery. Každý server obsahuje jeden podstrom9 a některé položky mohou reprezentovat odkaz, tzv. referal. Tímto způsobem jsou jednotlivé servery, a části dat v nich umístěné, propojeny. Kořenová položka podstromu se nazývá suffix, neboť její název je vždy sufixem rozlišovacích jmen všech položek v podstromu se nacházejících. Odkaz (referal) je speciální položka (objectClass=referal), jež slouží jako ukazatel na server, který obsahuje příslušný podstrom. Pro zápis odkazu se používá atribut ref a LDAP URL. 9 Ve skutečnosti může LDAP server obsahovat několik podstromů. Technická zpráva TEN-155 CZ číslo 4/2000 22 Více informací o odkazech viz doporučená LDAP literatura a dokumentace k příslušnému vývojovému nástroji (většina implementací LDAP API poskytuje transparentní vyhodnocování odkazů). 2.1.3 Replikace Z hlediska návrhu implementace adresářových služeb je samozřejmě důležitým faktorem dostupnost a rozšiřitelnost („škálovatelnost“). První z mechanismů pro zajištění robustnosti infrastruktury LDAP služeb, členění na části (partitioning), je realizováno výše popsaným mechanismem odkazů. Data jsou rozdělena do hierarchicky uspořádaných částí, přičemž každá část je poskytována samostatnými prostředky. Druhým mechanismem je replikace. Adresářový server může mít několik replik, tj. serverů, které poskytují stejná data. Datový obsah je mezi replikami udržován konzistentní a je zajištěna základní funkce systému i v případě výpadku některého ze serverů. Více informací opět viz příslušná dokumentace, např. [NS-doc], [UMICH-doc]. 2.2 Kostra základního nasazení adresářových služeb Nastiňme nyní, které základní kroky je třeba provést v rámci nasazení adresářových služeb. Předpokládejme základní nasazení, tj. jako seznam lidí s informacemi o nich. Mezi takové informace patří především telefon, fax, kancelář, příslušnost organizační jednotce, e-mail, atd. Mezi funkce může patřit telefonní seznam s vazbou na běžné aplikace (e-mail, ...). Server – výběr a instalace serverového SW. Obvykle je k dispozici dokumentace s informacemi nejen o instalaci, ale i konfiguraci a návrhu adresářových služeb. Patří sem samozřejmě návrh fyzické infrastruktury, tj. především otázky replikace a rozčlenění dat. To je samozřejmě již úzce vázáno na návrh DIT. Pravděpodobně nejlepší cesta pro většinu případů je učinit základní návrh a postupovat dále dle naznačeného schématu, přičemž celek bude sloužit jako ověřovací implementace a v rámci posledního kroku se navrhnou změny vedoucí k nasazení do produkčního prostředí. Schéma – volba, respektive návrh informačního modelu. V našem případě nejspíše vybereme některou ze standardních tříd objektů. Pro realizaci objektů pro uživatele se hodí organizationalPerson či inetOrgPerson. Je samozřejmě třeba navrhnout DIT a realizovat jeho uzly. K tomu se hodí třída objektů organization a organizationalUnit. Technická zpráva TEN-155 CZ číslo 4/2000 23 Klient – je třeba navrhnout základní využití adresářových služeb. V první fázi postačí nástroje pro komunikaci s LDAP serverem z příkazové řádky a standardní aplikace (mail klient, WEBový prohlížeč). Je možné vybrat si a vyzkoušet některý z pokročilejších nástrojů, jako je WWW–LDAP brána (gateway) či samostatný LDAP prohlížeč (browser). Rozhraní – nástroje, synchronizace, migrace dat – jedním z důležitých kroků je samozřejmě naplnění daty. Po prvních pokusech s testovacími daty bude nutno navrhnout mechanismy pro získání reálných dat. Samozřejmě, že zde se dotýkáme velmi komplexního problému, který se často označuje pojmem metadirectory – integrace existujících zdrojů dat, resp. přechod na jednotnou bázi dat. Zde bude potřeba stanovit postupy a navrhnout nástroje pro synchronizaci dat, resp. pro jejich migraci. Existuje řada postupů a nástrojů v této oblasti10 . Mezi nejjednodušší začátek patří transformace dat z existujících systémů do formátu LDIF a import tohoto souboru. Konfigurace aplikací – viz dokumentace příslušných aplikací. Velmi mnoho současných e-mail klientů podporuje LDAP pro získávání e-mail adres lidí (viz například Netscape Communicator Mail). Údržba, restrukturalizace pro nasazení do produkčního prostředí 2.3 Hlavní implementace Jmenujme nyní, bez nároku na úplnost a správnost výběru, několik základních implementací LDAP serveru a souvisejících věcí. University of Michigan LDAP implementace – tato práce otevřela svět LDAPu tak, jak je nastíněn v tomto dokumentu. Je k dispozici standalone LDAP directory server (slapd), standalone LDAP update replication daemon (slurpd), front end for an X.500 DSA a mnoho vývojových nástrojů. Vše je k dispozici volně včetně zdrojových textů [UMICH]. Netscape Communications – dobře podporovaná rozvíjející se technologie LDAPu. Adresářový server s modulární architekturou, podporou LDAPv3 a mnoha rozšířeními (autorizace, schéma, integrace s ostatními produkty). Jsou k dispozici nástroje pro tvorbu aplikací (C SDK, Java SDK, modul pro Perl – PerLDAP). Nástroje pro tvorbu aplikací jsou k dispozici včetně zdrojových textů zdarma, server je komerční [NS-LDAPCentral]. 10 V této oblasti lze najít řadu komerčních (více či méně komplexních) řešení. Je také třeba si uvědomit, že s tímto úsilím souvisí práce s vlastním obsahem dat, často označovaná (po právu) termínem „konsolidace dat“. Technická zpráva TEN-155 CZ číslo 4/2000 24 OpenLDAP – projekt OpenLDAP, vývoj LDAP technologie na otevřené bázi, vychází z implementace University of Michigan. Rychle se rozvíjející projekt, server i vývojové nástroje volně šířené včetně zdrojových textů [openldap]. 2.4 Vývojové nástroje Kromě knihoven SDK pro C a Javu, které jsou součástí mnoha implementací LDAPu, stojí za alespoň stručnou zmínku především: Java Naming and Directory Interface (JNDI) – rozhraní pro tvorbu aplikací v jazyce Java. Jedná se o zobecněné rozhraní k jmenným a adresářovým službám, které dovoluje jednotné zacházení se souborovým systémem, DNS a LDAPem. JNDI je navrženo jako otevřené vzhledem k dalším jmenným službám. Oproti LDAP Java SDK poskytuje abstrakci vyšší úrovně. Více viz [JNDI]. PerLDAP – knihovna pro programovací jazyk Perl, která poskytuje objektově orientované rozhraní pro práci s adresářovými službami [perldap]. 2.5 Kde hledat další informace a zkušenosti Možností je mnoho. Uveďme několik základních vstupních bodů. Innosoft’s LDAP World, dříve Critical Angle. Mnoho informací a odkazů udržovaných Markem Wahlem, autorem UMICH LDAPu. http://www3.innosoft.com/ldapworld An LDAP Roadmap & FAQ, Kings Mountain Systems, udržuje Jeff Hodges, Stanford. http://www.KingsMountain.com/ldapRoadmap.shtml Reference [rfc2222] RFC 2222, Simple Authentication and Security Layer (SASL). [rfc2251] Wahl, M., Howes, T., Kille, S., Lightweight Directory Access Protocol (v3), RFC 2251, Critical Angle, Inc., ISODE Consortium, Netscape Communications Corp., July, 1997. [rfc2252] Wahl, M., Coulbeck, A., Howes, T. and S. Kille, Lightweight Directory Access Protocol (v3): Attribute Syntax Definitions, RFC 2252, December 1997. Technická zpráva TEN-155 CZ číslo 4/2000 25 [rfc2253] Wahl, M., Kille, S., and T. Howes, Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names, RFC 2253, December 1997. [rfc2254] T. Howes, Lightweight Directory Access Protocol (v3): The String Representation of LDAP Search Filters, RFC 2254, December 1997. [rfc2255] T. Howes, M. Smith, The LDAP URL Format, RFC 2255, December 1997. [rfc2256] RFC 2256, A Summary of the X.500: User Schema for use with LDAPv3. [rfc2078] RFC 2078, Generic Security Service Application Program Interface. [DITDesign] Jim Rommel, Perot System Corporation: DIT Design. Electronic Messaging Association Conference 1998. [DNSAit] Jiří Sitera: Administrace TCP/IP sítí v prostředí OS UNIX. Akademie informačních technologií ZČU Plzeň, materiály pro posluchače, 1998. [ssl] Netscape Communications, The SSL Protocol Version 3.0, Secure Sockets Layer, Internet–Draft, http://home.netscape.com/eng/ssl3 [rfc2246] RFC 2246, The TLS Protocol Version 1.0,Transport Layer Security protocol. [tls] LDAPExt Working Group, Lightweight Directory Access Protocol (v3): Extension for Transport Layer Security, Internet–Draft, draft-ietf-ldapext-ldapv3-tls-04.txt [ldif] Gordon Good, Netscape Communications, The LDAP Data Interchange Format (LDIF) - Technical Specification, Internet–Draft, draft-good-ldap-ldif-02.txt [UMICH-doc] University of Michigan, The SLAPD and SLURPD Administrator’s Guide, http://www.umich.edu/~dirsvcs/ldap/doc/guides/slapd [UMICH] University of Michigan, Lightweight Directory Access Protocol, http://www.umich.edu/~dirsvcs/ldap/ [openldap] The OpenLDAP Project, Open source suite of LDAP applications and development tools, http://www.openldap.org [NS-admin] Netscape Communications, Netscape Directory Server 3.0 Administrator’s Guide, http://developer.netscape.com/docs/manuals/directory/ admin30/ Technická zpráva TEN-155 CZ číslo 4/2000 26 [NS-deploy] Netscape Communications, Netscape Directory Server 3.0 Deployment Guide, http://developer.netscape.com/docs/manuals/directory/ deploy30/ [NS-doc] Netscape Communications, Netscape Directory Server Documentation, http://developer.netscape.com/docs/manuals/directory.html [NS-LDAPCentral] Netscape Communications, Directory Developer Central, http://developer.netscape.com/tech/directory [perldap] Netscape Communications, PerLDAP Central, http://developer.netscape.com/tech/directory/ perldap central.html [X.500] Recommendations X.500, OSI Directory Standard, http://www.nexor.com/public/directory.html [url] [JNDI] Berners-Lee, T., Masinter, L. and M. McCahill, Uniform Resource Locators (URL), RFC 1738, December 1994. Java Naming and Directory Interface (JNDI), Java Standard Extension http://www.javasoft.com/products/jndi Technická zpráva TEN-155 CZ číslo 4/2000 27
Podobné dokumenty
Kvalita OK.p65
přehlednou a stručnou charakteristiku podávají např. [1]. Stručně lze shrnout klasifikaci benchmarkingu následovně:
1. Z hlediska podstaty benchmarkingu a poukazování na ostatní:
• Interní benchmar...