Menggunakan autentikasi PAM - Amazon EMR

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan autentikasi PAM

Membuat pengguna PAM JupyterHub di Amazon EMR merupakan proses dua langkah. Langkah pertama adalah menambahkan pengguna ke sistem operasi yang berjalan di jupyterhub kontainer pada simpul utama, dan menambahkan direktori home pengguna yang sesuai untuk setiap pengguna. Langkah kedua adalah menambahkan pengguna sistem operasi ini sebagai JupyterHub pengguna — proses yang dikenal sebagai daftar putih di JupyterHub. Setelah JupyterHub pengguna ditambahkan, mereka dapat terhubung ke JupyterHub URL dan memberikan kredensyal sistem operasi mereka untuk akses.

Ketika pengguna masuk, JupyterHub membuka instans server notebook untuk pengguna tersebut, yang disimpan di direktori home pengguna pada simpul utama, yaitu/var/lib/jupyter/home/username. Jika instans server notebook tidak ada, JupyterHub menelurkan instans notebook di direktori home pengguna. Bagian berikut menunjukkan bagaimana cara menambahkan pengguna secara individual ke sistem operasi dan JupyterHub, diikuti oleh skrip bash dasar yang menambahkan beberapa pengguna.

Menambahkan pengguna sistem operasi ke kontainer

Contoh berikut pertama-tama menggunakan perintah useradd dalam kontainer untuk menambahkan satu pengguna, diego, dan membuat direktori home untuk pengguna tersebut. Perintah kedua menggunakan chpasswd untuk membuat kata sandi diego untuk pengguna ini. Perintah dijalankan pada baris perintah simpul utama saat terhubung menggunakan SSH. Anda juga dapat menjalankan perintah ini menggunakan langkah seperti yang dijelaskan sebelumnya di Administrasi dengan mengirimkan langkah-langkah.

sudo docker exec jupyterhub useradd -m -s /bin/bash -N diego sudo docker exec jupyterhub bash -c "echo diego:diego | chpasswd"

Menambahkan JupyterHub pengguna

Anda dapat menggunakan panel Admin di JupyterHub atau REST API untuk menambahkan pengguna dan administrator, atau hanya pengguna.

Untuk menambahkan pengguna dan administrator menggunakan panel admin di JupyterHub
  1. Connect ke simpul utama menggunakan SSH dan masuk ke https://MasterNodeDNS:9443 dengan identitas yang memiliki izin administrator.

  2. Pilih Panel Kontrol, Admin.

  3. Pilih Pengguna, Tambahkan Pengguna, atau pilih Admin, Tambahkan admin.

Untuk menambahkan pengguna menggunakan REST API
  1. Connect ke simpul utama menggunakan SSH dan gunakan perintah berikut pada simpul utama, atau jalankan perintah sebagai langkah.

  2. Dapatkan token administratif untuk membuat permintaan API, dan ganti AdminTokenpada langkah berikut dengan token itu.

  3. Gunakan perintah berikut, ganti UserNamedengan pengguna sistem operasi yang telah dibuat dalam kontainer.

    curl -XPOST -H "Authorization: token AdminToken" "https://$(hostname):9443/hub/api/users/UserName
catatan

Anda secara otomatis ditambahkan sebagai pengguna JupyterHub non-admin saat masuk ke antarmuka JupyterHub web untuk pertama kalinya.

Contoh: Skrip Bash untuk menambahkan beberapa pengguna

Contoh skrip bash berikut menyatukan langkah-langkah sebelumnya di bagian ini untuk membuat beberapa JupyterHub pengguna. Skrip dapat dijalankan langsung pada simpul utama, atau dapat diunggah ke Amazon S3 dan kemudian dijalankan sebagai langkah.

Skrip pertama menetapkan array nama pengguna, dan menggunakan jupyterhub token perintah untuk membuat token API untuk administrator default, jovyan. Ini kemudian menciptakan pengguna sistem operasi di jupyterhub kontainer untuk setiap pengguna, menetapkan kata sandi awal untuk masing-masing yang sama dengan nama pengguna mereka. Akhirnya, panggilan operasi REST API untuk membuat setiap pengguna di JupyterHub. Melewati token yang dihasilkan sebelumnya dalam skrip dan menyalurkan respon REST jq agar lebih mudah dilihat.

# Bulk add users to container and JupyterHub with temp password of username set -x USERS=(shirley diego ana richard li john mary anaya) TOKEN=$(sudo docker exec jupyterhub /opt/conda/bin/jupyterhub token jovyan | tail -1) for i in "${USERS[@]}"; do sudo docker exec jupyterhub useradd -m -s /bin/bash -N $i sudo docker exec jupyterhub bash -c "echo $i:$i | chpasswd" curl -XPOST --silent -k https://$(hostname):9443/hub/api/users/$i \ -H "Authorization: token $TOKEN" | jq done

Simpan skrip ke lokasi di Amazon S3 seperti s3://mybucket/createjupyterusers.sh. Kemudian Anda dapat menggunakan script-runner.jar untuk menjalankannya sebagai langkah.

Contoh: Menjalankan skrip saat membuat sebuah klaster (AWS CLI)

catatan

Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

aws emr create-cluster --name="MyJupyterHubCluster" --release-label emr-5.36.0 \ --applications Name=JupyterHub --log-uri s3://MyBucket/MyJupyterClusterLogs \ --use-default-roles --instance-type m5.xlarge --instance-count 2 --ec2-attributes KeyName=MyKeyPair \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/createjupyterusers.sh"]

Menjalankan skrip pada klaster yang ada (AWS CLI)

catatan

Karakter lanjutan baris Linux (\) disertakan agar mudah dibaca Karakter ini bisa dihapus atau digunakan dalam perintah Linux. Untuk Windows, hapus atau ganti dengan tanda sisipan (^).

aws emr add-steps --cluster-id j-XXXXXXXX --steps Type=CUSTOM_JAR,\ Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/createjupyterusers.sh"]