390 likes | 516 Views
Adres ářové služby LDAP SLT2001 Skalský dvůr, 15.-18. února 2001. Michal Mühlpachr <michalm@nextra.cz>. 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
E N D
Adresářové služby LDAPSLT2001Skalský dvůr, 15.-18. února 2001 Michal Mühlpachr<michalm@nextra.cz>
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
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 • …
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
Historie • ITU-T X.500 1985-1988 DAP • RFC 1487 (1993), v2 RFC1777 • v3 RFC2251 • 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
LDAP model požadavky LDAPClient LDAPServer odpovědi Databáze Server přijímá na TCP portu: 389 LDAP 636 LDAP over SSL
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
Datové typy • cis – case insensitive string • ces – case exact string • int – integer • bin – binary data • dn – distinguished name • tel – telephone number
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, … • …
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
Příklad třídy a záznamu Třída Záznam objectclass person requires objectclass, sn, cn allows description, seeAlso, telephoneNumber, userPassword cn: Michal Muhlpachrcn: Michal Mühlpachrcn: michalmsn: Mühlpachrsn: Muhlpachrdescription: ConsultantuserPassword: {crypt}Gb0Rdtelephonenumber: 43554 100objectclass: topobjectclass: person
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ů
Adresářový strom Záznamy jsou organizovány ve struktuře podobné stromu
Hierarchie stromu a reference resource K2 account ipSubnet ipAddr locality connService router itf subItf route
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ů
Namespace DN má formát seznamu čárkou oddělených dvojic atribut a hodnota o=firma ou=people RDN: ou=peopleDN: ou=people,o=firma ou=groups uid=michalm uid=test cn=provoz cn=obchod RDN: uid=michalmDN: uid=michalm,ou=people,o=firma
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
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
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í
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
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
LDIF dn: host=debussy,ou=hosts,dc=debian,dc=org objectclass: top access: all admin: debian-admin@lists.debian.org architecture: arm c: at createtimestamp: 19990929040652Z 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: 20010110060813Z root@debussy.debian.org …
Python API #!/usr/bin/env pythonimport ldapl = 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]
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
LDAP enabled aplikace • MTA – Exim, Qmail-LDAP • Courier IMAP/POP • Apache • Zope • PHP • Netscape Navigator, mutt, Emacs, MS Explorer, MS Outlook, …
OpenLDAP 2.0.x • LDAPv2 a LDAPv3, IPv4 a IPv6 • Simple Authentication and Security LayerCyrus 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
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
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
LDAP RFC • RFC 2251 - LDAPv3 • RFC 2252 - LDAPv3: syntaxe atributů • RFC 2253 - LDAPv3: UTF-8 reprezentace DN = Disnquished Name • RFC 2254 - reprezentace search filterů • RFC 2255 - LDAP URL format
LDAP související RFC • RFC 2256 - 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
URL odkazy • OpenLDAPhttp://www.openldap.org/http://www.openldap.org/faq/ • Netscape (iPlanet)http://developer.netscape.com/ • SASL - Simple Authentication and Security Layerhttp://asg.web.cmu.edu/sasl/ • OpenSSLhttp://www.openssl.org/ • DSMLhttp://www.dsml.org/ http://www.padl.com/software.html http://www.innosoft.com/ldapworld/ http://www.mozilla.org/directory/csdk.html http://www.connectathon.org/ http://www.rudedog.org/auth_ldap/ http://www.delouw.ch/linux/apache.phtml http://www.mindcraft.com/directorymark/
Knihy • Mark Wilcox: Implementing LDAP ISBN 1-861002-21-1 • Tim Howes, Mark C. Smith, Gordon S. Good, Timothy A. Howes: Understanding and Deploying Ldap Directory Services Network ArchitectureISBN 1578700701 • Pete Loshin: Big Book of Lightweight Directory Access Protocol (Ldap) RfcsISBN 0124558437 • Bruce Greenblatt: Internet Directories: How to Build and Manage Applications for LDAP, DNS, and Other Directories ISBN 0-13-974452-5
Diskuze Dotazy? Komentáře? Michal Mühlpachr <michalm@nextra.cz> Děkuji za pozornost