Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan autentikasi LDAP
Lightweight Directory Access Protocol (LDAP) adalah sebuah protokol aplikasi untuk mengkueri dan memodifikasi objek yang sesuai dengan sumber daya seperti pengguna dan komputer yang disimpan dalam penyedia layanan direktori LDAP-kompatibel seperti Direktori Aktif atau OpenLDAP server. Anda dapat menggunakan plugin otentikator LDAP untuk JupyterHub dengan di JupyterHub Amazon EMR untuk
Langkah-langkah di bagian ini memandu Anda melalui langkah-langkah berikut untuk mengatur dan mengaktifkan LDAP menggunakan Plugin Authenticator LDAP untuk. JupyterHub Anda melakukan langkah-langkah tersebut namun tetap terhubung ke baris perintah simpul utama. Untuk informasi selengkapnya, lihat Menyambung ke simpul utama dan server Notebook.
Buat file konfigurasi LDAP dengan informasi tentang LDAP server, seperti alamat IP host, port, mengikat nama, dan sebagainya.
Ubah
/etc/jupyter/conf/jupyterhub_config.py
untuk mengaktifkan Plugin Authenticator LDAP untuk. JupyterHubBuat dan jalankan skrip yang mengonfigurasi LDAP dalam
jupyterhub
kontainer.Kueri LDAP untuk pengguna, lalu buat direktori home di dalam wadah untuk setiap pengguna. JupyterHub membutuhkan direktori rumah untuk meng-host notebook.
Jalankan skrip yang dimulai ulang JupyterHub
penting
Sebelum Anda mengatur LDAP, periksa infrastruktur jaringan Anda untuk memastikan bahwa LDAP server dan simpul utama klaster dapat berkomunikasi seperti yang diperlukan. TLS biasanya menggunakan port 389 melalui sambungan TCP biasa. Jika sambungan LDAP Anda menggunakan SSL, port TCP terkenal untuk SSL adalah 636.
Buat file konfigurasi
Contoh di bawah ini menggunakan nilai konfigurasi tempat-pemegang berikut. Ganti ini dengan parameter yang sesuai dengan implementasi Anda.
LDAP server menjalankan versi 3 dan tersedia untuk port 389. Ini adalah port non-SSL standar untuk LDAP.
Nama khusus dasar (DN) adalah
dc=example, dc=org
.
Gunakan editor teks untuk membuat file ldap.confhost
dengan alamat IP atau nama host yang dapat diselesaikan dari server LDAP Anda.
base dc=example,dc=org uri ldap://
host
ldap_version 3 binddn cn=admin
,dc=example
,dc=org
bindpw admin
Aktifkan Plugin Authenticator LDAP untuk JupyterHub
Gunakan editor teks untuk mengubah /etc/jupyter/conf/jupyterhub_config.py
file dan menambahkan properti ldapauthenticatorhost
dengan alamat IP atau nama host yang dapat diselesaikan dari server LDAP. Contoh mengasumsikan bahwa objek pengguna berada dalam unit organisasi (ou) bernamapeople
, dan menggunakan komponen nama dibedakan yang Anda buat sebelumnya menggunakanldap.conf
.
c.JupyterHub.authenticator_class = 'ldapauthenticator.LDAPAuthenticator' c.LDAPAuthenticator.use_ssl = False c.LDAPAuthenticator.server_address = '
host
' c.LDAPAuthenticator.bind_dn_template = 'cn={username},ou=people
,dc=example
,dc=org
'
Konfigurasikan LDAP dalam kontainer
Gunakan editor teks untuk membuat skrip bash dengan konten sebagai berikut:
#!/bin/bash
# Uncomment the following lines to install LDAP client libraries only if
# using Amazon EMR release version 5.14.0. Later versions install libraries by default.
# sudo docker exec jupyterhub bash -c "sudo apt-get update"
# sudo docker exec jupyterhub bash -c "sudo apt-get -y install libnss-ldap libpam-ldap ldap-utils nscd"
# Copy ldap.conf
sudo docker cp ldap.conf jupyterhub:/etc/ldap/
sudo docker exec jupyterhub bash -c "cat /etc/ldap/ldap.conf"
# configure nss switch
sudo docker exec jupyterhub bash -c "sed -i 's/\(^passwd.*\)/\1 ldap/g' /etc/nsswitch.conf"
sudo docker exec jupyterhub bash -c "sed -i 's/\(^group.*\)/\1 ldap/g' /etc/nsswitch.conf"
sudo docker exec jupyterhub bash -c "sed -i 's/\(^shadow.*\)/\1 ldap/g' /etc/nsswitch.conf"
sudo docker exec jupyterhub bash -c "cat /etc/nsswitch.conf"
# configure PAM to create home directories
sudo docker exec jupyterhub bash -c "echo 'session required pam_mkhomedir.so skel=/etc/skel umask=077' >> /etc/pam.d/common-session"
sudo docker exec jupyterhub bash -c "cat /etc/pam.d/common-session"
# restart nscd service
sudo docker exec jupyterhub bash -c "sudo service nscd restart"
# Test
sudo docker exec jupyterhub bash -c "getent passwd"
# Install ldap plugin
sudo docker exec jupyterhub bash -c "pip install jupyterhub-ldapauthenticator"
Simpan skrip ke simpul utama, dan kemudian jalankan dari baris perintah simpul utama. Sebagai contoh, dengan skrip yang disimpan sebagai configure_ldap_client.sh
, buat file agar dapat dijalankan:
chmod +x configure_ldap_client.sh
Dan jalankan skrip:
./configure_ldap_client.sh
Tambahkan atribut ke Direktori Aktif
Untuk menemukan setiap pengguna dan membuat entri yang sesuai dalam database, wadah JupyterHub docker memerlukan properti UNIX berikut untuk objek pengguna yang sesuai di Active Directory. Untuk informasi selengkapnya, lihat bagian Bagaimana cara untuk melanjutkan mengedit atribut GID/UID RFC 2307 bahwa sekarang Unix atribut Plug-in tidak lagi tersedia untuk Direktori Aktif Pengguna dan Komputer MMC snap-in? dalam artikel Klarifikasi mengenai status manajemen identitas untuk peran server Unix (IDMU) dan NIS di pratinjau teknis Windows Server 2016 dan seterusnya
homeDirectory
Ini adalah lokasi ke direktori home pengguna, yang biasanya
/home/
.username
gidNumber
Ini adalah nilai yang lebih besar dari 60000 yang sudah tidak digunakan oleh pengguna lain. Periksa
etc/passwd
file untuk gids yang digunakan.uidNumber
Ini adalah nilai yang lebih besar dari 60000 yang sudah tidak digunakan oleh grup lain. Periksa
etc/group
file untuk uids yang sedang digunakan.uid
Ini sama dengan
username
.
Buat direktori home pengguna
JupyterHub membutuhkan direktori home di dalam wadah untuk mengautentikasi pengguna LDAP dan menyimpan data instance. Contoh berikut menunjukkan dua pengguna, shirley dan diego, dalam direktori LDAP.
Langkah pertama adalah menanyakan server LDAP untuk setiap id pengguna dan informasi id grup menggunakan ldapsearchhost
dengan alamat IP atau nama host yang dapat diselesaikan dari server LDAP Anda:
ldapsearch -x -H ldap://
host
\ -D "cn=admin,dc=example,dc=org" \ -w admin \ -b "ou=people,dc=example,dc=org" \ -s sub \ "(objectclass=*)" uidNumber gidNumber
Perintah ldapsearch
mengembalikan respon LDIF diformat yang terlihat mirip dengan berikut ini untuk pengguna shirley dan diego.
# extended LDIF
# LDAPv3
# base <ou=people,dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: uidNumber gidNumber sn
# people, example.org
dn: ou=people,dc=example,dc=org
# diego, people, example.org
dn: cn=diego,ou=people,dc=example,dc=org
sn: B
uidNumber: 1001
gidNumber: 100
# shirley, people, example.org
dn: cn=shirley,ou=people,dc=example,dc=org
sn: A
uidNumber: 1002
gidNumber: 100
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
Menggunakan informasi dari respon, jalankan perintah dalam kontainer untuk membuat direktori home untuk setiap nama umum pengguna (cn
). Gunakan uidNumber
dan gidNumber
untuk memperbaiki kepemilikan direktori home untuk pengguna tersebut. Contoh perintah berikut melakukan ini untuk penggunashirley
.
sudo docker container exec jupyterhub bash -c "mkdir /home/
shirley
" sudo docker container exec jupyterhub bash -c "chown -R $uidNumber /home/shirley
" sudo docker container exec jupyterhub bash -c "sudo chgrp -R $gidNumber /home/shirley
"
catatan
Authenticator LDAP untuk JupyterHub tidak mendukung pembuatan pengguna lokal. Untuk informasi lebih lanjut, lihat Catatan konfigurasi autentikator LDAP pada pembuatan pengguna lokal
Untuk membuat pengguna lokal secara manual, gunakan perintah berikut.
sudo docker exec jupyterhub bash -c "echo '
shirley
:x:$uidNumber:$gidNumber::/home/shirley
:/bin/bash' >> /etc/passwd"
Mulai ulang JupyterHub wadah
Jalankan perintah berikut untuk memulai ulang jupyterhub
kontainer:
sudo docker stop jupyterhub
sudo docker start jupyterhub