Utilizzo dell'autenticazione PAM - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo dell'autenticazione PAM

La creazione di PAM utenti JupyterHub su Amazon EMR è un processo in due fasi. La prima fase è aggiungere utenti al sistema operativo in esecuzione nel container jupyterhub sul nodo master e aggiungere una home directory utente corrispondente per ogni utente. Il secondo passaggio consiste nell'aggiungere questi utenti del sistema operativo come JupyterHub utenti, un processo noto come whitelisting in. JupyterHub Una volta aggiunto, un JupyterHub utente può connettersi a JupyterHub URL e fornire le credenziali del sistema operativo per l'accesso.

Quando un utente accede, JupyterHub apre l'istanza del server notebook per quell'utente, che viene salvata nella home directory dell'utente sul nodo master, ovvero. /var/lib/jupyter/home/username Se non esiste un'istanza del server notebook, JupyterHub genera un'istanza di notebook nella home directory dell'utente. Le sezioni seguenti mostrano come aggiungere utenti singolarmente al sistema operativo e a JupyterHub, seguite da uno script bash rudimentale che aggiunge più utenti.

Aggiunta di un utente del sistema operativo al container

Nell'esempio seguente viene utilizzato innanzitutto il comando useradd all'interno del container per aggiungere un singolo utente, diego, e creare una home directory per tale utente. Il secondo comando utilizza chpasswd per stabilire una password di diego per questo utente. I comandi vengono eseguiti sulla riga di comando del nodo master durante la connessione tramite. SSH Puoi anche eseguire questi comandi utilizzando una fase come descritto in precedenza in Amministrazione inviando fasi.

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

Aggiungere un JupyterHub utente

Puoi utilizzare il pannello di amministrazione in JupyterHub o REST API per aggiungere utenti e amministratori o solo utenti.

Per aggiungere utenti e amministratori utilizzando il pannello di amministrazione in JupyterHub
  1. Connect al nodo master utilizzando SSH e accedendo a https://MasterNodeDNS:9443 con un'identità con autorizzazioni di amministratore.

  2. Scegliere Control Panel (Pannello di controllo), Admin (Amministratore).

  3. Scegliere User (Utente), Add Users (Aggiungi utenti) o scegliere Admin (Amministratore), Add Admins (Aggiungi amministratori).

Per aggiungere un utente utilizzando il REST API
  1. Connect al nodo master utilizzando SSH e utilizzando il seguente comando sul nodo master oppure esegui il comando come passaggio.

  2. Acquisisci un token amministrativo per effettuare API richieste e sostituirlo AdminToken nel passaggio successivo con quel token.

  3. Usa il seguente comando, sostituendo UserName con un utente del sistema operativo che è stato creato all'interno del contenitore.

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

L'utente viene aggiunto automaticamente come utente JupyterHub non amministratore quando si accede all'interfaccia JupyterHub web per la prima volta.

Esempio: Script bash per aggiungere più utenti

Il seguente script bash di esempio collega i passaggi precedenti di questa sezione per creare più JupyterHub utenti. Lo script può essere eseguito direttamente sul nodo master o può essere caricato in Amazon S3 e, successivamente, eseguito come fase.

Lo script stabilisce innanzitutto un array di nomi utente e utilizza il jupyterhub token comando per creare un API token per l'amministratore predefinito, jovyan. Quindi crea un utente del sistema operativo nel container jupyterhub per ogni utente, assegnando a ciascuno una password iniziale che è uguale al relativo nome utente. Infine, richiama l'RESTAPIoperazione di creazione di ogni utente in. JupyterHub Passa il token generato in precedenza nello script e invia la REST risposta a jq per una visualizzazione più semplice.

# 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

Salva lo script in un percorso in Amazon S3, ad esempio s3://mybucket/createjupyterusers.sh. Quindi puoi utilizzare script-runner.jar per eseguirlo come una fase.

Esempio: Esecuzione dello script durante la creazione di un cluster (AWS CLI)

Nota

I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

aws emr create-cluster --name="MyJupyterHubCluster" --release-label emr-5.36.2 \ --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"]

Esecuzione dello script su un cluster esistente (AWS CLI)

Nota

I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuovili o sostituiscili con un accento circonflesso (^).

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"]