<Sebelumnya | Konten | Selanjutnya>
1.7. Kontrol akses
Pengelolaan jenis akses apa (baca, tulis, dll) yang harus diberikan pengguna ke sumber daya dikenal sebagai
kontrol akses. Arahan konfigurasi yang terlibat disebut daftar kontrol akses atau ACL.
Ketika kami menginstal paket slapd, berbagai ACL diatur secara otomatis. Kami akan melihat beberapa konsekuensi penting dari default tersebut dan, dengan melakukan itu, kami akan mendapatkan gambaran tentang cara kerja ACL dan konfigurasinya.
Untuk mendapatkan ACL yang efektif untuk kueri LDAP, kita perlu melihat entri ACL dari database yang ditanyakan serta entri database frontend khusus. ACL milik yang terakhir bertindak sebagai default jika yang pertama tidak cocok. Basis data frontend adalah yang kedua untuk dikonsultasikan dan ACL yang akan diterapkan adalah yang pertama cocok ("pertandingan pertama menang") di antara 2 sumber ACL ini. Perintah berikut akan memberikan, masing-masing, ACL database mdb ("dc=example,dc=com") dan database frontend:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={1}mdb)' olcAccess
dn: olcDatabase={1}mdb,cn=konfigurasi
olcAccess: {0}ke attrs=userPassword sendiri tulis oleh anonim auth oleh * none olcAccess: {1}to attrs=shadowLastChange sendiri tulis oleh * baca
olcAccess: {2}ke * oleh * baca
RootDN selalu memiliki hak penuh atas basis datanya dan tidak perlu disertakan dalam ACL apa pun.
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={-1}frontend)' olcAccess
dn: olcDatabase={-1}ujung depan,cn=config
olcAccess: {0}ke * oleh dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=eksternal
,cn=auth dikelola dengan * break
olcAccess: {1}ke dn.exact="" oleh * baca
olcAccess: {2}ke dn.base="cn=Subschema" dengan * baca
Dua ACL pertama sangat penting:
olcAccess: {0}ke attrs=userPassword sendiri tulis oleh anonim auth oleh * none olcAccess: {1}to attrs=shadowLastChange sendiri tulis oleh * baca
Ini dapat direpresentasikan secara berbeda untuk pencernaan yang lebih mudah:
ke attrs=userPassword
dengan menulis sendiri
oleh auth anonim oleh * none
ke attrs=shadowLastChange dengan menulis sendiri
oleh * baca
ACL ini memberlakukan hal berikut:
• Akses 'auth' anonim disediakan untuk kata sandi pengguna atribut sehingga pengguna dapat mengotentikasi, atau mengikat. Mungkin kontra-intuitif, 'dengan auth anonim' diperlukan bahkan ketika akses anonim ke DIT tidak diinginkan, jika tidak, ini akan menjadi masalah ayam dan telur: sebelum otentikasi, semua pengguna anonim.
• The dengan menulis sendiri ACL memberikan akses tulis ke kata sandi pengguna atribut ke pengguna yang diautentikasi sebagai dn di mana atribut itu hidup. Dengan kata lain, pengguna dapat memperbarui kata sandi pengguna atribut entri mereka sendiri.
• The kata sandi pengguna atribut sebaliknya tidak dapat diakses oleh semua pengguna lain, dengan pengecualian rootDN, yang selalu memiliki akses dan tidak perlu disebutkan secara eksplisit.
• Agar pengguna dapat mengubah kata sandi mereka sendiri, menggunakan passwd atau utilitas lain, milik pengguna bayanganTerakhirPerubahan atribut harus dapat ditulis. Semua pengguna direktori lain dapat membaca konten atribut ini.
DIT ini dapat dicari secara anonim karena 'to * by * read' di ACL ini, yang memberikan akses baca ke semua hal lainnya, oleh siapa pun (termasuk anonim):
ke *
oleh * baca
Jika ini tidak diinginkan maka Anda perlu mengubah ACL. Untuk memaksa otentikasi selama permintaan pengikatan, Anda juga dapat (atau dalam kombinasi dengan ACL yang dimodifikasi) menggunakan direktif 'olcRequire: authc'.
Seperti disebutkan sebelumnya, tidak ada akun administratif ("rootDN") yang dibuat untuk database slapd-config. Namun, ada identitas SASL yang diberikan akses penuh ke sana. Ini mewakili pengguna super localhost (root/sudo). Ini dia:
dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=eksternal,cn=auth
Perintah berikut akan menampilkan ACL dari database slapd-config:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcDatabase={0}config)' olcAccess
dn: olcDatabase={0}konfigurasi,cn=konfigurasi
olcAccess: {0}ke * oleh dn.exact=gidNumber=0+uidNumber=0,cn=peercred, cn=external,cn=auth kelola dengan * break
Karena ini adalah identitas SASL, kami perlu menggunakan SASL mekanisme saat menjalankan utilitas LDAP yang dimaksud dan kami telah melihatnya berkali-kali dalam panduan ini. Ini adalah mekanisme EKSTERNAL. Lihat perintah sebelumnya untuk contoh. Perhatikan bahwa:
1. Anda harus menggunakan sudo menjadi identitas root agar ACL cocok.
2. Mekanisme EKSTERNAL bekerja melalui IPC (soket domain UNIX). Ini berarti Anda harus menggunakan ldapi
format URI.
Cara ringkas untuk mendapatkan semua ACL adalah seperti ini:
sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b \ cn=config '(olcAccess=*)' olcAccess olcSuffix
Ada banyak yang bisa dikatakan tentang topik kontrol akses. Lihat halaman manual untuk slapd.access4.