OpenLDAP - OpenLDAP

OpenLDAP
OpenLDAP logotipi
Tuzuvchi (lar)OpenLDAP loyihasi
Dastlabki chiqarilish1998 yil 26 avgust; 22 yil oldin (1998-08-26)[1]
Barqaror chiqish
2.4.55[2] / 26 oktyabr 2020 yil; 41 kun oldin (2020-10-26)
Ko'rib chiqish versiyasi
2.5.0alpha / 14 oktyabr 2020 yil
Ombor Buni Vikidatada tahrirlash
YozilganC
Operatsion tizimHar qanday
PlatformaO'zaro faoliyat platforma
TuriLDAP katalog xizmati
LitsenziyaOpenLDAP ommaviy litsenziyasi[3]
Veb-saytwww.openldap.org Buni Vikidatada tahrirlash

OpenLDAP a ozod, ochiq manbali amalga oshirish Yengil katalogga kirish protokoli (LDAP) OpenLDAP loyihasi tomonidan ishlab chiqilgan. U OpenLDAP Public License deb nomlangan o'zining BSD uslubidagi litsenziyasi ostida chiqariladi.[4]

LDAP - bu platformadan mustaqil protokol. Bir nechta umumiy Linux tarqatish LDAP-ni qo'llab-quvvatlash uchun OpenLDAP dasturini o'z ichiga oladi. Dasturiy ta'minot ham ishlaydi BSD -variantlar, shuningdek AIX, Android, HP-UX, macOS, Solaris, Microsoft Windows (NT va lotinlar, masalan, 2000, XP, Vista, Windows 7 va boshqalar) va z / OS.

Tarix

OpenLDAP loyihasi[5] 1998 yilda Kurt Zeilenga tomonidan boshlangan.[6] Loyiha LDAP ma'lumot manbasini klonlash orqali boshlandi Michigan universiteti bu erda uzoq muddatli loyiha LDAP protokolini ishlab chiqish va rivojlanishini 1996 yilda ushbu loyihaning yakuniy chiqarilishigacha qo'llab-quvvatlagan.

2015 yil may oyidan boshlab, OpenLDAP loyihasida to'rtta asosiy guruh a'zolari mavjud: Xovard Chu (bosh me'mor),[7] Quanah Gibson-Mount, Hallvard Furuset va Kurt Zeilenga. Lyuk Xovard, Rayan Tendi va Gavin Anri kabi ko'plab boshqa muhim va faol ishtirokchilar mavjud. O'tgan asosiy jamoa a'zolari orasida Pierangelo Masarati ham bor.[8]

Komponentlar

OpenLDAP uchta asosiy komponentdan iborat:

  • slapd - mustaqil LDAP xizmatchi va tegishli modullar va vositalar
  • LDAP-ni amalga oshiradigan kutubxonalar protokol va ASN.1 Kodlashning asosiy qoidalari (BER)
  • mijoz dasturlari: ldapsearch, ldapadd, ldapdelete va boshqalar

Bundan tashqari, OpenLDAP loyihasida bir qator kichik loyihalar joylashgan:

  • JLDAP - Java uchun LDAP sinf kutubxonalari
  • JDBC-LDAP - Java JDBC - LDAP ko'prigi drayveri
  • ldapc ++ - uchun LDAP sinf kutubxonalari C ++
  • Qal'a - rolga asoslangan identifikatsiyadan foydalanishni boshqarish Java SDK
  • LMDB - ma'lumotlar bazasi xotirasi bilan tasvirlangan kutubxona

Orqa tomonlar

Umumiy tushuncha

Tarixiy jihatdan OpenLDAP-server (slapd, Standalone LDAP Daemon) arxitekturasi tarmoqqa kirish va protokollarni qayta ishlash bilan shug'ullanadigan va ma'lumotlarning saqlanishi bilan bog'liq bo'lgan abendend o'rtasida ajratilgan. Ushbu split dizayn 1996 yilda yozilgan Michigan universiteti nazariy kodining o'ziga xos xususiyati edi[9] va barcha keyingi OpenPAP versiyalarida amalga oshiriladi. Dastlabki kod bitta asosiy ma'lumotlar bazasini va ikkita eksperimental / demo backendlarni o'z ichiga olgan. Arxitektura modulli bo'lib, endi an'anaviy texnologiyalar bazasiga emas, balki boshqa texnologiyalarga ta'sir o'tkazish uchun juda ko'p turli xil arxivlar mavjud.

Eslatma: Oldingi (1.x) versiyalarda "backend" va "database" atamalari ko'pincha bir-birining o'rnida ishlatilgan. Aniqroq aytganda, "backend" - bu saqlash interfeysi klassi, "ma'lumotlar bazasi" - bu beparvolik namunasi. . Slapd-server birdan o'zboshimchalik bilan ko'plab backend-lardan foydalanishi mumkin va har bir backend-ning o'zboshimchalik bilan (masalan, o'zboshimchalik bilan ko'plab ma'lumotlar bazalari) birdan faol bo'lishi mumkin.

