PAM인증 사용 - 아마존 EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

PAM인증 사용

JupyterHub EMRAmazon에서 PAM 사용자를 생성하는 과정은 2단계로 이루어집니다. 첫 번째 단계는 마스터 노드의 jupyterhub 컨테이너에서 실행 중인 운영 체제에 사용자를 추가하는 것과 해당 사용자를 각 사용자의 홈 디렉터리에 추가하는 것입니다. 두 번째 단계는 이러한 운영 체제 사용자를 사용자로 추가하는 것인데 JupyterHub, 이를 화이트리스트에 추가한다고 합니다. JupyterHub JupyterHub 사용자가 추가되면 해당 사용자는 에 접속하여 액세스를 위한 운영 체제 자격 증명을 제공할 수 있습니다. JupyterHub URL

사용자가 로그인하면 해당 사용자의 노트북 서버 인스턴스가 JupyterHub 열립니다. 이 인스턴스는 마스터 노드의 사용자 홈 디렉토리, 즉, 에 저장됩니다/var/lib/jupyter/home/username. 노트북 서버 인스턴스가 없는 경우, 사용자의 홈 디렉터리에 노트북 인스턴스를 JupyterHub 생성합니다. 다음 섹션에서는 운영 체제와 운영 체제에 사용자를 개별적으로 추가하는 방법과 여러 사용자를 추가하는 기초적인 bash 스크립트를 보여줍니다. JupyterHub

컨테이너에 운영 체제 사용자 추가

다음 예제에서는 먼저 컨테이너 내에서 useradd 명령을 사용하여 단일 사용자인 diego를 추가한 다음 해당 사용자용 홈 디렉터리를 만듭니다. 두 번째 명령에서는 chpasswd를 사용하여 이 사용자를 위한 diego 암호를 설정합니다. 를 사용하여 연결되어 있는 동안 마스터 노드 명령줄에서 명령이 실행됩니다. SSH 단계를 제출하여 관리의 앞부분에 설명되어 있는 대로 단계를 사용하여 이 명령을 실행할 수도 있습니다.

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

JupyterHub 사용자 추가

JupyterHub 또는 에서 관리자 패널을 사용하여 사용자와 관리자를 추가하거나 사용자만 추가할 수 있습니다. REST API

의 관리자 패널을 사용하여 사용자와 관리자를 추가하려면 JupyterHub
  1. https://를 사용하여 마스터 노드에 SSH 연결하고 로그인합니다.MasterNodeDNS:9443 (관리자 권한이 있는 ID 포함)

  2. 제어판, Admin을 선택합니다.

  3. 사용자, 사용자 추가를 선택하거나 Admin, Add Admins(Admin 추가)를 선택합니다.

를 사용하여 사용자를 추가하려면 REST API
  1. 마스터 노드에서 다음 명령을 사용하여 SSH 마스터 노드에 연결하거나 명령을 단계적으로 실행합니다.

  2. 관리 토큰을 획득하여 API 요청하고 교체하십시오.AdminToken 다음 단계에서 해당 토큰을 사용하세요.

  3. 다음 명령을 사용하여 바꾸십시오.UserName 컨테이너 내에 생성된 운영 체제 사용자와 함께

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

JupyterHub웹 인터페이스에 처음 로그인하면 자동으로 JupyterHub 비관리자 사용자로 추가됩니다.

예제: 여러 사용자를 추가하는 Bash 스크립트

다음 샘플 bash 스크립트는 이 섹션의 이전 단계를 결합하여 여러 JupyterHub 사용자를 생성합니다. 이 스크립트는 프라이머리 노드에서 직접 실행할 수도 있고, Amazon S3에 업로드한 다음 하나의 단계로 실행할 수도 있습니다.

스크립트는 먼저 사용자 이름 배열을 설정하고 jupyterhub token 명령을 사용하여 기본 관리자인 jovyan의 API 토큰을 만듭니다. 그런 다음 해당 사용자용 jupyterhub 컨테이너에 운영 체제 사용자를 생성합니다. 이때 최초 암호는 각 사용자 이름과 동일하게 지정됩니다. 마지막으로 각 사용자를 생성하는 REST API 작업을 호출합니다. JupyterHub 스크립트에서 이전에 생성된 토큰을 전달하고 REST 응답을 파이프하여 보기 쉽도록 jq 합니다.

# 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

이 스크립트를 Amazon S3의 위치(예: s3://mybucket/createjupyterusers.sh)에 저장합니다. 그런 다음 script-runner.jar을 사용하여 이를 하나의 단계로 실행하면 됩니다.

예제: 클러스터 생성 시 스크립트 실행(AWS CLI)

참고

가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

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

기존 클러스터에서 스크립트 실행(AWS CLI)

참고

가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

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