Uso de la autenticación PAM - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de la autenticación PAM

La creación de usuarios de PAM JupyterHub en Amazon EMR es un proceso de dos pasos. El primer paso es añadir usuarios al sistema operativo que se está ejecutando en el contenedor jupyterhub del nodo principal y añadir un directorio de inicio correspondiente a cada usuario. El segundo paso consiste en añadir a estos usuarios del sistema operativo como JupyterHub usuarios, un proceso que se conoce como inclusión en una lista blanca. JupyterHub Una vez agregado un JupyterHub usuario, este puede conectarse a la JupyterHub URL y proporcionar las credenciales de acceso de su sistema operativo.

Cuando un usuario inicia sesión, JupyterHub abre la instancia del servidor portátil de ese usuario, que se guarda en el directorio principal del usuario, en el nodo principal, que es/var/lib/jupyter/home/username. Si no existe una instancia de servidor de notebook, JupyterHub genera una instancia de notebook en el directorio principal del usuario. En las siguientes secciones se muestra cómo añadir usuarios de forma individual al sistema operativo y al mismo JupyterHub, seguido de un rudimentario script bash que añade varios usuarios.

Agregar un usuario de sistema operativo al contenedor

El siguiente ejemplo primero usa el comando useradd en el contenedor para añadir un solo usuario, diego, y crear un directorio de inicio para ese usuario. El segundo comando utiliza chpasswd para establecer la contraseña diego para este usuario. Los comandos se ejecutan en la línea de comandos del nodo principal mientras están conectados mediante SSH. También puede ejecutar estos comandos usando un paso tal como se ha descrito anteriormente en Administración mediante el envío de pasos.

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

Añadir un usuario JupyterHub

Puede usar el panel de administración JupyterHub o la API REST para agregar usuarios y administradores, o solo usuarios.

Para añadir usuarios y administradores mediante el panel de administración de JupyterHub
  1. Conéctese al nodo principal mediante SSH e inicie sesión en https://MasterNodeDNS:9443 con una identidad que tenga permisos de administrador.

  2. Elija Control Panel (Panel de control), Admin (Administración).

  3. Elija User (Usuario), Add Users (Añadir usuarios) o elija Admin (Administrador), Add Admins (Añadir administradores).

Para añadir un usuario con la API de REST
  1. Conéctese al nodo principal con SSH y utilice el siguiente comando en él o ejecute el comando como un paso.

  2. Adquiera un token administrativo para realizar solicitudes a la API y sustitúyalo por ese token AdminTokenen el siguiente paso.

  3. Usa el siguiente comando y UserNamesustitúyelo por un usuario del sistema operativo que se haya creado en el contenedor.

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

Al iniciar sesión en la interfaz JupyterHub web por primera vez, se le añade automáticamente como usuario JupyterHub no administrador.

Ejemplo: script bash para agregar varios usuarios

El siguiente ejemplo de script bash combina los pasos anteriores de esta sección para crear varios JupyterHub usuarios. El script puede ejecutarse directamente en el nodo maestro o puede cargarse en Amazon S3 y, a continuación, ejecutarse como un paso.

El script establece primero una matriz de nombres de usuario y utiliza el comando jupyterhub token para crear un token de API para el administrador predeterminado, jovyan. A continuación, crea un usuario de sistema operativo en el contenedor jupyterhub para cada usuario, asignando a cada uno una contraseña inicial igual que su nombre de usuario. Por último, llama a la operación de la API REST para crear a cada usuario. JupyterHub Pasa el token generado anteriormente en el script y canaliza la respuesta REST a jq para facilitar su visualización.

# 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

Guarde el script en una ubicación en Amazon S3, como s3://mybucket/createjupyterusers.sh. A continuación, puede utilizar script-runner.jar para ejecutarlo como un paso.

Ejemplo: ejecución del script al crear un clúster (AWS CLI)

nota

Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

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

Ejecución del script en un clúster existente (AWS CLI)

nota

Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

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