Mavjud orqa tomonlar

Hozirda OpenLDAP tarqatishda 17 xil backends taqdim etiladi va har xil uchinchi tomonlar boshqa backendlarni mustaqil ravishda saqlab turishlari ma'lum. Standart orqa qismlar uch xil toifaga bo'linadi:

  • Ma'lumotlarni saqlashning orqa tomonlari - bu aslida ma'lumotlarni saqlaydi
    • back-bdb: o'rnatilgan OpenLDAP uchun birinchi tranzaktsion backend Berkli JB
    • back-hdb: to'liq ierarxik va subtree nomlarini qo'llab-quvvatlaydigan back-bdb-ning bir varianti
    • back-ldif: oddiy matn asosida qurilgan LDIF fayllar
    • back-mdb: OpenLDAP-da o'rnatilgan tranzaktsion backend Yildirim xotirasi bilan xaritalangan ma'lumotlar bazasi (LMDB)
    • back-ndb: MySQL-ning NDB klaster dvigateliga asoslangan tranzaktsion backend
  • Proksi-serverlarning orqa tomonlari - bu boshqa ma'lumotlarni saqlash tizimlariga kirish eshigi vazifasini bajaradi
    • back-ldap: boshqa LDAP serverlariga oddiy proksi-server
    • back-meta: meta-katalog xususiyatlariga ega proksi-server
    • back-passwd: Unix tizimining passwd va guruh ma'lumotlaridan foydalanadi
    • orqa o'rni: boshqa slapd orqa tomonlariga yo'naltiradi
    • back-sql: o'zboshimchalik bilan SQL ma'lumotlar bazalari bilan suhbatlashish
  • Dinamik orqa tomonlar - bu ma'lumotlar tezda paydo bo'ladi
    • back-config: LDAP orqali slapd konfiguratsiyasi
    • back-dnssrv: DNS orqali LDAP serverlarini topadi
    • orqa monitor: LDAP orqali slapd statistikasi
    • back-null: Unix / dev / null-ga o'xshash sink / no-op backend
    • back-perl: LDAP so'rovlariga javoban o'zboshimchalik bilan perl modullarini chaqiradi
    • back-shell: LDAP so'rovlari uchun shell skriptlarini chaqiradi
    • back-paypoq: LDAP so'rovlarini IPC orqali o'zboshimchalik bilan demonlarga yo'naltiradi

Eski OpenLDAP versiyalarida mavjud bo'lgan ba'zi bir backendlar foydalanishdan to'xtatildi, eng muhimi, asl UMich kodidan meros bo'lib qolgan back-ldbm va back-perl va back-shellga o'xshash andback-tcl.

