Ldap'i õpiobjekt: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Line 243: Line 243:


OpenLDAP-il on veidi erinev ligipääsu seadistusmeetod vana (e. seadustusfailist) ja uue (e. andmebaasist) seadistamise jaoks, seda lähtuvalt seadistuse asukohast (kirjutamisest seadistusfail vs. andmebaasi importimisest). Õiguse andmise sisuline osa on peaaegu sama, erinevus vaid andmebaasi importimisel vajalik lisarida faili alguses,mida seadistusfaili puhul ei kirjutata:
OpenLDAP-il on veidi erinev ligipääsu seadistusmeetod vana (e. seadustusfailist) ja uue (e. andmebaasist) seadistamise jaoks, seda lähtuvalt seadistuse asukohast (kirjutamisest seadistusfail vs. andmebaasi importimisest). Õiguse andmise sisuline osa on peaaegu sama, erinevus vaid andmebaasi importimisel vajalik lisarida faili alguses,mida seadistusfaili puhul ei kirjutata:
'''TABEL'''
{| class="wikitable" border="1"
|<ligipääsu direktiivi nimetus> ::= access to <ligipääsuobjekt- vt Tabel 3>
[by <ligipääsusubjekt- vt Tabel 4> [<ligipääsutase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+
|}
*Valem 1- Ligipääsuõiguse reguleerimine konfiguratsioonifailist seadistamisel <br><br>


<ligipääsu direktiivi nimetus> ::= access to <ligipääsuobjekt- vt Tabel 3>
{| class="wikitable" border="1"
[by <ligipääsusubjekt- vt Tabel 4> [<ligipääsutase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+
|olcAccess: <ligipääsu direktiivi nimetus>  
*Valem 1- Ligipääsuõiguse reguleerimine konfiguratsioonifailist seadistamisel
 
olcAccess: <ligipääsu direktiivi nimetus>  
<ligipääsu direktiivi nimetus> ::= to <ligipääsu objekt- vt Tabel 3>
<ligipääsu direktiivi nimetus> ::= to <ligipääsu objekt- vt Tabel 3>
[by <ligipääsu subjekt- vt Tabel 4> [<ligipääsu tase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+
[by <ligipääsu subjekt- vt Tabel 4> [<ligipääsu tase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+
|}
*Valem 2- Ligipääsuõiguse reguleerimine andmebaasi seadistust kasutades
*Valem 2- Ligipääsuõiguse reguleerimine andmebaasi seadistust kasutades


Line 263: Line 265:
Tabel 3 Ligipääsuobjekti määramise viisid
Tabel 3 Ligipääsuobjekti määramise viisid
'''TABEL3'''
'''TABEL3'''
{| class="wikitable" border="1"
|Tähis
|Tähendus
|-
|*
|Kehtib kõigi kirjete kohta
|-
|dn.regex=<regex>
|DN piiratakse kasutades regulaaravaldisi
|-
|dn.exact=<regex>
|DN piiratakse täpse DN'ga kasutades regulaaravaldisi- vaata näiteid!
|-
|käsitlusala: base=<DN>
|Base ühitub ainult näidatud DN-i kirjega
|-
|käsitlusala: one=<DN>
|One ühitub ainult kirjetega, mille DN on nendest hierarhiliselt kõrgemal
|-
|käsitlusala: subtree=<DN>
|Subtree ühitub kõigi alampuu kirjetega, mille kõrgeimal hierarhjal paiknev kataloog (juurkataloog) on antud DN
|-
|käsitlusala: children=<DN>
|children ühitub kõigi DN all olevate kirjetega (aga mitte DN-i poolt nimetatud kirjega)
|-
|[filter=<ldapfilter>]
|Kirjed valitakse LDAP filtriga, sarnaselt ldapsearch tööriista filtri kasutamisele
|-
|[attrs=<attrlist>]
|Konkreetsete atribuutide loetelu, atribuudid eraldatakse üksteisest komaga
|}


Ligipääsuobjekti saab valida kas DN-i või LDAP filtrit kasutades. seejuures saab ühe diretkiivi piires olla vaid üks ligipääsuobjekt, millega võib olla seotud mitmeid subjekte, kellest igaühele on omistatud 1 ligipääsutase.
Ligipääsuobjekti saab valida kas DN-i või LDAP filtrit kasutades. seejuures saab ühe diretkiivi piires olla vaid üks ligipääsuobjekt, millega võib olla seotud mitmeid subjekte, kellest igaühele on omistatud 1 ligipääsutase.

Revision as of 00:47, 6 December 2011

Õpijuhis

Õpiobjekti eesmärk on kataloogiteenuse teoreetiliste teadmiste ja praktiliste oskuste arendamine. Teadmiste arenguks on õpiobjekti osaks õppematerjalid, ning praktiliste oskuste arendamiseks on õppekeskkonna eksportfail, mida on võimalik kasutada Oracle VM VirtualBox programmiga(EIK kasutab ... õppekeskonda). Õppekeskkonnana kasutatakse Ubuntu 11.04 Server operatsioonisüsteemi.

Õpiobjektiga töötamise eeltingimused:

  • õpiobjekti kasutaja oskab kasutada Ubuntu operatsioonisüsteemi käsurealt, sh vähemalt ühte käsurea tekstiredigeerimise programmi. Peaks oskama teenust taaskäivitada, programmiuuendusi paigaldad, oskama faili/kataloogi arvutist üles leida(locate, find), vaadata milliseid porte kuulatakse jne;
  • õpiobjekti kasutaja teab arvutivõrkude alusmõisteid;
  • virtualiseerimisprogrammist VirtualBox tulenevalt seatakse peremeesarvuti (ingl. host) riistvarale järgmised nõuded: x86 platform; vähemalt 512 MB mälu; vähemalt 1.5GB vaba kõvakettaruumi. Seda eeltingimust ei rakendata, kuna kasutatakse teist õpikeskkonda!


Õpiobjekti komponendid

Õpiobjekti komponendid on:

  • õpijuhis- õpiobjekti üldine sissejuhatav tekst;
  • õpetaja kasutusjuhend- juhend õpetajale või auditoorset/e-õpet korraldavale isikule, mis sisaldab teavet keskkonna ettevalmistamise kohta;
  • õpilase kasutusjuhend- juhend õpilasele, mis sisaldab täpsemaid tegevusjuhendeid õppetöö läbijale;
  • õpikeskkonna loomise ja seadistamise juhend(sh. õpikeskkond ise)- juhend, mis õpetab õpiobjekti osaks olevat virtuaalkeskkonda looma ja seadistama Oracle VM VirtualBox programmi kasutades;
  • õppematerjal(id)- teoreetiline ja praktiline õppematerjal, kus õpilane saab teadmised ja oskused;
  • personaalse ülesande loomise ja kontrolli skript- bash skript, mis koostab õppija eesnime, perenime ja koodi alusel tema personaalsete andmetega laboriülesande ja teine skript, mis kontrollib laboriülesande sooritust.


Õpiobjekti kasutusjuhend

Käesolev õpilase kasutusjuhend on loodud teejuhiks õpiobjekti kasutamisel.

Õpilase tegevuste loetelu nende õiges järjekorras:

1. Loe läbi terve õpilase kasutajajuhend, et teada saada, mida ja millises järjekorras sa tegema pead, selleks et õpiobjekti teadmised ja oskused kinnistuksid parimal võimalikul viisil.

2. Kontrolli, et sinu kasutada oleks kõik õpiobjekti komponendid .

3. Loe läbi ja püüa mõista Teoreetilise õppematerjali sisu. On väga oluline, et saaksid aru ja oskaksid oma sõnadega selgitada „Teoreetilises õppematerjalis“ esindatud mõisteid ja kokkuvõtvalt rääkida seal olevatest peatükkidest. Kui oled veendunud, et oled „Teoreetilise õppematerjali“ sisu omandanud asu siinse tegevusloetelu järgmise punkti juurde.

4. Kui Sinu jaoks on õpikeskkond loodud ja sa tead kus see asub, ning kuidas sellele ligi pääseb siis jätka järgmise punktiga! Kui pead endale õpikeskkonna ise looma siis järgi „Virtuaalmasina importimise ja esmase seadistamise juhendit“, et luua endale virtuaalne õpikeskkond Ubuntu 11.04 Server operatsioonisüsteemil, mis on vajalik praktiliste laboriülesannete lahendamiseks. Olles mainitud juhendi läbinud, ning sellega endale virtuaalkeskkonna loonud ning kontrollinud ja veendunud selle töökorrasolekus asu järgmise tegevusloetelu punkti juurde. EIK tudengitel on õpikeskkond ette loodud!

5. Loe läbi ja püüa mõista Praktilise õppematerjali sisu. On oluline, et saaksid aru, miks ja millal mingit käsku on vaja kasutada ja mis selle käsu tulemusel juhtub. Käskude pähe õppimine ei ole eesmärk!

6. Kasuta virtuaalset õpikeskkonda, et lahendada laboriülesanded. Selleks sisene virtuaalkeskkonda ,kus kodukataloogis käivita „loo_ylesanne.sh“ skript, mille tulemusel luuakse õpilase personaalsete andmete (eesnimi, perenimi ja üliõpilaskood) alusel laboriülesanded, mida saab hiljem uuesti lugeda failist „ylesanded.txt“. Laboriülesannete läbimist ja õiget sooritust on võimalik kontrollida käivitades faili „kontrollskript.sh“. Kontrollskripti käivitamiste arv ei ole piiratud! Kui saad kõik ülesanded lahendatud ja seda kinnitab ka kontrollskript, anna sellest teada õppejõule, kes lahenduse üle kontrollib ja mõnda „Teoreetilise õppematerjali“ sisu mõistet küsib.


Õpikeskkonna loomine ja seadistamine

Õpilasele on ettevalmistatud virtuaalkeskkonnast tehtud eksportfailid Ubuntu Server 11.04 operatsioonisüsteemiga, et vähendada keskkonna installeerimiseks kuluvat aega. Virtuaalmasina failid tuleb laadida enda arvutisse ja importida läbi vastava viisardi. Täpsemad juhised virtuaalmasina ettevalmistamiseks Oracle VM VirtualBox 3.2 ja 4.0 tarbeks on õpiobjekti üheks osaks olevas juhendis.


Praktiline õppematerjal


OpenLDAP serveri ja klienditööristade paigaldamine

Kõigepealt paigalda OpenLDAP server, paketi nimeks Ubuntu paketihalduris 'slapd', klienditööriistad asuvad paketis 'ldap-utils', need on vajalikud, et kasutada klienditööriistu nagu näiteks: ldapsearch, ldapadd jne. Pakid paigaldatakse järgmise käsuga:

apt-get install slapd ldap-utils 

Paigaldamise ajal küsitakse seadistamiseks erinevaid küsimusi, mille vastamisega peab õppija iseseisvalt hakkama saama, kasutades õpitud teadmisi. Kui paigaldamise käigus küsiti vaid administraatori parooli või soovid ennast parandada on abiks käsk:

dpkg-reconfigure slapd 

Paigaldamise lõpuks tuleks üle kontrollida kas serveri seadistufailis /etc/ldap/slap.d/cn=config/olcDatabase{0}configure.ldif ja samas kataloogis asuv olcDatabase{1}hdb.ldif või olcDatabase{1}bdb.ldif sisaldavad paigaldamisel sisestatud andmeid, sest õppematerjali loomise käigus tuvastati korduvalt, et need andmed ei ühtinud. Vajadusel paranda erinevused!


LDAP serveri ja klienditööriistade seadistamine LDAP klienditööriistu seadistatakse /etc/ldap/ldap.conf failist. Serveri seadistamiseks on alates 2005-nda aasta juunist kaks võimalust:

  • /etc/ldap/slapd.conf seadistusfail (kasutati kuni versioonini 2.4) või
  • kataloogis /etc/ldap/slapd.d/cn=config olevad failid (võimalik kasutada alates versioonini 2.3). Viimast seadistusvõimalust tuntakse kui Configuration Backend, mida kasutab ka käesolev õppematerjal. Antud töös piirdutakse kataloogis etc/ldap/slapd.d/cn=config olevate olcDatabase={0}config.ldif ja olcDatabase={1}bdb.ldif failidega, kuna laboris peab õpilane vaid neid serveri seadistufaile muutma.

Kahe erineva seadistuse põhiline vahe seisneb selles, et vanas (slapd.conf) seadistusfailis on kogu seadistus koondatud ühte faili (slapd.conf) ja seadistuste kehtestamiseks serveris on tarvis teha (LDAP) serverile taaskäivitus. Uues seadistusviisis on konfiguratsioon andmebaasis ja failisüsteemis on vaid viide andmebaasile, ning seadistusemuudatused ei eelda enam (LDAP) serveri restartimist. Alates Ubuntu versioonist 8.10 on vaikeväärtusena kasutusel andmebaasis seadistuse hoidmise variant, kuid kasutajale on jäetud võimalus kasutada ka slapd.conf varianti, selleks tuleb teha muudatused /etc/default/slapd failis.[1]


Testime

Järgmiseks testi, kas saad tehtule ligi:

ldapsearch -x -D 'cn=<rootDN>,cn=config' -W
Võtmed: x- lihtne autentimine(ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli

Vastus võiks olla selline:

 # search result 
 search: 2 
 result: 0 Success või 
 result: 32 No such object
 ldap_sasl_bind(SIMPLE): Cant contact LDAP server (-1)
  • result: 0 Success- tähendab, et päring LDAP andmebaasi jõudis kohale ja sealt saadi vastus.
  • result: 32 No such object- tähendab, et LDAP serveriga saadi ühendust, kuid andmebaasis ei olnud päritud objekti.

Tuleks kontrollida, kas klienditööriista seaded on õiged ja kas tehtud päring oli õige.

  • ldap_sasl_bind(SIMPLE): Cant contact LDAP server (-1)- ilmslt LDAP server seisab või ei saada baseDN-iga ühendust, vaata kas porti(389) kuulatakse,

selleks sisesta terminali:

netstat -anp|grep 389 

vajadusel restardi teenus:

/etc/init.d/slapd restart 

ja kontrolli, kas päringu vastus muutus, kui mitte siis põhjuse leiad /var/log/syslog failist.

LDAP serveri andmebaasi kirjete laadimine

Sisu laadimiseks on kaks peamist võimalust: kasutada mõnd veebipõhist administreerimisliidest (näiteks phpLDAPadmin) või konsoolilt kasutades kliendi- või serveri utiliite (näiteks ldapadd või slapadd). Esmalt vaatame konsoolilt andmete laadimist, selleks on 2 võimalust: slapadd (serveri utiliit) ja ldapadd (kliendi utiliit). Peamine vahe on selles, et kliendi tööriistu kasutades peab LDAP server töötama, serveri tööriistu kasutades aga seisma, lisaks on erinev suvandite (options) kasutus!

Soovitav on kasutada kliendi tööriistu, kuna siis ei pea serverit seiskama ja ei tekitata andmebaasi failide omanikuks root kasutajat, mis tuleks openldap kasutaja omandisse tagasi muuta. Seepärast on selles juhendmaterjalis kõik laadimised tehtud ldapadd käsuga, näiteks:

ldapadd -x -D "<kasutaja DN>" -w <parool> -f <fail> 
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja DN; w- sisestatakse parool kohe; f- imporditav fail.

Veebipõhise LDAP haldusliidese paigaldamine ja seadistamine

Et saada paremat üldpilti ja paremini mõista, millega tegeletakse, on soovitav paigaldada ja seadistada veebipõhine LDAP-i administreerimise liides phpLDAPadmin. Seadistamise hõlbustamiseks on õpiobjektiga kaasas fail config.php, kus tuleb asendada

cn=root,dc=naide,dc=vot enda konfiguratsioonile vastavaks, asendus tuleb teha reas:
$servers->setValue('login','bind_id','cn=root,dc=naide,dc=vot'); 

Administreerimisliidesele ligipääsuks minna hostmasinas aadressile http://ldapserveri_ip/phpldapadmin. Sissepääsuks valida kõigepealt vasakpoolsest paneelist oma serveri nimi ja seejärel login. Login DN väli peab sisaldama nii administraatori kasutaja nime, kui ka base DN väärtust. Veebiliidese kasutamine on soovituslik ja võrdlemisi lihtne, seepärast ei peatuta sellel siinkohal pikemalt.

Kirjete otsimine ja muutmine LDAP-is

Põhineb OpenLDAP tööriista ldapsearch juhendil man ldapsearch.
Päringute tegemiseks on OpenLDAP kliendi tööriistana paigaldatud ldapsearch, mis võimaldab ühenduda LDAP serveriga ja sealt otsida andmeid. Näiteks kirje otsimise käsk:

ldapsearch -x -D 'cn=<kasutaja DN>' -W <filtreeriv tingimus> <väljastatavad atribuudid> 
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli;
<filtreeriv tingimus>- võimaldab otsingut piirata; <väljastatavad atribuudid>- võimaldab pärigu tulemuses näha vaid soovitud atribuutide infot-eraldajaks tühik.

Vaata ka teisi võtmeid ja nende tähendust õpikeskkonnas kirjutades käsureale:

man ldapsearch

Kirjete muutmine LDAP-is

Põhineb OpenLDAP tööriista ldapmodify juhendil man LDAPModify.

Kirjetesse muudatuste tegemiseks on paigaldatud OpenLDAP kliendi tööriist ldapmodify, mille abil saab andmebaasi uusi andmeid lisada või seal olemasolevaid muuta/täiendada/kustutada. Muudatusi saab sisestada käsurealt või (LDIF) failist:

ldapmod -x -D 'cn=<rootDN>' -W -f <faili asukoht> 
ldapmod -x -D 'cn=<rootDN>' -W 
Võtmed: x- lihtne autentimine (ühendust ei krüpteerita); D- kasutaja ja base DN; W- küsitaks parooli; -f sisendfaili asukoht.

Tabeli 2 vasakpoolset veergu tuleks vaadata kui muudatuse tegemise faili sisu ning parempoolset veergu kui seletust, mida antud rida failis tähendab. Vasakpoolses veerus olev rida changetype tähendab, et ühe muudatuskorral failis võib kuuluda vaid üks valik (add, delete, modrdn, moddn, newrdn või newsuperior).

Faili sisu Seletus ja näide faili sisu kohta
#kommentaar #(trellid) rea alguses võimaldab kommentaari lisada, programmid #alustatud rida ei loe!
dn: <kirjenimetus (distinguished name)> dn: cn=Bjorn Jensen,dc=example,dc=com „dn:..“ näitab kirje asukohta puus.
Changetype: Add Kirje lisamiseks
Changetype: Delete Kirje kustutamiseks
Changetype: Modrdn | moddn {reavahetus}
[newrdn: <rdn> {reavahetus}
deleteoldrdn: [0|1] newsuperior: <dn>]
Kirje DN ja RDN muutmiseks.

Suvand Newrdn võimaldab kirje RDN'i muuta. Newrdn kasutamisel tuleb ka deleteoldrdn suvandit kasutada valides väärtuseks: 0-vana rdn jäetakse alles; 1- vana RDN kustutatakse.
Newsuperior võimaldab kirje liigutada uue kataloogi alluvusse.
Changetype: Modify {reavahetus}
[add: <atribuut| objektiklass>

| delete:<atribuut| objektiklass>
| replace:<atribuut| objektiklass>]{reavahetus}
<atribuut| objektiklass>: <uus väärtus

Võimaldab atribuuti, objektiklassi või mõnd muud kirje osa lisada(add), kustutada(delete), vahtada(replace).
NB! Oluline on, et reavahetused oleks õigetes kohtades!
- Tähistab, et sama dn ja changetype'i kasutatakse ka järgmise muudatuse puhul.


Näited[RFC 2849]:

# muudetakse RDN ja tõstetakse kogu sisu uue kataloogi alluvusse.
dn: ou=PD Accountants, ou=Product Development, dc=airius, dc=com 
changetype: modrdn 
newrdn: ou=Product Development Accountants 
deleteoldrdn: 0 
newsuperior: ou=Accounting, dc=airius, dc=com 

# lisatakse 'postaddress'; kustutatakse 'description'; asendatakse olemasolev(ad) 'telephonenumber' kahe uuega; # kustutatakse see facsimiletelephonenumber mille väärtus on „+1 408 555 9876“. dn: cn=Paula Jensen, ou=Product Development, dc=airius, dc=com changetype: modify add: postaddress postaddress: 123 Anystreet $ Sunnyvale, CA $ 94086 - delete: description - replace: telephonenumber telephonenumber: +1 408 555 1234 telephonenumber: +1 408 555 5678 - delete: facsimiletelephonenumber facsimiletelephonenumber: +1 408 555 9876

Skeemifaili koostamine ja LDAP andmebaasi laadimine

Skeemifaili koostamine

LDAP-is on võimalik hoida ja sealt pärida ükskõik millist seal sisalduvat infot, vajadusel saab alati infovälju – objektiklasse/atribuute ka juurde lisada. Selle tarbeks on valmis hulk erinevaid skeemifaile (kataloogis /etc/ldap/schema/) ja kui neist ei piisa on võimalik ka ise neid juurde luua, võttes eeskujuks olemasolevad näidisfailid. Tähelepanu tuleks pöörata skeemifailide sisse kirjutatud sõltuvus viidetele, st kui on öeldud: „Depends upon core.ldif and cosine.ldif“ siis peab enne selle skeemi laadimist olema laetud core.ldif ja cosine.ldif, kuna nende skeemide atribuute või objektiklasse kasutab laetav skeemifail.

#Lihtsa telefoniraamatu skeemi näide
attributetype ( 1.1.2.1.1 NAME ( 'eesnimi' ) 
   DESC ' eesnimi' 
   SUP name ) 
attributetype ( 1.1.2.1.2 NAME ( 'perenimi' ) 
   DESC ' perekonna nimi' 
   SUP name ) 
attributetype ( 1.1.2.1.3 NAME ( 'telefoninumber' )
   DESC ' telefoninumber' 
   EQUALITY telephoneNumberMatch 
   SUBSTR telephoneNumberSubstringsMatch 
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.50{32} ) 
attributetype ( 1.1.2.1.4 NAME ( 'mailiaadress' ) 
   DESC 'Mailbox' 
   EQUALITY caseIgnoreIA5Match 
   SUBSTR caseIgnoreIA5SubstringsMatch 
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} ) 
attributetype ( 1.1.2.1.5 NAME ( 'kirjeldus' )
   DESC 'Lisainfo' 
   EQUALITY caseIgnoreMatch 
   SUBSTR caseIgnoreSubstringsMatch 
   SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )
objectclass ( 1.1.2.2.1 NAME ( 'telraamat' )
   DESC 'Telefoniraamat' 
   SUP top STRUCTURAL 
   MUST ( eesnimi $ perenimi $ telefoninumber ) 
   MAY ( mailiaadress $ kirjeldus ) )

Eelnev on näidis lihtsa telefoniraamatu skeemi sisust, mis on koostatud autori poolt võttes aluseks core.schema skeemifaili ja ingliskeelse skeemide loomise õpetuse. Seda materjali soovitab autor lugeda ka õpilastel täiendava teadmise omandamiseks.
Vajalik on teada, et OID (Object Identifier) ehk numbriline osa atribuudi ja objektklassi järel, ei tohi kattuda teiste atribuutide/objektklasside OID-iga. Omavalmistatud atribuutidele on eraldatud OID algusega 1.1.2.1.1 ja objektklassile 1.1.2.2.1, ning omavalmistatud atribuutide ja objektiklasside nimed peaksid algama "x-" liitega.

Trükkitähtedes olevad tähised tähendavad: 
NAME- atribuudi/objektklassi nimi; DESC (Description)- kirjeldus; SUP (Superior ObjectClass)- ülem objektklass, mille piiranguid atribuut/objektiklass kasutatab; EQUALITY- reegel, mis kontrollib, et sisestatakse just seda tüüpi andmeid; SUBSTR (SubString)- reegel, mis kontrollib, et sisestatav alamstring sisaldab määratud tüüpi andmeid; SYNTAX- täidetava välja stringi numbriline väärtus, mis sisaldab välja süntaksi koodi; MUST- täitmiseks kohustuslike atribuutide nimistu; MAY- täitmiseks vabatahtlike atribuutide nimistu.

Ebaselguse korral loe täiendavalt OpenLDAP-i administraatori teejuhti.

LDAP andmebaasi täiendavate andmeskeemide (schema) laadimine

Skeemiandmete laadimise juures on esmalt vaja veenduda, et andmed on õiges formaadis. Kuni OpenLDAP versioonini 2.4 hoiti skeemifaile .schema-failides. Alates versioonist 2.4 hoitakse ldif-failides. Lisaks nimele muutus ka sisu, mistõttu ei pääse failinime muutmisega vaid tuleb .schema-fail ümber konverteerida ldif-failiks, selleks tuleb järgida järgmist juhendit:
1.luua fail skeemi_konverteerimine.conf, mis sisaldab viidet kõigile neile skeemifailidele, mida LDAP server kasutab. Näiteks:

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
loetelu järgneb

2.loo kataloog, kuhu ajutiselt konverteeritud skeemifailid pannakse:

mkdir /tmp/konverteeritud

3.kasutades slaptest tööriista konverteeri .schema failid ldif failideks käsuga:

slaptest -f skeemi_konverteerimine.conf -F /tmp/konverteeritud

4.järgmiseks on vaja skeem andmebaasi laadida, selleks on kaks võimalust:

  • 1.laadida skeemifailid sarnaselt muudele ldif failidele ldapadd tööriistaga. Selleks tuleb eelnevalt muuta konverteeritud ldif-faili selliseks, et faili esimesel ja kolmandal real ei oleks enam skeemi järjenumbrit({number}), ning faili lõpust tuleb kustutada kõik read peale „structuralObjectClass“ atribuuti (kaasa arvatud). Seejärel laadida fail käsuga:
ldapadd -x -D <administraatoriCN>,cn=config -W -f <faili asukoht>
  • 2.kopeerida skeemi ldif-fail cn=config/cn=schema kataloogi, kus need peale serveri restarti kasutusele võetakse.



LDAP-i õiguste mudel ja õiguste jagamine

Õppematerjal põhineb OpenLDAP administraatori teejuhi refereeringul.
Kataloogiteenus võib sisaldada erineva tundlikusega (sensitivity) informatsiooni, mistõttu võibolla vajalik, et mingile osale informatsioonist peavad kõik piiranguteta ligi saama, seevastu teine osa informatsiooni peab olema nähtav väga väiksele osale kasutajatest.

OpenLDAP-il on veidi erinev ligipääsu seadistusmeetod vana (e. seadustusfailist) ja uue (e. andmebaasist) seadistamise jaoks, seda lähtuvalt seadistuse asukohast (kirjutamisest seadistusfail vs. andmebaasi importimisest). Õiguse andmise sisuline osa on peaaegu sama, erinevus vaid andmebaasi importimisel vajalik lisarida faili alguses,mida seadistusfaili puhul ei kirjutata:

<ligipääsu direktiivi nimetus> ::= access to <ligipääsuobjekt- vt Tabel 3>

[by <ligipääsusubjekt- vt Tabel 4> [<ligipääsutase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+

  • Valem 1- Ligipääsuõiguse reguleerimine konfiguratsioonifailist seadistamisel

olcAccess: <ligipääsu direktiivi nimetus>

<ligipääsu direktiivi nimetus> ::= to <ligipääsu objekt- vt Tabel 3> [by <ligipääsu subjekt- vt Tabel 4> [<ligipääsu tase- Tabel 5>] [<erinev kontrolli võimalus- Tabel 6>] ]+

  • Valem 2- Ligipääsuõiguse reguleerimine andmebaasi seadistust kasutades

Eelpool kirjeldatud valemid (Valem 1 ja 2) koosnevad neljast komponendist: ligipääsuobjekt - Tabelisse 3 on kogutud kõik võimalused, millega määratakse käsitletavat kirjet või atribuuti- ehk mille ligipääsu reguleeritakse; ligipääsusubjekti- Tabelis 4 on kirjeldatud võimalikud varjandid, kuidas määrata kasutajat/kasutajagruppi, kellele ligipääsu muudetakse; ligipääsutase- Tabelis 5 on loetletud erinevad ligipääsuõiguse liigid; erinev kontrolli võimalu- Tabelis 6 on loetletud täiendavad.


Tabel 3 Ligipääsuobjekti määramise viisid TABEL3

Tähis Tähendus
* Kehtib kõigi kirjete kohta
dn.regex=<regex> DN piiratakse kasutades regulaaravaldisi
dn.exact=<regex> DN piiratakse täpse DN'ga kasutades regulaaravaldisi- vaata näiteid!
käsitlusala: base=<DN> Base ühitub ainult näidatud DN-i kirjega
käsitlusala: one=<DN> One ühitub ainult kirjetega, mille DN on nendest hierarhiliselt kõrgemal
käsitlusala: subtree=<DN> Subtree ühitub kõigi alampuu kirjetega, mille kõrgeimal hierarhjal paiknev kataloog (juurkataloog) on antud DN
käsitlusala: children=<DN> children ühitub kõigi DN all olevate kirjetega (aga mitte DN-i poolt nimetatud kirjega)
[filter=<ldapfilter>] Kirjed valitakse LDAP filtriga, sarnaselt ldapsearch tööriista filtri kasutamisele
[attrs=<attrlist>] Konkreetsete atribuutide loetelu, atribuudid eraldatakse üksteisest komaga


Ligipääsuobjekti saab valida kas DN-i või LDAP filtrit kasutades. seejuures saab ühe diretkiivi piires olla vaid üks ligipääsuobjekt, millega võib olla seotud mitmeid subjekte, kellest igaühele on omistatud 1 ligipääsutase. TABEL4

Ligipääsu on võimalik anda taseme nimetusega (näiteks write) või privileegi nimetusega. Seda on oluline teada, sest andes write taseme, antakse automaatselt ka kõik madalama taseme õigused (read, search, compare, auth ja disclose). Kuid on võimalik anda ka vaid üksikuid privileege(vt. Tabel 5).

Tabel 5 Ligipääsutasemed

Tabel 6 Kontroll Ligipääsuõiguseid saab anda kas globaalselt üle kõigi LDAP andmebaaside või iga andmebaasi kohta eraldi. Ligipääsuõiguseid otsitakse kõigepealt andmebaasist, kus kirje paikneb. Ligipääsuõiguste andmisel on väga oluline direktiivide kirjapaneku järjekord, sest õiguste kontrollimisel käiakse nimekiri samas järjekorras läbi ja peatutakse esimesel võimalusel, kui ligipääsubjekti vaste leitakse. Kui ligipääsuõiguste seas ei ole ligipääsuobjektile vastavat direktiivi siis vaikesätetest antakse kirje lugemise õigus. Selleks et infole saaks ligi vaid need kellele see on mõeldud, soovitatakse viimaseks direktiiviks „access to * by * none“

Järgnevalt on toodud näiteid ligipääsuõiguse andmise kohta, kommentaarimärgi(#) taga on lühike seletus antud õiguse kohta. Soovitus on püüda ära arvata, mis õiguseid muudetakse ja milliseks, ning seejärel kontrollida kommentaarimärgi tagant! olcAccess: to * by self write by anonymous auth by * read

  1. muudetakse kõigi kirjete õigusi järgnevaks: 1)kasutaja saab endaga seotud kirjeid muuta; 2)autentimata kasutajad peavad ennast autentima(sisse logima); 3)kõik saavad lugeda- kuna oluline on subjektide järjekord, siis direktiivi piires on objekti(antudjuhul kõigi kirjete) lugemiseks vaja ennast autentida! Ehk selle direktiivi piires on viimane rida sama mis „by users read“ tulenevalt punktist 2!

olcAccess: to attr=userPassword by self =xw by anonymous auth by * none

  1. Piiratakse ligipääsu atribuudi 'userPassword' järgmiselt: 1)kasutaja saab oma parooli uuendada (kuid mitte lugeda); 2)autentimata kasutajad peavad ennast autentima(sisse logima); 3)kõikidel teistel puudub ligipääs.

Käsitlusala (scope) kasutamise näide, erinevuse väljatoomiseks: olcAccess: to dn.children="dc=example,dc=com" by * search olcAccess: to dn.children="dc=com" by * read

  1. Lugemisõigus antakse dc=com alampuule, välja arvatud dc=example,dc=com alampuule, millele antakse otsingu õigus. Kuna kumbki direktiiv ei sobi dc=com jaoks, siis sellele õiguseid ei anta. Selleks, et saaks alampuudest otsida, peab olema lugemisõigus „dc=com“ kirjetele

Kui direktiivide järjekord on oluline: olcAccess: to dn.subtree="dc=example,dc=com" attrs=homePhone by self write by dn.children=dc=example,dc=com" search by peername.regex=IP:10\..+ read olcAccess: to dn.subtree="dc=example,dc=com" by self write by dn.children="dc=example,dc=com" search by anonymous auth

  1. näide kehtib „dc=example,dc=com“ alampuus olevate kirjete kohta. Kõikidel atribuutidel välja arvatud „homePhone“ lubatakse enda kirjet muuta „dc=example,dc=com“ alampuus.

Gruppide õiguste piiramine: Võtame aluseks, et on olemas grupp (administrators), mille defineerib järgmine LDIF vormingus sissekanne: dn: cn=administrators,dc=example,dc=com cn: administrators of this region objectclass: groupOfNames

  1. eelmine rida on oluline grupi ligipääsu andmisel

member: cn=fred blogs,dc=example,dc=com member: cn=somebody else,dc=example,dc=com

Üks võimalus gruppi liikmetele ligipääsu anda on kasutada klauslit by group: olcAccess: to dn.children="dc=example,dc=com" by group.exact="cn=administrators,dc=example,dc=com" write

Või sama asi objektiklassi ja atribuuti kasutades: olcAccess: to dn.children="dc=example,dc=com" by group/groupOfNames/member="cn=administrators,dc=example,dc=com" write

  1. Sellistel kujudel saavad kirjutamisõiguse grupi liikmed, kuid kui „cn=somebody else,dc=example,dc=com“ on omakorda grupi nimi, siis selle grupi liikmetele õigused ei laiene! Alamgrupi liikmeid on võimalik kaasata järgnevalt:

olcAccess: to dn.children="dc=example,dc=com" by set="[cn=administrators,dc=example,dc=com]/member* & user" write

  1. “/member*“ tähendab, et kontrollitakse member atribuuti ja * tähendab, et kontrollitakse rekursiivselt (st. ka gruppide liikmeid), seejärel kontrollitakse, kas autentitud kasutaja DN vastab mõnele eelnenud päringu käigus saadud DN väärtusele. Kui vastab antakse kirjutamise õigus.

Loe lisaks originaalmaterjali OpenLDAP-i administraatori teejuhist[LDAP Access Control].

Linux operatsioonisüsteemides LDAP-ga autentimise seadistamine

Juhend põhineb kuutõrvaja wikil, mida on mõnevõrra kohandatud Ubuntu-ga kasutamiseks.
Paigaldada tuleb paketid:

libnss-ldap, libpam-ldap ja ldap-auth-config.

Paigaldamise käigus küsitakse järgmisi küsimusi, kooloni järel on soovitav vastus (tumedal taustal) ja sulgudes põhjendus:

  • OpenLDAP serveri IP aadressi või masina nimi: ldap://localhost või ldap://127.0.0.1 (OpenLDAP server asub samas virtuaalmasinas);
  • distinguished name (DN): dc=naide,dc=ee ( näiteülesande DN on selline);
  • LDAP versioon: 3 (uuem versioon);
  • kohaliku masina root kasutajale LDAP andmebaasi administraatori õigus: ei (seab ohtu kogu LDAP andmebaasi turvalisuse, kuna pääsedes ükskõik millise masina root kasutajaks on võimalik ka kohene ligipääs LDAP andmebaasile administraatori õiguses);
  • kas LDAP andmebaasile ligipääs nõuab sisselogimist: ei (antud õppematerjalis on andmebaasile ühendumine ilma autentimiseta);

Eelpool olevate vastuste põhjal luuakse /etc/ldap.conf fail. LDAP kasutaja saab nüüd süsteemi sisse logida, kuid tal ei ole kodukataloogi, seega peaks kõigile kasutajatele kodukataloogid tegema või lisama järgmise rea /etc/pam.d/common-session faili lõppu, et süsteem ise puuduolevad kodukataloogid looks:

session required	pam_mkhomedir.so skel=/etc/skel/ umask=0066

Lisaks on kohustuslikud Linuxisse logivatel kasutajatel atribuudid (uid, cn, loginshell, uidnumber, gidnumber, homedirectory, userpassword) ja objektiklassid (account, posixaccount ja top)[2]

Linux ja UNIX operatsioonisüsteemide kasutajate migreerimine

Juhend põhineb Wiki artiklil ja Antti Andreimann LDAP-i õppematerjalil. Kasutajate ülekandmine lokaalsest kasutajate hoidlast OpenLDAPi Paigaldame migrationtools paketi.

apt-get install migrationtools 

Järgnevalt peame veidi muutma migrationtools-i seadistusfaili:

/usr/share/perl5/migrate_common.ph

Kus tuleb asendada järgmised parameetrid enda LDAPi seadistusele vastavaks:

$DEFAULT_MAIL_DOMAIN = "naide.ee";
$DEFAULT_BASE = "dc=naide,dc=ee";

Kopeeri lokaalse masina kasutajaandmete andmed ajutisele pinnale, et neid saaks korrastada edaspidise tegevuse jaoks:

cp /etc/passwd /tmp/
cp /etc/group /tmp/

Redikeeri kopeeritud faile nii, et sinna jääks ainult nende kasutajate andmed, kes reaalselt võiksid soovida arvutisse sisse logida! Tekita andmebaasi juurkataloog:

/usr/share/migrationtools/migrate_base.pl > ~/base.ldif

Redikeeri faili ~/group.ldif nii, et sinna jääks alles ainult root, ou=People, ou=Groups ja ou=Aliases ! Seejärel ekspordi uued väärtused käskudega:

/usr/share/migrationtools/migrate_group.pl /tmp/group ~/group.ldif 
/usr/share/migrationtools/migrate_passwd.pl /tmp/passwd ~/passwd.ldif 

Nüüd on meil kasutajad ja grupid konverditud LDAP ldif formaati. Need omakorda tuleb importida LDAP-i databaasi kasutades järgmisi käske:

ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/base.ldif 
ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/group.ldif 
ldapadd -x -D "cn=admin,dc=naide,dc=ee" -w parool -f ~/passwd.ldif

Varundamine ja taastamine

Teenuse varundamine

Reeglina tehakse varukoopiaid eraldi seadistusfailidest ja andmetest. Neid hoitakse teis(t)el andmekandja(te)l ja teisaldatakse suuremates infosüsteemides automaatprotseduuridega.
Õpiobjekti raames kajastatakse varundamist vaid varundamist vajavate andmete kontekstis: seadistamisfailid ja andmebaas.

Põhineb EIK vikil.
Varukoopiate hoidmiseks loome kataloogid /var/backup/ldap/db ja /var/backup/ldap/db kataloogi järgmise käsuga:

mkdir -p /var/backups/ldap/db/ /var/backups/ldap/konf

Järgmiseks tuleks luua varukoopia andmebaasist, selleks kasutatakse tööriista slapcat, mis väljastab kogu andmebaasi sisu, selle suuname faili, mille saab kohe ka kokku pakkida. Vajalik käsk selleks on järgmine:

slapcat | gzip > /var/backups/ldap/db/backup.`date '+%Y%m%d'`.ldif.gz
Käsu lõpus olev `date '+%Y%m%d` võimaldab automaatselt luua käesoleva päeva andmed formaadis aasta.kuu.päev.

Seadistusfailid asuvad /etc/ldap/ kataloogis, need saab kokku pakitud ja kuupäeva infoga varustatud järgmise käsuga:

tar czvf /var/backups/conf_backup.`date '+%Y%m%d'`.tgz /etc/ldap/*

Teenuse taastamine

Põhineb EIK vikil
Teenuse taastamise vajaduse tekkides tuleb reageerida vastavalt olukorrale. Õpiobjekti raames kajastatakse teenuse taastamist vaid andmebaasi viimase varundatud andmete laadimise ja seadistusfailidest vigade otsimise kontekstis!

Andmebaasi taastamine Pakime viimast andmebaasi varukoopiat sisaldava faili lahti, selleks sobib näiteks käsk:

gunzip -c /var/backups/ldap/backup.<kuupäev>.ldif.gz > /var/backups/ldap/backup.<kuupäev>.ldif 

Kuna tavatingimustes, on andmebaasid suured, siis kasutatakse taastamisel andmete importimiseks serveritööriista slapadd. Slapadd nagu ka teised kataloogiteenuse serveri tööriistad vajavad töötamiseks baasi ainukasutusõigust, selleks peab slapd'i seisma panema:

/etc/init.d/slapd stop
slapadd -b <suffix> -l /var/backups/ldap/backup.<kuupäev>.ldif 

Seadistusfailide taastamine

Taastamiseks tuleb viimase seadistusfailide varukoopia fail lahti pakkida ning vastavalt olukorrale taastada vajalikud failid:

tar xvf /var/backups/ldap/etc/conf_backup.<kuupäev>.tar

Läbikäidud probleemid- õpi teiste vigadest

Kui seadistamise käigus ei küsitud LDAP administraatori parooli, siis tuleb see ise käsitsi lisada- ka korduval seadistamisel ei esitata seda võimalust. Selleks korrigeeri failides:

/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif 
/etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif 

ja tekita sinna pärast andmebaasi atribuuti (olcDBDirectory järgi) read: olcRootDN: cn=admin,cn=config – sellega määratakse ära administraatori nimi ja skeem olcRootPW: parool – administraatori parool, õppimiseks käib tekstiline parool ka, kuid töökeskkondades tuleks kasutada parooliräsi, selle saad käivitades:

ldappasswd -s <parool> 


OpenLDAP serveri paigaldamisel ei looda baasiparameetrite faili /etc/ldap/slapd.d/cn=config/olcDatabase={1}bdb.ldif. On vaja õpilasel see ise luua. Kõigepealt loome kataloogi kuhu server salvestab andmebaasi failid:

mkdir /var/lib/ldap/naide 

Turvalisuse huvides peab selle kataloogi omanikuks ja grupiks olema „openldap“ kasutaja:

chown openldap:openldap /var/lib/ldap/naide/ 

Loo fail, kuhu sisse kirjuta loodava baasi seaded (vaata alla poole), näitefaili nimi koos asukohohaga:

/etc/ldap/slapd.d/cn=config/olcDatabase={1}dbd.ldif 

Kui kasutajate baasi konfiguratsioon on loodud peab LDAP serverile tegema taaskäivituse ja peale seda kontrolli kas porti kuulatakse, selleks sisesta terminali: teenuse restartimiseks:

/etc/init.d/slapd restart

kontrolli, kas porti(389) kuulatakse:

netstat -anp|grep 389

LDAP bdb baasi näidis konfiguratsioon

dn: olcDatabase={1}bdb 
objectClass: olcBdbConfig 
objectClass: top 
olcDatabase: {1}bdb 
olcDbDirectory: /var/lib/ldap/naide/ 
olcSuffix: dc=naide,dc=ee 
olcRootDN: cn=admin,dc=naide,dc=ee 
olcRootPW: parool 
olcLogLevel: 256 
structuralObjectClass: olcBdbConfig 
olcDbCheckpoint: 128 10 
olcDbIDLcacheSize: 1500 
olcDbDNcacheSize: 500 
olcDbConfig: {0}set_cachesize 0 33554432 0 
olcDbConfig: {1}set_lg_bsize 2097512 
olcDbConfig: {2}set_flags DB_LOG_AUTOREMOVE 
olcMonitoring: FALSE 
olcDbIndex: cn,sn pres,eq,sub 
olcDbIndex: entryCSN eq 
olcDbCacheFree: 300 

Skriptid

Õpiobjekti osaks on ka laboriülesande loomise ja lahenduse kontrollimise skripti esialgne varjant, mida tuleks parandada ja täiendada!skriptide pakk