Utilizar a autenticação PAM - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Utilizar a autenticação PAM

Criar PAM usuários JupyterHub na Amazon EMR é um processo de duas etapas. A primeira etapa é adicionar usuários ao sistema operacional em execução no contêiner jupyterhub no nó principal e adicionar um diretório inicial do usuário correspondente para cada usuário. A segunda etapa é adicionar esses usuários do sistema operacional como JupyterHub usuários — um processo conhecido como lista branca em. JupyterHub Depois que um JupyterHub usuário é adicionado, ele pode se conectar ao JupyterHub URL e fornecer suas credenciais do sistema operacional para acesso.

Quando um usuário faz login, JupyterHub abre a instância do servidor do notebook para esse usuário, que é salva no diretório inicial do usuário no nó principal, que é/var/lib/jupyter/home/username. Se uma instância do servidor do notebook não existir, JupyterHub gera uma instância do notebook no diretório inicial do usuário. As seções a seguir demonstram como adicionar usuários individualmente ao sistema operacional e ao sistema operacional JupyterHub, seguido por um script bash rudimentar que adiciona vários usuários.

Adicionar um usuário do sistema operacional ao contêiner

O exemplo a seguir usa primeiro o comando useradd dentro do contêiner para adicionar um único usuário, diego e criar um diretório inicial para esse usuário. O segundo comando usa chpasswd para estabelecer uma senha de diego para este usuário. Os comandos são executados na linha de comando do nó principal enquanto estão conectados usandoSSH. Você também pode executar esses comandos usando uma etapa conforme descrito anteriormente em Administração por envio de etapas.

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

Adicionando um JupyterHub usuário

Você pode usar o painel de administração em JupyterHub ou REST API para adicionar usuários e administradores, ou apenas usuários.

Para adicionar usuários e administradores usando o painel de administração no JupyterHub
  1. Conecte-se ao nó principal usando SSH e faça login em https://MasterNodeDNS:9443 com uma identidade que tenha permissões de administrador.

  2. Escolha Control Panel (Painel de Controle), Admin.

  3. Escolha User (Usuário), Add Users (Adicionar usuários) ou escolha Admin, Add Admins (Adicionar admins).

Para adicionar um usuário usando o REST API
  1. Conecte-se ao nó principal usando SSH e use o comando a seguir no nó principal ou execute o comando como uma etapa.

  2. Adquira um token administrativo para fazer API solicitações e substituir AdminToken na etapa seguinte com esse token.

  3. Use o comando a seguir, substituindo UserName com um usuário do sistema operacional que foi criado dentro do contêiner.

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

Você é automaticamente adicionado como usuário JupyterHub não administrador ao fazer login na interface da JupyterHub web pela primeira vez.

Exemplo: script Bash para adicionar vários usuários

O exemplo de script bash a seguir reúne as etapas anteriores desta seção para criar vários JupyterHub usuários. O script pode ser executado diretamente no nó principal, ou pode ser carregado no Amazon S3 e, em seguida, executado como uma etapa.

O script primeiro estabelece uma matriz de nomes de usuário e usa o jupyterhub token comando para criar um API token para o administrador padrão, jovyan. Em seguida, ele cria um usuário do sistema operacional no contêiner jupyterhub para cada usuário, atribuindo uma senha inicial a cada um que é igual ao seu nome de usuário. Por fim, ele chama a REST API operação para criar cada usuário em JupyterHub. Ele passa o token gerado anteriormente no script e canaliza a REST resposta jq para facilitar a visualização.

# 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

Salve o script em um local do Amazon S3, como s3://mybucket/createjupyterusers.sh. Em seguida, você pode usar o script-runner.jar para executá-lo como uma etapa.

Exemplo: executar o script ao criar um cluster (AWS CLI)

nota

Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

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

Executar o script em um cluster existente (AWS CLI)

nota

Os caracteres de continuação de linha do Linux (\) são incluídos para facilitar a leitura. Eles podem ser removidos ou usados ​​em comandos do Linux. No Windows, remova-os ou substitua-os por um sinal de interpolação (^).

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