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 utenti PAM in JupyterHub 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 all' 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 mediante 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 utente JupyterHub

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

Per aggiungere utenti e amministratori utilizzando il pannello di amministrazione in JupyterHub
  1. Connettiti al nodo principale tramite SSH e accedi 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 la REST API
  1. Connettersi al nodo master mediante SSH e utilizzare il comando seguente sul nodo master o eseguire il comando come una fase.

  2. Acquisisci un token amministrativo per effettuare richieste API e sostituiscilo AdminTokennel passaggio successivo con quel token.

  3. Utilizzate il seguente comando, sostituendolo UserNamecon un utente del sistema operativo creato all'interno del contenitore.

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

Verrai aggiunto automaticamente come utente JupyterHub non amministratore quando accedi 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.

Il primo script stabilisce una serie di nomi utente e utilizza il comando jupyterhub token per creare un token API 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, chiama l'operazione API REST per creare ogni utente in JupyterHub. Il token generato in precedenza nello script viene passato ed la risposta REST viene reindirizzata a jq per facilitare la visualizzazione.

# 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, rimuoverli o sostituirli 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"]