Belajar LDAP - Active Directory & LDAP
Series/Belajar LDAP/Episode 22
Episode 22 of 31

Belajar LDAP - Active Directory & LDAP

Membahas Active Directory sebagai server LDAP: arsitektur AD DS dan Global Catalog, perbedaan schema dan atribut dengan OpenLDAP, cara query ke AD, integrasi Linux lewat realmd, SSSD, dan Winbind, hingga strategi migrasi dan sinkronisasi identitas.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Pada episode 21, kalian menghubungkan aplikasi web ke LDAP. Episode 22 ini menatap sisi lain dari dunia direktori: Active Directory. Banyak administrator Linux menganggap AD sebagai dunia asing, padahal AD DS hanyalah server LDAP — dengan schema, atribut, dan kebiasaan yang berbeda. Memahami LDAP di balik AD membuat kalian bisa query, integrasi, dan bahkan melakukan migrasi antar direktori dengan percaya diri.

Active Directory sebagai Server LDAP

Active Directory Domain Services (AD DS) adalah implementasi Microsoft dari directory service yang memakai LDAP sebagai protokol akses utamanya. Ketika kalian menunjuk ldapsearch ke domain controller, yang kalian temui adalah server LDAP — lengkap dengan bind, search, dan filter seperti OpenLDAP.

LDAP Interface ke AD

AD membuka beberapa endpoint LDAP:

PortEndpointKegunaan
389LDAP (StartTLS)Akses directory standar
636LDAPSLDAP terenkripsi
3268Global Catalog (GC)Query lintas domain di forest
3269Global Catalog (LDAPS)GC terenkripsi

Global Catalog adalah replika parsial dari semua domain dalam satu forest. Untuk pencarian yang menjangkau seluruh forest — misalnya mencari user di semua domain — kalian memakai port 3268. Kalau kalian hanya butuh data satu domain, port 389 biasa sudah cukup dan hasilnya lebih cepat.

AD-Specific Extensions

AD memperluas LDAP dengan fitur miliknya sendiri: kontrol paging untuk hasil besar, mekanisme replikasi multi-master, ekstensi untuk manajemen password, dan dukungan penuh untuk autentikasi Kerberos sebagai mekanisme SASL. AD juga menyimpan password sebagai hash yang dikelola secara khusus, bukan sebagai atribut yang bisa dibaca seperti di OpenLDAP.

Perbedaan AD dan OpenLDAP

Meskipun keduanya berbicara LDAP, AD dan OpenLDAP berbeda dalam beberapa hal fundamental:

AspekAD DSOpenLDAP
Schema defaultRich, spesifik MicrosoftMinimal, bisa diperluas
Object class utamauser, group, computerinetOrgPerson, posixAccount
Atribut loginsAMAccountName, userPrincipalNameuid
Format DNCN=Budi,CN=Users,DC=example,DC=comuid=budi,ou=people,dc=example,dc=com
ReplikasiMulti-master (setiap DC)Biasanya single-master + consumer
PasswordunicodePwd (proprietary)userPassword (LDAP standard)

Object Class dan Atribut

Di AD, entry user memakai object class user, bukan inetOrgPerson. Login name user ada di atribut sAMAccountName — misalnya budi.setiawan — sedangkan userPrincipalName (UPN) memberi format login berbasis domain seperti budi@example.com. Kedua atribut inilah yang biasanya dipakai untuk filter query, menggantikan uid di OpenLDAP.

Attribute ID dan objectCategory

Satu perbedaan yang sering membingungkan: AD punya objectCategory dan objectClass. objectClass adalah hierarki kelas lengkap (seperti top, person, user), sedangkan objectCategory adalah penanda ringkas yang mengelompokkan entry sejenis. Filter (objectCategory=person) jauh lebih efisien daripada filter (objectClass=user) karena objectCategory di-index. Ini contoh nyata optimasi query yang harus dipahami saat bekerja dengan AD.

Atribut Khas Lainnya

Beberapa atribut AD yang tidak ada di OpenLDAP:

  • rID — relative identifier, komponen unik pada SID (Security Identifier).
  • sID — Security Identifier lengkap user/group.
  • unicodePwd — atribut khusus untuk mengubah password user.
  • userAccountControl — flag yang mengontrol status akun, termasuk disable.

Untuk Linux, atribut yang paling relevan adalah sAMAccountName dan UID/GID yang di-mapping dari SID oleh layer seperti SSSD.

Query ke Active Directory

Berbekal pemahaman LDAP, kalian bisa langsung query AD dengan ldapsearch biasa. Contoh mencari user bernama Budi:

Query user di Active Directory
ldapsearch -H ldaps://dc01.example.com \
  -b "dc=example,dc=com" \
  -D "BUDI\\budi.setiawan" -W \
  "(sAMAccountName=budi*)"

Perhatikan cara autentikasi: AD menerima beberapa format bind, termasuk format UPN (budi@example.com) dan format downlevel DOMAIN\\user. LDAP search ke AD membutuhkan autentikasi — anonim biasanya dimatikan di lingkungan production.

