Cel² sv∞t je pln² nejr∙zn∞jÜφch informacφ. N∞kterΘ jsou d∙le₧itΘ, n∞kterΘ ne. Jejich spoleΦn²m atributem je jejich chaotickΘ umφst∞nφ v nezßvislosti na jejich v²znamu a obsahu. Ano, nejv∞tÜφm problΘmem dneÜka nenφ neexistence hledan²ch dat, ale problΘm le₧φ v jejich neuspo°ßdanosti a tudφ₧ ÜpatnΘ p°φstupnosti.
PodobnΘ je to u lidφ pokud chcete n∞koho kontaktovat a znßte dokonce i jmΘno a snad i zemi kde bydlφ, neznamenß to, ₧e tuto osobu dokß₧ete najφt. Lidφ, podobn∞ jako informacφ, je opravdu mnoho.
X.500
╪eÜenφm je d∙slednΘ a kompletnφ uspo°ßdßnφ informacφ o vÜem, kde je to mo₧nΘ. Proto organizace OSI (Open System Interconnection) definovala specifikaci protokolu X.500, kter² je vlastn∞ objektov²m adresß°ov²m systΘmem. Prvnφ specifikace byla definovßna roku 1984 a poslΘze dopln∞na roku 1988. P∙vodn∞ byla specifikace X.500 urΦena pro vyu₧itφ ve spoluprßci s dalÜφm protokolem organizace OSI X.400, kter² je urΦen pro provoz elektronickΘ poÜty.
N∞kterΘ termφny a specifikace proto z tohoto protokolu vychßzejφ nebo na n∞j navazujφ. Pozd∞ji byl vÜak cφl X.500 rozÜφ°en na obecn² objektov² adresß°ov² systΘm pro pou₧itφ v sφ¥ovΘm sv∞t∞.
Zßkladem je objekt
Zßkladem definici je objekt, kter² reprezentuje reßln² objekt ve skuteΦnΘm sv∞t∞. Tφmto objektem m∙₧e b²t cokoliv, co mß smysl n∞jak hiearchicky °adit, nap°. Φlov∞k, stanice v sφti atd. Ka₧d² objekt je oznaΦen rozliÜovacφm jmΘnem (Distinguished Name - DN) a mß p°φsluÜnΘ atributy, kterΘ urΦujφ jeho vlastnosti. JakΘ atributy jsou pro kter² typ objektu vhodnΘ, je definovßno specifikacφ X.521.
Stromovß struktura
Co je na celΘ specifikaci natolik p°ita₧livΘ? Je to distribuovan² charakter databßze objekt∙. Tato databßze je naz²vßna jako adresß°ovß informaΦnφ bßze (DIB - Directory Information Base) a je uva₧ovßna jako globßlnφ systΘm, kter² m∙₧e b²t rozprost°en po jednotliv²ch logick²ch Φßstech po celΘm sv∞t∞.
OvÜem pro programy a systΘmy, kterΘ potom s touto informaΦnφ bßzφ pracujφ, se tvß°φ jako celek, a p°φstupovΘ algoritmy neznajφ strukturu rozlo₧enφ bßze. Vlastnφ technickß implementace nenφ ve specifikaci definovßna a je na producentu aplikace, jak se s tφmto vypo°ßdß.
Logicky je databßze uspo°ßdßna do adresß°ovΘho informaΦnφho stromu (DIT - Directory Information Tree). Jeho nejvyÜÜφm objektem je sv∞t, kter² je dßle d∞len na jednotlivΘ zem∞, nßsledn∞ organizace a na poslednφm mφst∞ stojφ konkrΘtnφ objekty. V dalÜφm textu budeme pracovat s nejpou₧φvan∞jÜφ implementacφ X.500 pro adresß°ov² systΘm osob.
X.500 rozliÜuje dva typy jmΘna objekt∙. Jednφm je tzv. relativnφ rozliÜovacφ jmΘno (RDN), kterΘ definuje nßzev objektu v rßmci nejbli₧Üφ entity, tj. zem∞ nebo organizace. Druh²m je unikßtnφ jmΘno, kter² definuje jednoznaΦn∞ objekt v rßmci celΘho adresß°ovΘho stromu. Toto jmΘno zφskßme tak, ₧e zaΦneme od spodu stromu se jmΘnem objektu a postupn∞, jak postupujeme nahoru p°idßvßme jmΘna entit, pod kterΘ p°edchozφ objekt spadß.
Distribuce
X.500 je distribuovan² adresß°ov² systΘm, kter² nenφ spravovßn na jednom mφst∞. D∙vod∙ je hned n∞kolik. P°edevÜφm globßlnφ adresß° takovΘho rozsahu je tΘm∞° nemo₧nΘ rozumn∞ spravovat, aby se dosßhlo stability a aktußlnosti ·daj∙. A takΘ neexistuje organizace, kterß by mohla na tuto sprßvu vynaklßdat pen∞₧nφ prost°edky.
Proto ka₧dß entita m∙₧e b²t spravovßna n∞k²m jin²m a pomocφ definovan²ch protokol∙ komunikuje s vyÜÜφ strukturou adresß°e. Samoz°ejm∞, ₧e jedinß osoba nebo organizace m∙₧e zodpovφdat za vφce takov²ch entit nebo m∙₧e spravovat v∞tÜφ adresnφ prostor podle logickΘho rozd∞lenφ. Tak nap°. firma spravuje adresß° sv²ch odd∞lenφ, kterß zase spravujφ adresß° sv²ch pracovnφk∙. Tak je dosa₧eno malΘho zatφ₧enφ jednotliv²ch "pater" stromu a zßrove≥ mo₧nosti data rychle aktualizovat.
N∞kterΘ organizace jsou urΦeny pro sprßvu nejvyÜÜφch domΘn jednotliv²ch zemφ, jako nap°. Ansi pro USA. Tyto organizace potom p°id∞lujφ jmΘna i p°ezdφvky, tak aby v jejich prostoru nedochßzelo ke kolizφm t∞chto jmen. Aby to nebylo tak jednoduchΘ, je mo₧nΘ definovat jeÜt∞ tzv. p°ezdφvky (alias). Ty p°φsluÜejφ objektu, kter² je pak mo₧nΘ nalΘzt, jak pod prav²m jmΘnem, tak pod touto p°ezdφvkou. Tu nemusφ mφt jen koncovΘ objekty, ale i podstromy.
BezpeΦnost
Krom∞ po₧adavku na vytvo°enφ globßlnφho adresß°ovΘho systΘmu v dob∞ tvorby X.500 existovala takΘ nutnost tento systΘm zabezpeΦit p°ed neoprßvn∞n²m pou₧itφm nebo zßsahy do n∞j. Proto mß ka₧d² objekt definovßna prßva pro r∙znΘ u₧ivatele. V zßvislosti na t∞chto prßvech mohou u₧ivatelΘ p°idßvat, mazat nebo prohlφ₧et objekty v adresß°i.
Pokud u₧ivatel nemß k p°φsluÜnΘmu objektu prßva na prohlφ₧enφ, nejen ₧e nenφ schopen zobrazit jeho atributy, ale dokonce tento objekt nevidφ. To je pom∞rn∞ d∙le₧itΘ, proto₧e X.500 je urΦeno takΘ pro implementaci telefonnφch seznam∙, kde n∞kterß Φφsla jsou tajnß a nesmφ b²t p°φstupnß vÜem, zatφmco adresß° obecn∞ naopak vÜem p°φstupn² b²t musφ.
Prßce s X.500
Dobrß, znßme tedy vlastnφ strukturu, jak se s adresß°i pracuje? Nejprve se na prßci s X.500 podφvßme z u₧ivatelskΘho hlediska, potom p°ejdeme k technickΘ implementaci.
U₧ivatel mß k dispozici n∞kolik mo₧n²ch zp∙sob∙, jak pracovat s X.500. Existujφ specißlnφ klienti, kte°φ jsou schopni komunikovat n∞kolika mo₧n²mi zp∙soby. Potom je mo₧nΘ p°es specißlnφ servery pou₧φvat internetovskΘ protokoly jako Telnet, WWW a elektronickou poÜtu. V t∞chto p°φpadech s vlastφm serverem X.500 komunikuje a₧ server, kter² od vßs dostßvß p°φkazy pro prohledßvßnφ nebo prohlφ₧enφ adresß°e. V prvnφm p°φpad∞ p°istupuje definovan²mi protokoly k X.500 ji₧ vßÜ klientsk² program.
Ten se naz²vß DUA (Directory User Agent) a komunikuje s adresß°em pomocφ protokolu DAP (Directory Access Protocol). Zde je nutnΘ opustit urΦitΘ zjednoduÜenφ, jeho₧ jsem se dopustil. AΦkoliv mluvφm o adresß°i jako celku, ten je tvo°en jednotliv²mi DSA (Directory System Agent), kterΘ obsluhujφ p°φsluÜnΘ adresß°ovΘ celky.
DUA v₧dy komunikuje s jednφm DSA, kter² pokud nem∙₧e rozliÜit jmΘno ve svΘ oblasti, obrßtφ se na jin² DSA, o kterΘm se domnφvß, ₧e jmΘno bude znßt. Takto probφhß komunikace mezi DSA, a₧ je nakonec jmΘno nalezeno. To je nakonec vrßceno pomocφ DSP vlastnφmu DUA, kter² je zobrazφ u₧ivateli. Pro komunikaci mezi DSA je pou₧it protokol DSP (Directory System Protocol). Ten mß k dispozici n∞kolik podprotokol∙, kter²mi obsluhuje ₧ßdosti DSA agent∙.
Funkce
Protokol DAP poskytuje Φty°i zßkladnφ skupiny funkcφ pro komunikaci s adresß°i.
- Spojenφ a rozpojenφ (Bind a Unbind)
P°ed vlastnφ komunikacφ se musφ DAP p°ihlßsit na DSA a poskytnout mu ·daje o u₧ivateli. Teprve po navßzßnφ spojenφ je mo₧nΘ zasφlat po₧adavky na dalÜφ operace s adresß°em. Prßv∞ pomocφ ·daj∙ zaslan²ch v tΘto relaci jsou nastavena prßva u₧ivatele pro dalÜφ prßci. Po skonΦenφ prßce se serverem se DUA odhlßsφ pomocφ rozpojovacφho po₧adavku.
- Tßzacφ operace
K dispozici jsou Φty°i tßzacφ operace, kterΘ tvo°φ jßdro prßce s adresß°ov²mi systΘmy.
- ╚tenφ
Pokud chce u₧ivatel zφskat informace o hodnotßch atribut∙ n∞kterΘho objektu, kter² si p°edtφm vyhledal, tak DUA poÜle ₧ßdost na Φtenφ dat zvolenΘho objektu.
- Porovnßnφ
Mo₧nost porovnat hodnotu atributu objektu s hodnotou, kterou specifikuje u₧ivatel.
- Hledßnφ
V∞tÜinou nevφme, kde p°esn∞ le₧φ informace o hledanΘ osob∞. Proto se p°i hledßnφ °φdφ DUA ·daji, kterΘ zadß u₧ivatel podle toho, co o objektu vφ. V²sledkem hledßnφ nemusφ b²t samoz°ejm∞ jen jeden nßlez, v∞tÜinou podle mno₧stvφ dat zadan²ch p°i hledßnφ dostaneme cel² seznam, ze kterΘho si potom vybereme po₧adovanou polo₧ku.
- Seznam
Pokud si chceme prohlΘdnout obsah urΦitΘho podadresß°e, zaÜle DUA po₧adavek na seznam adresß°e. V²sledkem je op∞t °ada objekt∙.
- Modifikace
ZadanΘ ·daje je Φasto nutnΘ modifikovat, proto₧e sv∞t se rychle m∞nφ. Pro to je urΦena skupina modifikaΦnφch ·daj∙. Data objektu m∙₧e samoz°ejm∞ m∞nit pouze oprßvn∞n² u₧ivatel nebo systΘm. M∞nit lze v zßsad∞ vÜe, od jednotliv²ch atribut∙ po celkovß jmΘna objekt∙.
- ZruÜenφ operace
V∞tÜina operacφ probφhß pom∞rn∞ dlouho a m∙₧e se stßt, ₧e je nutnΘ zastavit operaci, kterß prßv∞ probφhß. K tomu slou₧φ p°φkaz Abandon.
PopsanΘ p°φkazy vymezujφ mo₧nosti protokolu DAP, kter² pou₧φvß DUA. Tyto p°φkazy zasφlß systΘmu software, nikoliv u₧ivatel, a¥ u₧ je realizovßn jako samostatn² klientsk² program nebo server pracujφcφ pomocφ Telnetu. Jeden p°φkaz od u₧ivatele m∙₧e b²t d∙sledkem celΘ sΘrie p°φkaz∙ zaslan²ch adresß°ovΘmu serveru, kterΘ zp∞tn∞ vy·stφ v jednu odezvu na obrazovce u₧ivatele. VÜe zßle₧φ na konkrΘtnφ implementaci. V souΦasnΘ dob∞ nejsou k dispozici p°φliÜ sofistikovanΘ programy, a tak vφcemΘn∞ pracujφ pomocφ identick²ch p°φkaz∙, jako jsou ty v²Üe popsanΘ.
Nev²hodou p∙vodnφ definice X.500 je nutnost v²m∞ny velkΘho mno₧stvφ dat a neustßleho propojenφ DUA a DSA p°i zadßvßnφ p°φkaz∙. Dφky tomu je implementace X.500 na Internet velmi obtφ₧nß. Zde se toti₧ pou₧φvß paketovΘ nespojitΘ komunikace, kterß nenφ pro p∙vodnφ specifikaci X.500 vhodnß.
Existuje ovÜem protokol LDAP, kter² nahrazuje DAP schopn² pracovat prßv∞ p°es TCP/IP. Tento protokol takΘ pou₧φvß znaΦn∞ mΘn∞ obsßhl²ch argument∙ pro jednotlivΘ operace, tak₧e tolik sφ¥ nezat∞₧uje.