Yaqinda boshqa orqa tomonlarni qo'llab-quvvatlash ham qaytarib olinadi. Oracle MySQL-ni sotib olganidan keyin Oracle tomonidan MySQL bilan hamkorlik bekor qilinganligi sababli back-ndb endi bekor qilindi. back-bdb va back-hdb tez orada back-mdb foydasiga eskiradi, chunki back-mdb ishlash, ishonchlilik va boshqarishning barcha jihatlari bo'yicha ustundir.

Amalda, -perl, -shell va -sock kabi backendlar har qanday o'zboshimchalik bilan dasturlash tiliga interfeys yaratishga imkon beradi, shu bilan xususiylashtirish va kengaytirish uchun cheksiz imkoniyatlarni taqdim etadi. Aslida slapd-server ixcham, aniq belgilangan va hamma joyda mavjud bo'lgan API-ga ega bo'lgan RPC dvigateliga aylanadi.

Qatlamlar

Umumiy tushuncha

Odatda LDAP so'rovi frontend tomonidan qabul qilinadi, dekodlanadi va keyin qayta ishlash uchun orqa tomonga uzatiladi. Backend so'rovni to'ldirgandan so'ng, natijani frontendga qaytaradi va natijada LDAP mijoziga natijani yuboradi. Qoplama - bu oldingi qism va orqa tomon o'rtasida joylashtiriladigan kodning bir qismi. Shunday qilib, u so'rovlarni to'xtatib qo'yishi va boshqa harakatlar ularni orqa tomon ularni qabul qilishidan oldin boshlashi mumkin, shuningdek, oldingi qismga etib borguncha, shuningdek, backend natijalarida ham harakat qilishi mumkin. Qoplamalar slapd ichki API-lariga to'liq kirish huquqiga ega va shuning uchun frontend yoki boshqa backendlar bajarishi mumkin bo'lgan har qanday narsani chaqirishi mumkin. Old tomondan va orqa tomondan modullar to'plamini tashkil etadigan bir vaqtning o'zida bir nechta qatlamlarni ishlatish mumkin.

Qatlamlar ma'lumotlar bazasini to'liq yangi backend yozilishini talab qilmasdan oshirish va ixcham, osongina disk raskadrovka qilinadigan va saqlanadigan modullarda yangi funktsiyalarni qo'shishga imkon beradigan oddiy vositalarni taqdim etadi. OpenLDAP 2.2-da overlay xususiyati joriy qilinganidan beri OpenLDAP hamjamiyati tomonidan ko'plab yangi qo'shimchalar qo'shildi.

Qatlamlar mavjud

Hozirda OpenLDAP-ning asosiy tarqatilishida 21 ta qo'shimchalar mavjud, foydalanuvchi tomonidan qo'shilgan kod bo'limida yana 15 ta qo'shimchalar mavjud va qo'shilish uchun tasdiqlashni kutmoqdalar.

Boshqa modullar

Orqa qismlar va qoplamalar modullarning eng ko'p ishlatiladigan ikkita turi. Orqa qismlar odatda slapd ikkilik tizimiga o'rnatiladi, lekin ular dinamik ravishda yuklangan modullar sifatida ham o'rnatilishi mumkin va qo'shimcha qatlamlar odatda dinamik modullar sifatida quriladi. Bundan tashqari, slapd yangi LDAP sintaksislarini amalga oshirish, mos keladigan qoidalar, boshqaruv elementlari va kengaytirilgan operatsiyalar uchun dinamik modullarni qo'llab-quvvatlaydi, shuningdek, kirishni boshqarish mexanizmlari va parollarni xeshlash mexanizmlarini amalga oshiradi.

OpenLDAP shuningdek, Sun va Netscape / Fedora / Red Hat tomonidan ishlatiladigan SLAPI plagin arxitekturasini qo'llab-quvvatlaydi. Amaldagi nashrlarda SLAPI ramkasi slapd overlay ichida amalga oshiriladi. Sun / Netscape / Fedora / Red Hatare uchun OpenLDAP bilan mos keladigan ko'plab plaginlar mavjud bo'lsa-da, OpenLDAP hamjamiyatining juda oz a'zolari SLAPI-dan foydalanadilar.

