PAM 인증 사용 - Amazon EMR

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

PAM 인증 사용

Amazon JupyterHub EMR에서 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. SSH를 사용하여 마스터 노드에 연결하고 관리자 권한이 있는 ID로 MasterNodehttps://DNS:9443에 로그인합니다.

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