PAM 인증 사용 - Amazon EMR

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

PAM 인증 사용

Amazon EMR에 설치된 JupyterHub에 PAM 사용자를 생성하는 방법은 두 단계의 프로세스로 이루어집니다. 첫 번째 단계는 마스터 노드의 jupyterhub 컨테이너에서 실행 중인 운영 체제에 사용자를 추가하는 것과 해당 사용자를 각 사용자의 홈 디렉터리에 추가하는 것입니다. 두 번째 단계는 이러한 운영 체제 사용자를 JupyterHub 사용자로 추가하는 것입니다.—프로세스 whitelisting 을 참조하십시오. 추가된 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의 Admin 패널이나 REST API를 사용하면 사용자 및 관리자를 추가하거나 사용자만 추가할 수 있습니다.

JupyterHub의 Admin 패널을 사용하면 사용자 및 관리자를 추가하려면

  1. SSH를 사용하여 마스터 노드에 연결하고 https://에 로그인합니다.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

예: 여러 사용자를 추가하기 위한 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.30.1 \ --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"]