Adresářové služby LDAP SLT2001 Skalský dvůr, února 2001 Michal Mühlpachr
2 Co je to adresářová služba? Databázová aplikace používaná pro správu položek adresáře –zpřístupňuje informace pro uživatele a aplikace Většinou používá architekturu klient-server Může být distribuovaná DNS je příkladem adresářové služby mapující host jména na IP adresy
3 Co je to adresářová služba? Globální adresářová služba zajišťuje centralizovaný sklad informací o organizaci –lidé –počítače –tiskárny –konferenční místnosti –SW –…
4 Co je to LDAP? Standardní protokol pro globální adresářové služby –LDAP server poskytuje služby –LDAP klient využívá služby Začal jako TCP/IP front end k X.500 –zachovává X.500 data model IETF standard
5 Historie ITU-T X DAP RFC 1487 (1993), v2 RFC 1777 v3 RFC 2251 –podpora mezinárodních znaků Unicode UTF-8, jazykové kódy –bezpečnost (SSL, SASL) –distribuovanost (referaly) –extensibilita (např. dávkový import dat) –informace o funkcionalitě a schema
6 LDAP model LDAP Client LDAP Server Databáze požadavky odpovědi Server přijímá na TCP portu: 389 LDAP 636 LDAP over SSL
7 Datový model Základní informační jednotka je záznam Záznam je soubor atributů Každý atribut má jméno, typ a žádnou, jednu nebo více hodnot Typ určuje jaké druhy hodnot mohou být uloženy ASN.1, BER, OID
8 Datové typy cis – case insensitive string ces – case exact string int – integer bin – binary data dn – distinguished name tel – telephone number
9 Třídy záznamů (objektů) Definuje atributy (jména a typy), které záznam musí a může obsahovat LDAP definuje standardní množinu tříd pro zajištění interoperability –person, organizationalPerson, … –country, locality, organization, organizstionalUnit, … –groupOfNames, … –…
10 Třídy objektů Záznam (instance) může patřit současně do více jak jedné třídy Použitelné atributy záznamu jsou množinovým součtem tříd, do kterých záznam patří Atributy se dělí na povinné a volitelné podle definice tříd Definice tříd mohou být děděny
11 Příklad třídy a záznamu objectclass person requires objectclass, sn, cn allows description, seeAlso, telephoneNumber, userPassword TřídaZáznam cn: Michal Muhlpachr cn: Michal Mühlpachr cn: michalm sn: Mühlpachr sn: Muhlpachr description: Consultant userPassword: {crypt}Gb0Rd telephonenumber: objectclass: top objectclass: person
12 Adresářové schema Atributy a objekty známé adresářovému serveru tvoří schema Adresářové schema popisuje typ dat, která mohou být obsažena v adresáři Schema může být rozšiřováno přidáváním nových atributů a tříd objektů
13 Adresářový strom Záznamy jsou organizovány ve struktuře podobné stromu
14 K2 account connService subItf ipSubnet ipAddr route locality router itf resource Hierarchie stromu a reference
15 Namespace Každý záznam je unikátně identifikován svým distinguished name (DN) –analogické k cestě souboru ve file systém Jeden nebo více atributů je použito pro relative distinguished name (RDN) záznamu DN záznamu je tvořen svým RDN a RDN svých předchůdců
16 Namespace ou=people o=firma ou=groups uid=michalmuid=test cn=provozcn=obchod RDN: ou=people DN: ou=people,o=firma RDN: uid=michalm DN: uid=michalm,ou=people,o=firma DN má formát seznamu čárkou oddělených dvojic atribut a hodnota
17 LDAP operace Bind, Unbind – identifikace a autentizace Compare – porovnání hodnoty atributů Search – nalezení záznamu Modify – modifikace záznamu Add – přidání záznamu Delete – vymazání záznamu Modify RDN – modifikace RDN nebo přesun záznamu
18 Přístupová práva LDAP umožňuje řídit přístup k záznamům –přístup k serveru anonymní / user + password / user + certifikát a SK –přístup k datům přístupová práva (search/read/write) mohou být nastavena podle větve, objektu nebo atributu přístup může být řízen podle uživatelů, skupin, IP adres, domén
19 Vyhledávání Base (odkud ve stromě začít hledat) Search string –operátory přítomnost atributu, rovnost hodnoty atributu, menší, větší, substring, „zní jako“ –skládání pomocí and, or, not a závorkování Scope –base, one, subtree Požadované atributy Rychlost vyhledávání závisí na indexování
20 Vyhledávání – Netscape address book Vyhledávání „michal“ Search filter: (cn=*michal*) Požadované atributy: cn, mail, o, telephoneNumber, l, nickname, sn, givenName
21 Vyhledávání – Microsoft Outlook Vyhledávání „michal“ Search filter: (|(mail=michal*)(cn=michal*)(sn=michal*)) Požadované atributy: Display-name, cn, commonName, mail, otherMailBox, givenName, sn, surnaon
22 Distribuované LDAP - referaly
23 Replikace
24 gq client
25
26
27 Netscape client
28 LDIF dn: host=debussy,ou=hosts,dc=debian,dc=org objectclass: top access: all admin: architecture: arm c: at createtimestamp: Z creatorsname: uid=jgg,ou=users,dc=debian,dc=org description: ARM port machine disk: 5G [6G] distribution: potato Debian GNU/Linux host: debussy hostname: debussy.debian.org l: Wien machine: Strong Arm SA110 rev 3 memory: 64M modifiersname: uid=jgg,ou=users,dc=debian,dc=org modifytimestamp: Z …
29 Python API #!/usr/bin/env python import ldap l = ldap.open ('ldap.firma.cz', 389) l.simple_bind_s( 'uid=user,ou=people,dc=firma,dc=cz', 'password') for dn, dict in l.search_s( 'dc=firma,dc=cz', ldap.SCOPE_ONELEVEL, '(objectClass=*)', ['objectClass', 'description']): print dict['objectClass'][0], \ dict['description'][0]
30 Použití LDAP v OS LDAP SIA Plug-in –getpw*(), getgr*() funkce v libc –login –POP/IMAP –zcela transparentní pro uživatele LDAP PAM –pam-ldap –nss-ldap
31 LDAP enabled aplikace MTA – Exim, Qmail-LDAP Courier IMAP/POP Apache Zope PHP Netscape Navigator, mutt, Emacs, MS Explorer, MS Outlook, …
32 OpenLDAP 2.0.x LDAPv2 a LDAPv3, IPv4 a IPv6 Simple Authentication and Security Layer Cyrus SASL - DIGEST-MD5, EXTERNAL a GSSAPI Access control (statický, dynamický) Internacionalizace: Unicode a jazykové tagy Různé DB backendy: LDBM (BerkleyDB, GDBM), shell, simple passwd file, více databází současně, … Generické API pro moduly (SQL, …) Threads Replikace
33 Proč je LDAP zajímavé? Protokol založený na otevřených standardech Může být distribuovaný přes různé platformy, firmu, planetu Univerzální atribut/hodnota adresář, který je rychlý, replikovaný a spolehlivý Škálovatelné na milióny záznamů Centralizovaný management informací Bezpečnost (ACL, SSL) Mnoho API (ANSI C, shell, Python, Perl, Java, …) Jednoduchost ale výkonnost
34 Proč je LDAP zajímavé? Hodně komerčních implementací Netscape (iPlanet) Directory Server Novell NDS Innsoft, Lucent, IBM DSS Oracle DB LDAP storage Microsoft Active Directory Services Meta directory produkty B2B kooperace – DSML = Directory Services Markup Language Open source OpenLDAP
35 LDAP RFC RFC LDAPv3 RFC LDAPv3: syntaxe atributů RFC LDAPv3: UTF-8 reprezentace DN = Disnquished Name RFC reprezentace search filterů RFC LDAP URL format
36 LDAP související RFC RFC souhrn X.500(96) User schema pro LDAPv3 RFC 2307 – přiblížení LDAP pro použití jako Neteork Information Service RFC 1798 connectionless LDAP RFC 1823 The LDAP Application Program Interface
37 URL odkazy OpenLDAP Netscape (iPlanet) SASL - Simple Authentication and Security Layer OpenSSL DSML
38 Knihy Mark Wilcox: Implementing LDAP ISBN Tim Howes, Mark C. Smith, Gordon S. Good, Timothy A. Howes: Understanding and Deploying Ldap Directory Services Network Architecture ISBN Pete Loshin: Big Book of Lightweight Directory Access Protocol (Ldap) Rfcs ISBN Bruce Greenblatt: Internet Directories: How to Build and Manage Applications for LDAP, DNS, and Other Directories ISBN
39 Diskuze Dotazy? Komentáře? Michal Mühlpachr Děkuji za pozornost