Memperluas kemampuan slapd dengan overlays: konsep modul berlapis, memberOf untuk keanggotaan grup otomatis, ppolicy untuk kebijakan password, syncprov untuk replikasi, dan overlay pendukung seperti refint, unique, dan auditlog.

Di episode 10 kalian mengatur siapa boleh mengakses apa lewat ACL. Episode 11 memperluas server dengan fungsi-fungsi modular bernama overlay: dari pelacakan keanggotaan grup otomatis, penegakan kebijakan password, sampai pondasi replikasi. Overlay inilah yang mengubah slapd polos menjadi direktori enterprise.
Overlay adalah modul fungsional yang "menumpang" pada sebuah database backend. Setiap request (search, add, modify, delete) melewati rantai overlay yang terdaftar sebelum sampai ke backend, dan setiap overlay bisa membaca, mengubah, atau memicu aksi tambahan. Ada dua langkah mengaktifkan overlay: memuat modul lalu membuat entry overlay pada database tujuan.
Modul dimuat lewat olcModuleLoad pada entry module di cn=config:
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: memberof
-
add: olcModuleLoad
olcModuleLoad: ppolicy
-
add: olcModuleLoad
olcModuleLoad: refint
-
add: olcModuleLoad
olcModuleLoad: uniqueModul auditlog dan syncprov dimuat dengan pola yang sama persis.
Di Debian/Ubuntu, modul overlay berada di /usr/lib/ldap/ (contoh memberof.la), sehingga cukup menulis nama modulnya. Setelah LDIF diterapkan dengan ldapmodify terhadap cn=config, server memuat modul dan kalian bisa mengaktifkan overlay-nya.
memberOf memelihara atribut memberOf pada setiap user secara otomatis — begitu user ditambahkan ke member sebuah grup, atribut memberOf di entry user ikut terisi. Aktifkan:
dn: olcOverlay={0}memberof,olcDatabase={1}mdb,cn=config
objectClass: olcMemberOf
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOfolcMemberOfRefInt: TRUE menautkan pembersihan referensi ke overlay refint — saat user dihapus dari grup, memberOf di entry user ikut dihapus. Gunakan memberOf untuk menjawab pertanyaan seperti "grup apa saja yang berisi Budi?":
ldapsearch -x -D "cn=admin,dc=example,dc=com" -W -b "uid=budi,ou=People,dc=example,dc=com" -s base "(objectClass=*)" memberOfppolicy menegakkan kebijakan password: panjang minimum, riwayat, kualitas, dan kuncian akun. Aktifkan overlay lalu tunjuk policy default:
dn: olcOverlay={0}ppolicy,olcDatabase={1}mdb,cn=config
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=default,ou=Policies,dc=example,dc=com
olcPPolicyHashCleartext: FALSE
olcPPolicyUseLockout: TRUEPastikan schema ppolicy sudah dimuat — di Debian/Ubuntu filenya ada di /etc/ldap/schema/ppolicy.schema. Lalu buat entry policy-nya:
dn: cn=default,ou=Policies,dc=example,dc=com
objectClass: pwdPolicy
objectClass: person
cn: default
sn: Default password policy
pwdAttribute: userPassword
pwdMinLength: 12
pwdMaxAge: 7776000
pwdInHistory: 5
pwdCheckQuality: 2
pwdMaxFailure: 3
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdGraceAuthNLimit: 2Beberapa atribut kunci:
| Atribut | Arti |
|---|---|
pwdMinLength | Panjang minimal password |
pwdMaxAge | Umur maksimal password dalam detik (90 hari = 7776000) |
pwdInHistory | Jumlah password lama yang dilarang dipakai ulang |
pwdCheckQuality | Tingkat pemeriksaan kualitas, dari 0 sampai 2 |
pwdMaxFailure | Batas percobaan login gagal |
pwdLockout | Aktifkan kuncian akun setelah pwdMaxFailure |
pwdLockoutDuration | Durasi kuncian dalam detik |
pwdGraceAuthNLimit | Jumlah login masa tenggang setelah kadaluarsa |
Perincian lengkap ppolicy — termasuk hashing dan validasi eksternal — akan dibahas di episode 12.
syncprov mengubah server menjadi provider replikasi: ia melacak perubahan (contextCSN) dan menyediakan sinkronisasi bagi consumer. Konfigurasi pada sisi provider:
dn: olcOverlay={0}syncprov,olcDatabase={1}mdb,cn=config
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 100 10
olcSpSessionlog: 100olcSpCheckpoint menyuruh provider menulis penanda sinkronisasi setiap 100 operasi atau 10 menit; olcSpSessionlog mengatur ukuran log sesi untuk delta-sync. Sisi consumer memakai direktif syncrepl pada database-nya sendiri — dibahas lengkap di episode replikasi. Kombinasi syncprov dengan accesslog memungkinkan delta-sync: consumer hanya menerima perubahan, bukan seluruh isi database.
Selain tiga besar di atas, ada overlay yang melengkapi direktori production:
| Overlay | Fungsi utama |
|---|---|
refint | Menjaga referensi DN tetap konsisten saat entry dihapus atau di-rename |
unique | Memaksa atribut tertentu unik dalam scope tertentu |
constraint | Membatasi nilai atribut pada pola atau daftar yang diizinkan |
auditlog | Menulis log perubahan ke file LDIF untuk audit |
accesslog | Mencatat perubahan untuk delta-sync dan history |
dynlist | Membuat list dinamis dari query lewat memberURL |
valsort | Mengurutkan nilai atribut multi-valued secara otomatis |
unique misalnya mencegah dua user memakai uidNumber yang sama — masalah yang kita singgung di episode 7:
dn: olcOverlay={0}unique,olcDatabase={1}mdb,cn=config
objectClass: olcUniqueConfig
olcOverlay: unique
olcUniqueURI: ldap:///?uidNumber?sub?(objectClass=posixAccount)auditlog menulis setiap modifikasi ke file yang bisa direview:
dn: olcOverlay={0}auditlog,olcDatabase={1}mdb,cn=config
objectClass: olcAuditLogConfig
olcOverlay: auditlog
olcAuditlogFile: /var/log/ldap/audit.logBeberapa hal yang wajib diperhatikan:
memberOf sebaiknya aktif sebelum refint sehingga pembersihan referensi bisa mengikuti; overlay yang memvalidasi seperti constraint biasanya diletakkan lebih awal agar request yang tidak valid ditolak sebelum diproses lebih jauh.auditlog, accesslog) bisa memenuhi disk — atur rotasi log sejak awal.olcOverlay diawali indeks 0, 1, 2, dan seterusnya) agar urutannya jelas saat dibaca slapcat.Tip
Setelah mengubah konfigurasi cn=config, cek konsistensinya dengan slapcat -n 0 -l /tmp/config.ldif dan pastikan service restart-nya bersih via systemctl status slapd. Kesalahan pada entry overlay umumnya baru muncul saat restart, bukan saat LDIF diterapkan.
Episode 11 memperkenalkan arsitektur overlay OpenLDAP: konsep modul berlapis, langkah memuat modul dengan olcModuleLoad, tiga overlay utama memberOf, ppolicy, dan syncprov, tujuh overlay pendukung seperti refint, unique, dan auditlog, serta disiplin urutan dan overhead saat mengonfigurasinya.
Inti yang harus dibawa pulang:
memberOf otomatis memelihara keanggotaan; pasangkan dengan refint.ppolicy adalah gerbang kebijakan password, syncprov pondasi replikasi.Di episode 12 berikutnya, kita menyelami kebijakan password secara utuh: atribut-atribut policy, hashing SSHA sampai Argon2, validasi eksternal, dan bagaimana menguji lockout, expiration, serta grace login dengan benar.