PAMAuthentifizierung wird verwendet - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

PAMAuthentifizierung wird verwendet

Das Erstellen von PAM Benutzern JupyterHub bei Amazon EMR erfolgt in zwei Schritten. Der erste Schritt besteht darin, dem Betriebssystem, das im Container jupyterhub auf dem Master-Knoten ausgeführt wird, Benutzer hinzuzufügen, und für jeden Benutzer ein entsprechendes Benutzer-Stammverzeichnis hinzuzufügen. Der zweite Schritt besteht darin, diese Betriebssystembenutzer als JupyterHub Benutzer hinzuzufügen — ein Vorgang, der als Whitelisting bezeichnet wird. JupyterHub Nachdem ein JupyterHub Benutzer hinzugefügt wurde, kann er sich mit dem verbinden JupyterHub URL und seine Betriebssystemanmeldedaten für den Zugriff angeben.

Wenn sich ein Benutzer anmeldet, JupyterHub wird die Notebook-Server-Instanz für diesen Benutzer geöffnet, die im Home-Verzeichnis des Benutzers auf dem Master-Knoten gespeichert ist/var/lib/jupyter/home/username. Wenn eine Notebook-Server-Instanz nicht existiert, JupyterHub wird eine Notebook-Instanz im Home-Verzeichnis des Benutzers erzeugt. In den folgenden Abschnitten wird gezeigt, wie Benutzer einzeln zum Betriebssystem und zu hinzugefügt werden JupyterHub, gefolgt von einem rudimentären Bash-Skript, das mehrere Benutzer hinzufügt.

Hinzufügen eines Betriebssystembenutzers zum Container

Das folgende Beispiel verwendet den Befehl useradd innerhalb des Containers, um einen einzelnen Benutzer hinzuzufügen, diego, und ein Stammverzeichnis für diesen Benutzer anzulegen. Der zweite Befehl verwendet chpasswd, um diego ein Passwort für diesen Benutzer zu erteilen. Befehle werden in der Befehlszeile des Master-Knotens ausgeführt, während die Verbindung über SSH Sie können diese Befehle auch mithilfe eines Schritts ausführen, wie zuvor in Administration durch Übermitteln von Schritten beschrieben.

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

Einen JupyterHub Benutzer hinzufügen

Sie können das Admin-Panel in JupyterHub oder im verwenden, REST API um Benutzer und Administratoren oder einfach nur Benutzer hinzuzufügen.

So fügen Sie Benutzer und Administratoren über das Admin-Panel in hinzu JupyterHub
  1. Stellen Sie über https://eine Connect zum Master-Knoten her SSH und melden Sie sich anMasterNodeDNS:9443 mit einer Identität, die über Administratorrechte verfügt.

  2. Wählen Sie Control Panel (Systemsteuerung), Admin (Administrator).

  3. Wählen Sie User (Benutzer), Add Users (Benutzer hinzufügen) oder wählen Sie Admin (Administrator), Add Admins (Administratoren hinzufügen).

Um einen Benutzer hinzuzufügen, verwenden Sie REST API
  1. Stellen Sie mithilfe des folgenden Befehls Connect zum Master-Knoten her SSH und verwenden Sie den folgenden Befehl auf dem Master-Knoten, oder führen Sie den Befehl als Schritt aus.

  2. Erwerben Sie ein Administrator-Token, um API Anfragen zu stellen, und ersetzen Sie es AdminToken im folgenden Schritt mit diesem Token.

  3. Verwenden Sie den folgenden Befehl und ersetzen Sie UserName mit einem Betriebssystembenutzer, der innerhalb des Containers erstellt wurde.

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

Sie werden automatisch als Benutzer JupyterHub ohne Administratorrechte hinzugefügt, wenn Sie sich zum ersten Mal an der JupyterHub Weboberfläche anmelden.

Beispiel: Bash-Skript zum Hinzufügen mehrerer Benutzer

Das folgende Bash-Beispielskript verknüpft die vorherigen Schritte in diesem Abschnitt, um mehrere JupyterHub Benutzer zu erstellen. Das Skript kann direkt auf dem Hauptknoten ausgeführt werden, oder in Amazon S3 hochgeladen und als Schritt ausgeführt werden.

Das Skript erstellt zunächst eine Reihe von Benutzernamen und verwendet den jupyterhub token Befehl, um ein API Token für den Standardadministrator jovyan zu erstellen. Anschließend erstellt es einen Betriebssystem-Benutzer im jupyterhub-Container für jeden Benutzer und weist jedem von ihnen ein anfängliches Passwort zu, das gleich ihrem Benutzernamen ist. Schließlich ruft es die REST API Operation auf, in der die einzelnen Benutzer erstellt werden. JupyterHub Es übergibt das zuvor im Skript generierte Token und leitet die REST Antwort jq zur besseren Anzeige weiter.

# 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

Speichern Sie das Skript an einem Speicherort in Amazon S3, beispielsweise s3://mybucket/createjupyterusers.sh. Anschließend können Sie es mit script-runner.jar als Schritt ausführen.

Beispiel: Ausführen des Skripts beim Erstellen eines Clusters (AWS CLI)

Anmerkung

Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

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

Ausführen des Skripts auf einem vorhandenen Cluster (AWS CLI)

Anmerkung

Linux-Zeilenfortsetzungszeichen (\) sind aus Gründen der Lesbarkeit enthalten. Sie können entfernt oder in Linux-Befehlen verwendet werden. Entfernen Sie sie unter Windows oder ersetzen Sie sie durch ein Caret-Zeichen (^).

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