Mavjud modullar

  • Mahalliy slapd modullari
    • acl / posixgroup - kirish nazorati uchun posixGroup a'zoligini qo'llab-quvvatlash
    • comp_match - komponentlarga asoslangan moslikni qo'llab-quvvatlash
    • kinit - slapd uchun Kerberos TGT-ni saqlash / yangilash
    • passwd / - qo'shimcha parolni xeshlash mexanizmlari. Hozirda o'z ichiga oladi Kerberos, Netscape, RADIUS va SHA-2.
  • SLAPI plaginlari
    • addrdnvalue - RDN qiymatini qo'shish so'rovida qoldirilgan bo'lsa, yozuvga qo'shing

Xulosa

OpenLDAP dasturiy ta'minotining asosiy (funktsional) nashrlariga quyidagilar kiradi:

  • OpenLDAP 1-versiyasi Michigan universiteti loyihasining so'nggi versiyasini (3.3 versiyasi) umumiy tozalash va qo'shimcha o'zgarishlarni birlashtirish edi.
  • OpenLDAP Version 2.0, 2000 yil avgust oyida chiqarilgan bo'lib, LDAP 3-versiyasini (LDAPv3) qo'llab-quvvatlashni, Internet Protocol-ning 6-versiyasini (IPv6 ) qo'llab-quvvatlash va boshqa ko'plab yaxshilanishlar.
  • 2002 yil iyun oyida chiqarilgan OpenLDAP 2.1 versiyasi tranzaksiya ma'lumotlar bazasining orqa qismini o'z ichiga olgan (asosida) Berkli ma'lumotlar bazasi yoki BDB), Oddiy autentifikatsiya va xavfsizlik darajasi (SASL) qo'llab-quvvatlash va Meta, Monitor va Virtual eksperimental backends.
  • 2003 yil dekabr oyida chiqarilgan OpenLDAP Version 2.2 versiyasida replikatsiya ko'magi (syncrepl) bilan LDAP "sinxronlash" Dvigatel, qo'shimcha interfeys va ko'plab ma'lumotlar bazasi va RFC bilan bog'liq funktsional yaxshilanishlar mavjud.
  • 2005 yil iyun oyida chiqarilgan OpenLDAP 2.3 versiyasida Configuration Backend (dinamik konfiguratsiya), RFC-ga mos keladigan Parol siyosati dasturiy ta'minoti, shu jumladan qo'shimcha qoplamalar va ko'plab qo'shimcha yaxshilanishlar mavjud.
  • 2007 yil oktyabr oyida chiqarilgan OpenLDAP 2.4 versiyasi N-tomonlama MultiMaster replikatsiyasini, "Stand-by master" ni va "Schema" elementlarini tezda o'chirib tashlash va o'zgartirish qobiliyatini va boshqalarni taqdim etdi.[10]

Replikatsiya

OpenLDAP-da ko'rsatilganidek, tarkibni sinxronlashtirish yordamida replikatsiya qo'llab-quvvatlanadi RFC 4533. Ushbu spetsifikatsiya bundan keyin "syncrepl" deb nomlanadi. Asosiy spetsifikatsiyadan tashqari, delta-syncrepl deb nomlanuvchi takomillashtirish ham qo'llab-quvvatlanadi. Qo'llab-quvvatlash uchun qo'shimcha yaxshilanishlar amalga oshirildi ko'p masterli replikatsiya.

syncrepl