Autentikasi dengan Kerberos

Karena AD mengintegrasikan Kerberos, autentikasi SASL GSSAPI adalah cara paling aman untuk query AD dari Linux. Kalian butuh ticket Kerberos terlebih dahulu, lalu ldapsearch memakai mekanisme GSSAPI secara otomatis. Ini menghubungkan materi LDAP kalian dengan dunia Kerberos yang mungkin sudah kalian pelajari di series lain.

Paging Controls

Query yang mengembalikan ribuan entry akan melewati batas ukuran hasil server (biasanya 1000 entry di AD). Gunakan kontrol paging agar hasil bisa diambil bertahap:

Search AD dengan paging
ldapsearch -H ldaps://dc01.example.com -E pr=500 \
  -b "dc=example,dc=com" "(objectCategory=user)" sAMAccountName

-E pr=500 meminta server mengirim hasil per 500 entry. Tanpa paging, query besar hanya mengembalikan potongan pertama dan kalian kehilangan sebagian data.

Integrasi Linux dengan AD

Ada beberapa cara menghubungkan Linux ke AD, masing-masing dengan trade-off:

PendekatanKomponenKekuatan
realmd + SSSDrealmd join domainStandar modern, mudah
Samba Winbindwinbind dari SambaIntegrasi dalam dengan Windows
Direct LDAP bindNSS/PAM ke LDAP ADTanpa join domain
Kerberos sajakeytab + krb5Autentikasi tanpa identitas

realmd dan SSSD

Cara yang direkomendasikan untuk join AD dari Linux adalah realmd yang mengonfigurasi SSSD secara otomatis:

Join Linux ke domain AD
sudo realm join EXAMPLE.COM \
  --user Administrator

realm join menangani penemuan domain, konfigurasi Kerberos, dan pembuatan komputer account di AD. Setelah join, user domain bisa login dengan SSSD dan otorisasi berbasis group AD lewat konfigurasi sssd.conf.

Samba Winbind

Alternatif lain adalah Winbind dari Samba, yang menggunakan protocol RPC/Netlogon dan memberi ID mapping dari SID. Winbind adalah pendekatan klasik yang masih dipakai di lingkungan yang membutuhkan kompatibilitas mendalam dengan Windows, misalnya file server Samba yang memetakan ACL Windows ke Linux.

Direct LDAP Bind

Jika join domain tidak memungkinkan, kalian bisa mengarahkan NSS dan PAM langsung ke port LDAP AD — sama seperti integrasi OpenLDAP di episode 19, hanya dengan base dan atribut AD. Kelemahannya: tanpa Kerberos dan tanpa ID mapping, pengalaman kurang mulus. Ini solusi yang valid untuk lingkungan terbatas.

Skenario Migrasi

Direktori tidak selalu statis. Organisasi sering berpindah antar platform identitas, dan kalian perlu strategi:

  • Migrasi OpenLDAP ke AD — export data OpenLDAP, pindahkan ke AD dengan tool migrasi atau script, lalu perbarui aplikasi memakai UPN AD.
  • Sinkronisasi AD ke OpenLDAP — jaga kedua direktori selaras dengan tool seperti lsass, atau dengan replikasi LDAP lewat syncrepl.
  • Coexistence — biarkan keduanya berjalan sambil aplikasi memakai satu sumber utama dan sumber lain sebagai cadangan.
  • Identity synchronization — saat AD menjadi sumber utama, pastikan UID/GID dipetakan konsisten agar file permission dan layanan tidak rusak.

Aturan emas migrasi: pindahkan aplikasi satu per satu, bukan semuanya sekaligus; dan lakukan validasi identitas silang sebelum mematikan direktori sumber. Sinkronisasi identitas dua arah umumnya lebih berisiko daripada satu arah karena konflik atribut sulit diresolusi.

Penutup

Pada episode 22 ini, kalian memahami AD dari sudut pandang LDAP: arsitektur AD DS dan peran Global Catalog pada port 3268, perbedaan schema dan atribut dengan OpenLDAP seperti sAMAccountName, userPrincipalName, objectCategory, dan unicodePwd, cara query AD dengan ldapsearch termasuk paging, integrasi Linux lewat realmd, SSSD, dan Winbind, serta strategi migrasi dan sinkronisasi identitas.

Inti yang harus dibawa pulang:

  • AD adalah server LDAP — semua keterampilan ldapsearch kalian langsung berlaku.
  • Global Catalog di port 3268 untuk pencarian lintas domain.
  • objectCategory dan sAMAccountName adalah kunci query yang efisien di AD.
  • Migrasi identitas dilakukan bertahap — jangan matikan sumber lama sebelum validasi tuntas.

Di episode 23 berikutnya, kalian masuk ke pola arsitektur lanjutan: LDAP proxy dan gateway patterns — bagaimana OpenLDAP berperan sebagai proxy di depan direktori lain, menggabungkan beberapa backend dengan meta backend, dan bahkan membuka akses LDAP ke data relasional. Materi AD yang baru saja kalian pelajari akan sangat berguna saat membangun proxy di depan AD.