440 likes | 674 Views
LDAP. Aleksi Mustonen. LDAP. Mikä hakemisto on? Onko hakemisto tietokanta? X.500 LDAP: Toimintaperiaate Active Directory Muita tekniikoita (Ph) Käytännön osuus Yhteenveto. Hakemisto. Perinteinen puhelinluettelo on hakemisto Joukko tietyllä tavalla järjesteltyä tietoa
E N D
LDAP Aleksi Mustonen
LDAP • Mikä hakemisto on? • Onko hakemisto tietokanta? • X.500 • LDAP: Toimintaperiaate • Active Directory • Muita tekniikoita (Ph) • Käytännön osuus • Yhteenveto
Hakemisto • Perinteinen puhelinluettelo on hakemisto • Joukko tietyllä tavalla järjesteltyä tietoa • Offline-hakemistoissa on päivitysongelmia • Sähköinen hakemisto tarjoaa etuja - Säästöt - Nopeus - Helppous
Hakemisto • Yleisimpiä hakemistopalveluita henkilötietokannat • Hakulauseiden käyttö rajatut tulosteet • Jotkut palvelut sopivat myös tietokoneiden omaan käyttöön (esim. DHCP)
Hakemistot ja tietokannat • Molemmat ovat tiedon säilyttämiseen tarkoitettuja keskitetysti hallittuja varastoja • Erot eivät ole selkeitä • Käyttökohteet erilaisia luokittelu • Hakemiston voidaan sanoa olevan tietokannan erityistapaus
Luku-kirjoitussuhde • Hakemistojen sisältämää tietoa ei tarvitse päivittää usein mutta sitä tarvitaan usein - osoitetiedot - reititystaulut • Tietokannoissa yleensä päinvastoin • Asukasluku raportointi?
Tallennettavan tiedon muoto • Tietokannoissa yleensä ennaltamäärätty semanttinen merkitys (int, string, data?) • Hakemistoissa voidaan luoda uusia tietotyyppejä itse (skeemat) • Esim. tietotyypit rehtori, oppilas • Onko tästä mitään hyötyä?
Tiedon hajautus • Sekä tietokantoja että hakemistoja voidaan hajauttaa usealle eri palvelimelle • Hakemistot hajautuksen suhteen parempia • Relaatiotietokannoissa tieto tallennetaan tauluihin hajautetaan taulut • Useaan tauluun kohdistuva haku liikennettä verkossa
Tiedon hajautus • Hakemistossa käytössä puumalli • Kullakin palvelimella oma puun haara • Esim. Oppilastiedot osastojen mukaan • Suoritettaessa kysely osaston x oppilaista, liikennettä vain yhdeltä palvelimelta • Tieto lähempänä käyttäjää (vasteajat ym.) • Hallinnon jakaminen tiedon ajantasaisuus
Entäs osastokohtaiset tietokannat? • Kuten hakemistossakin, osaston x oppilaat osaston x palvelimella • Jokaisella osastolla oma palvelin • Lopputulos tarjoaa saman määrän tietoa ja palvelua kuin hakemisto mutta kyseessä on monta eri palvelua vs. yksi hakemisto. (Vaatii monta konfigurointia?)
Tiedon monistus • Saman tiedon säilyttämistä useassa eri paikassa • Luotettavuus, saatavuus • Suhteellinen kuormitus vähenee • Tieto lähempänä käyttäjää • Tiedon yhtenäisyys hetkellä x kyseenalainen (synkronointi) - harvoin harmia
Suorituskyky • Hakemistopalvelun käyttäjäkunta suurempi kuin tietokannoissa? • Hakemistopalvelun käyttäjäkunnan koon kasvu? • Esim. Kulunvalvonta – tietokanta - Ovien määrä vakio • Puhelinluettelo sähköisenä – hakemisto - Asiakaskunta voi kasvaa - Poikkeuksia
Yhteensopivuus • Tietokannat usein ohjelmistokohtaisia • Eivät ymmärrä toisiaan • Päällekkäisyys, resurssit, ylläpito ongelmia • Hakemistopalveluissa protokolla standardoitu • Kilpailijoiden tuotteet puhuvat samaa kieltä • LDAP
X.500 • ISO X.500 –standardi • Tarkoituksena luoda The Hakemisto • Joustava, monikäyttöinen • Monimutkainen • Nojaa OSI-malliin • X.519 Directory Access Protocol protokollaksi asiakkaiden ja palvelimen välille • Vaikea toteuttaa oikeasti LDAP 1990 (IETF)
LDAP • 1. versio RFC1487 • Nykyinen LDAPv3, RFC3377, 2002 • Asiakas muodostaa kyselyn, johon palvelin vastaa • Useiden osumien tapauksessa kukin palautetaan omassa viestissään • Lopetusviesti
LDAP • Puumalli • Järjestöt, yritykset (hierarkia) • Informaatiotasot root, country, organization, organizational unit, canonical name (tai userid) jälleen yritykset • X.500-hierarkiamallin mukainen tapa
Puu • Kaikkien informaatiotasojen käyttö ei ole pakollista. Tasojen järjestystä ei voi vaihtaa
Puu • Juuria vain yksi • Haaroja joka tasolla vaihteleva määrä • Jokainen puun solmu sisältää tietoa • Tieto on esitetty avain-arvopareina, parien merkkaaman tiedon riippuessa solmun informaatiotasosta (country, uid, ...) • Yksilöivät ja täydentävät attribuutit • Alemmalla tasolla aina kaikki ylempien tasojen yksilöivät attribuutit
Yksilöiviä avaimia • Juuren attribuutteja ovat domain-komponentit, dc (aina yksilöiviä) • Dc:t ovat nimensä mukaisesti jonkin domainnimen osia. Esim. www.lut.fi koostuu kolmesta komponentista: • Dc=www, dc=lut, dc=fi • Maatasolla yksilöivä avain on maakoodi: c=FI • Organisaatiotasolla o=LTY • Ou, cn, uid
Distinguished name • Kukin tietoalkio voidaan tunnistaa yksilöllisesti sen tunnusnimen dn avulla • Uid=0222188,ou=tlt_osasto,o=LTY,c=FI,dc=www,dc=lut,dc=fi • Vs. www.lut.fi/FI/LTY/tlt_osasto/0222188 • Vasemmanpuoleisin attribuutti omassa ryhmässään yksilöllinen, vaikkei kokonaisuudessa olisikaan (relative dn)
LDIF ja olioluokat • Lightweight Directory Interchange Format • Solmujen sisältämän datan esitysmuoto • Ylimpänä dn • Olioluokan ilmoittamiseen objectClass-rivit • Esim. Person-olioluokka mahdollistaa parin tiedon merkkaamisen: telephoneNumber, seeAlso, sn, ... • organizationalPerson laajentaa Personia: katuosoite, ym. • Oliot määritellään skeemoilla
Active Directory • Tulee mm. Windows Server 2003 mukana • Ei pelkästään Windowsille • LDAP-yhteensopiva • GUID (128bit) ja UPN (olio@domainnimi) • Win- ja Lin-resurssien yhteensovittaminen SADMS:n avulla (Samba Active Directory Member Services) • SADMS toimii graafisessa käyttöympäristössä • Vaatii vähintään yhden Win-AD-palvelimen
CCSO Nameserver • Central Computing Services Office @ University of Illinois. • Palvelu tunnetaan myös nimellä Ph • Käytössä mm. LTY:ssa • Pääsääntöisesti sähköiseksi puhelinluetteloksi • Sisältää vain muutaman valmiin olioluokan, mutta ne sopivat hyvin henkilötiedon tallentamiseen • Yksinkertaisuus on valttia
Käytännön osuus • Toteutetaan sähköpostiosoitteen automaattinen haku • Palvelinohjelmana OpenLDAP • Lahiverkot3 (sisäverkko) • Asiakasohjelmina Windows-alustalla Mozilla Thunderbird ja Microsoft Outlook Express
Esivalmistelut • Aptitude install slapd • Tai pakettien haku netistä: • http://www.openldap.org/software/download • Tarvitaan myös Berkely Database taustalle • http://dev.sleepycat.com/downloads • Imuroidaan paketit koneelle hakemistoihin /home/lahi/berkeleydb_paketti/ /home/lahi/openldap_paketti/
Epäonnistunut asennus #1 • Error: BDB/HDB: BerkeleyDB not available • Havaitaan, että BDB pitää tosiaan asentaa • Configure: error: BerkeleyDB version mismatch • Dokumenttien mukaan BDB 4.4.20 ja OpenLDAP 2.3.20 ovat yhteensopivia. Havaitaan, että ne eivät ole. • BDB:n voi poistaa komennolla /home/lahi/berkeleydb_paketti/db-4.4.20.NC/build_unix/make uninstall
Epäonnistunut asennus #2 • Asetetaan ympäristömuuttujat käsin • Mutta se ei auta • Configure: error: BDB: BerkeleyDB version incompatible • Havaitaan erilaisia virheilmoituksia kokeiltaessa yhteensä kahdeksaa muuta yhteensopivaa OpenLDAP- ja BDB-versiota. • Lopulta: • http://www.openldap.org/faq/data/cache/1158.html • Palataan tähän hetken päästä.
Aptitude install slapd • aptitude install slapd
Asennus, BDB • Puretaan BDB:n tar-pallo: gunzip –c db-4.3.29.NC.tar.gz | tar xvfB – • Purkautuu hakemisto ./db-4.3.29.NC/ jonka sisällä mennään hakemistoon build_unix ja annetaan käskyt: ../dist/configure make make install
Temppu • BDB on nyt käyttökunnossa hakemistossa /usr/local/BerkeleyDB.4.3 ...mutta ei ihan. • Debian ei osaa etsiä BDB:tä oikeasta paikkaa, joten kopioidaan tiedostot sinne mistä se niitä etsii: • cp /usr/local/BerkeleyDB.4.3/lib/* /usr/lib • cp /usr/local/BerkeleyDB.4.3/include/* /usr/include • Nyt BDB on OK
Asennus, OpenLDAP • gunzip –c openldap-stable-20060227.tgz | tar xvfB – • cd openldap-2.3.20 • pico INSTALL ja pico README • ./configure (./configure –help) • Tässä välissä ei pitäisi tulla virheilmoituksia • make depend • make • make test suorittaa pitkän sarjan testejä, ei muuta • make install • Asennus on valmis
Konfigurointi • LDAP-käyttäjä? • BDB ei vaadi toimenpiteitä • OpenLDAP:n varsinainen palvelinohjelma on nimeltään slapd • /usr/local/etc/openldap/slapd.conf • Lisäksi tarjolla olisi slurpd tiedon replikointiin, mutta koska palvelimia on vain yksi, käytetään slapd • Muut OpenLDAP-paketin ohjelmat ovat tiedon lisäämiseen ja poistamiseen
slapd.conf • Koostuu kommentti- ja tavallisista riveistä • Kommentit erotetaan risuaidalla # • Tiedoston rakenne on seuraavanlainen: <globaalit asetukset> database <tietokannan 1 tyyppi> <tietokannan 1 asetukset> database <tietokannan 2 tyyppi> <tietokannan 2 asetukset> ...
slapd.conf tarkemmin # Globaalit asetukset # Tässä määritellään käytettävät skeemat, eli mitä olioluokkia on käytössä include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema include /usr/local/etc/openldap/schema/nis.schema # Hakemiston tietokantaan ei tarvitse olla kaikilla pääsyä kaikkialle. # Oletuksena kuitenkin on. Siksi ao. lisätyt rivit ovat periaatteessa turhia, # mutta ne alleviivaavat kyseistä faktaa access to * by * read access to * by dn="cn=root,dc=lahiverkot,dc=net" write # Globaalit asetukset päättyvät
slapd.conf tarkemmin # Tietokannan tyyppi, käytetään BDB:tä (vaihtoehtona HDB) database bdb # Loput tietokannan asetukset # Määritellään DN-pääte, jolla varustetut kyselyt # päätyvät tähän kantaan # Tämä on siis yksittäisen tietokannan DN suffix "dc=lahiverkot,dc=net" # Määritellään pääkäyttäjä, jonka toimia # ei rajoiteta mitenkään # vain rootdn, joka esittäytyy seuraavalla dn:llä, # saa suorittaa kirjoitusoperaatioita rootdn "cn=root,dc=lahiverkot,dc=net"
slapd.conf tarkemmin # Tässä määritellään pääkäyttäjän salasana, joka on myös salakirjoitettu # Salasanana käytetään yllätyksellistä salasanaa ”salasana” rootpw {SSHA}yDrjRsc6KTZw1rIsjX9CCGr1GRDUENuW # Salakirjoitus on suoritettu slappasswd-ohjelmalla. Toinen tapa suorittaa # salaus olisi käyttäen shellissä perl-komentoa # perl -e "print crypt('tyst','ny');" # missä tyst on haluttu salasana ja ny on suolaa. Tämän jälkeen # salasana ilmoitettaisiin seuraavanlaisella rivillä: # rootpw {crypt}nycZx7J.ldnr2 # jos halutaan, ei tarvitse käyttää mitään salausta # vaan jättää salasana selkokielisenä: # rootpw vaikeajasalainensana
slapd.conf tarkemmin # Määritellään hakemisto, jonne kannan tiedostot tallennetaan # Hakemisto täytyy käydä itse tekemässä, slapd ei sitä osaa. directory /usr/local/var/openldap-data # Lopuksi määritellään olioluokat, joita kantaan voidaan # tallentaa. Lisäksi merkataan, millaisia hakuja voidaan # tietojen suhteen suorittaa. index cn,sn,title,mail,uid eq,approx index objectClass eq # Jos käytössä olisi toinen tietokanta, kerrottaisiin # sen tyyppi ja asetukset tästä alkaen.
Hakemiston käyttö: ldapadd • Palvelu käynnistetään komennolla /usr/local/libexec/slapd • Sammuttaminen: kill –INT <slapd-ps> • Jotta palvelusta olisi hyötyä, tarvitaan siihen tietoa: • /usr/local/bin/ldapadd –D ”cn=root,dc=lahiverkot,dc=net” –w salasana –f /usr/local/etc/openldap/lahiverkot.ldif
Hakemiston käyttö: ldapsearch • Tiedon etsiminen hakemistosta • Seuraava käsky käy läpi kaikki hakemiston merkinnät: • ldapsearch –v –x –b ’dc=lahiverkot,dc=net’ –s sub • Hakemistossa on kuitenkin vasta juuri ja yksi henkilö, joten sinne voisi lisätä lisaa.lahiverkot.ldif-tiedoston sisällön
Hakemiston käyttö: ldapmodify • hakemistoon on lisätty jo lisaa.lahiverkot.ldif-tiedoston sisältö • Nyt olemassaolevaa dataa muokataan: • Ldapmodify –x –W –D ”cn=root,dc=lahiverkot,dc=net” –f muokkaa.ldif • Ldapmodify suorittaa tiedostossa määritellyt muutokset
Hakemiston käyttö: ldapdelete • Yksittäisen merkinnän poistaminen hakemistosta tapahtuu seuraavasti: • ldapdelete –v –x –D ”cn=root,dc=lahiverkot,dc=net” –W ”cn=Brian Kottarainen,dc=lahiverkot,dc=net” • Usean merkinnän poistaminen tapahtuu komennolla rm * tietokantahakemistossa
Outlook Express ja LDAP • LDAP:n käyttöönotto helppoa: • Ohjelma käynnistetään • Tools-valikko Accounts. • Internet Accounts-ikkuna aukeaa. Oikeasta ylälaidasta kohta Add Directory Service • Uuteen ikkunaan kirjoitetaan koneen 3 IP-osoite: 192.168.1.13 • Painetaan Next, Yes, Next, Finish. • Internet Accounts Properties Advanced • Search Base-kohtaan kirjoitetaan haluttu hakemisto: ”dc=lahiverkot,dc=net” • Kokeillaan palvelua: Ruvetaan kirjoittamaan uutta viestiä. Osoiteriville kirjoitetaan ale ja painetaan Check. • Riville pitäisi ilmestyä Aleksi Mustonen
Thunderbird ja LDAP • Tools Account Settings • Sivupaneelista Composition & Addressing • Use a Different LDAP Server • Edit Directories • Add: palvelimen nimi, osoite, kannan dn • Ja kokeilemaan vaikka osoitekirjaan
Yhteenveto • LDAP on kätevä, standardinmukainen protokolla luetteloitavan tiedon välittämiseen • Ei korvaa relaatiotietokantoja • Pienempään tarpeeseen riittää Ph • Käyttöönotto helppoa jos tietää mitä tekee • Dokumentaatioon ei pidä luottaa liikaa • Helppoa ylläpitää ja käyttää