Asosiy sinxronizatsiya jarayoni tasvirlangan RFC 4533. Protokol shunday aniqlanganki, o'zgarishlarning doimiy ma'lumotlar bazasi talab qilinmaydi. O'zgartirishlar to'plami har bir yozuvda saqlanadigan va ketma-ket sessiya jurnali orqali optimallashtirilgan o'zgarishlarning tartib raqami (CSN) ma'lumotlari orqali nazarda tutiladi, bu so'nggi o'chirishni kuzatishda ayniqsa foydalidir. Operatsion modeli shundan iboratki, replikatsiya mijozi (iste'molchi) replikatsiya serveriga (provayderga) "tarkibni sinxronlashtiruvchi qidiruv" ni yuboradi. Iste'molchi ushbu qidiruvda cookie-fayllarni taqdim etishi mumkin (ayniqsa, ilgari u provayder bilan sinxronlashganda). OpenLDAP dasturida RFC 4533, ushbu cookie-fayl provayderdan olingan eng so'nggi CSN-ni o'z ichiga oladi (contextCSN deb nomlanadi).

Keyin provayder qidiruv natijalari sifatida qaytadi (yoki quyida keltirilgan optimallashtirishga qarang, ma'lumotlarning javoblarini sinxronlashtiring) hozirgi (o'zgarishsiz kirish faqat yangilanish bosqichining hozirgi bosqichida ishlatiladi) (atributlar yo'q), qo'shilgan, o'zgartirilgan (yangilanish bosqichida barcha joriy atributlar bilan qo'shish) yoki o'chirilgan (atributlarsiz) yozuvlar iste'molchini cookie-fayllari orqali ma'lum bo'lgan narsalar asosida sinxronlangan holatga keltirish uchun. Agar cookie-fayl yo'q bo'lsa yoki iste'molchi umuman sinxronlanganligini ko'rsatsa, u holda provayder yangilanish bosqichida har bir yozuv uchun qo'shimchalar yuboradi. Ideal holatda, javobning yangilanish bosqichida faqat qo'shilishning kichik bir to'plami (shu jumladan, modifikatsiyaning joriy natijasini ko'rsatadigan) qo'shish va iste'molchi provayder bilan so'nggi sinxronizatsiya qilingan vaqtdan beri sodir bo'lgan o'chirish bosqichi mavjud. Shu bilan birga, provayderda saqlangan sessiya jurnali holati cheklanganligi sababli (shuningdek, doimiy emas), hozirgi bosqich talab qilinishi mumkin, xususan, barcha o'zgarishsiz yozuvlarni provayderda o'chirilgan narsani anglatadi (samarasiz). iste'molchi oxirgi marta sinxronlashtirildi.

Qidirish refresh yoki refreshAndPersist rejimida amalga oshirilishi mumkin, bu qanday bosqichlar bo'lishini anglatadi. Yangilanish bosqichi har doim birinchi bo'lib sodir bo'ladi. Yangilanish bosqichida ikkita bosqich bo'lishi mumkin: mavjud va o'chirish, mavjud bo'lgan har doim o'chirishdan oldin sodir bo'ladi. Bosqichlar qaysi bosqich tugaganligini ko'rsatadigan sinxronizatsiya ma'lumotlari orqali ajratiladi. Yangilash va davom ettirish bosqichlari ham shu kabi sinxronlash ma'lumotlari orqali ajratiladi. Taqdim etilishi yoki o'chirilishi kerak bo'lgan yozuvlar guruhini ixchamroq ifodalash uchun ixtiyoriy optimallashtirish ushbu yozuvlarning kirishUUID qiymatlari ro'yxatini aniqlaydigan syncIdSet o'z ichiga olgan sinxronizatsiya ma'lumotidan foydalanishdir.

Hozirgi bosqich o'chirish bosqichidan quyidagicha farqlanadi. O'zgarishsiz arizalarni taqdim etgan yozuvlar faqat shu bosqichda qaytarilishi mumkin. Yozuvlarni o'chiradigan yozuvlar faqat o'chirish bosqichida taqdim etilishi mumkin. Ikkala bosqichda ham yozuvlarni qaytarish mumkin (shu jumladan o'zgartirilgan yozuvlarning barcha joriy atributlarini aks ettiruvchi qo'shimchalar). Mavjud bosqichning oxirida iste'molchi qo'shilgan yozuvda aniqlanmagan har bir yozuv yoki ushbu bosqichda mavjud javobda endi provayderda bevosita mavjud emas va shu sababli iste'molchini sinxronlashtirish uchun iste'molchida o'chirilishi kerak. provayder bilan.

Davomiy bosqich boshlangandan so'ng, provayder yangilanish bosqichi tugagandan so'ng o'zgartirilgan yozuvlar uchun yozuvlarni qo'shish, o'zgartirish va o'chirishni ko'rsatadigan qidiruv natijalarini yuboradi (o'zgarmagan yozuvlar mavjud emas). Doimiy bosqich cheksiz davom etadi, ya'ni qidiruvda yakuniy "bajarilgan" javob bo'lmaydi. Aksincha, yangilanish rejimida faqat yangilanish bosqichi sodir bo'ladi va bunday bosqich bajarilgan javob bilan yakunlanadi, u ham hozirgi yoki o'chirish bosqichini tugatadi (qaysi bosqich faol bo'lgan bo'lsa ham).

delta-syncrepl

Ushbu protokol yozish uchun ruxsatlarning (o'zgarishlarning) doimiy ma'lumotlar bazasini saqlaydi va har bir modifikatsiyani aniq ifodalashi mumkin (faqat o'zgartirilgan atributlarni anglatadi). U hanuzgacha o'zgarishlarni to'liq yozuvlar sifatida yuboradigan standart syncrepl spetsifikatsiyasi asosida qurilgan. Ammo delta-syncrepl-da uzatilgan yozuvlar aslida jurnal ma'lumotlar bazasidan yuboriladi, bu erda asosiy ma'lumotlar bazasidagi har bir o'zgarish jurnal yozuvi sifatida qayd etiladi. Jurnal yozuvlari LDAP log sxemasi yordamida qayd etiladi.[11]

Shuningdek qarang

Adabiyotlar

  1. ^ "OpenLDAP 1.0, ochiq manba LDAP tarqatilishini e'lon qilish". 1998 yil 26-avgust. Olingan 22 mart 2018.
  2. ^ "OpenLDAP 2.4.55 o'zgarishlarni chiqarishi". Olingan 13 oktyabr 2020.
  3. ^ "OpenLDAP ommaviy litsenziyasi, 2.8 versiyasi". openldap.org. 2003 yil 1-avgust. Olingan 15 avgust 2015.
  4. ^ "OpenLDAP, 2.4.39 uchun ommaviy litsenziya". Openldap.org. Olingan 17 fevral 2014.
  5. ^ "OpenLDAP, loyiha". Openldap.org. Olingan 17 fevral 2014.
  6. ^ "OpenLDAP, Kurt D. Zeilenga". Openldap.org. Olingan 17 fevral 2014.
  7. ^ Xovard Chu. "Xovardning boshqa sahifasi". Highlandsun.com. Olingan 17 fevral 2014.
  8. ^ "Andoning uy sahifasi". Aero.polimi.it. Olingan 17 fevral 2014.
  9. ^ https://web.archive.org/web/20050217100527/http://www.tux.org/pub/net/ldap/ldap-3.3.tar.Z. Arxivlandi asl nusxasi 2005 yil 17 fevralda. Olingan 19 avgust 2013. Yo'qolgan yoki bo'sh sarlavha = (Yordam bering)
  10. ^ "OpenLDAP 2.4 e'lonlari". Openldap.org. 3 oktyabr 2007 yil. Olingan 17 fevral 2014.
  11. ^ "draft-chu-ldap-logschema-00 - LDAP protokolini qayd etish sxemasi". Tools.ietf.org. Olingan 17 fevral 2014.

Tashqi havolalar