자습서: Amazon KDC 전용 클러스터 구성 EMR - Amazon EMR

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

자습서: Amazon KDC 전용 클러스터 구성 EMR

이 주제에서는 클러스터 전용 키 배포 센터(KDC)를 사용하여 클러스터를 생성하고, 모든 클러스터 노드에 Linux 계정을 수동으로 추가하고, 기본 노드의 KDC에 Kerberos 보안 주체를 추가하고, 클라이언트 컴퓨터에 Kerberos 클라이언트가 설치되어 있는지 확인하는 방법을 안내합니다.

Kerberos 및에 대한 Amazon EMR 지원KDC과 MIT Kerberos 설명서 링크에 대한 자세한 내용은 섹션을 참조하세요Amazon에서의 인증에 Kerberos 사용 EMR.

1단계: Kerberos 인증을 사용하는 클러스터 생성

  1. Kerberos 인증을 사용하는 보안 구성을 생성합니다. 다음 예제에서는 보안 구성을 인라인 JSON 구조로 AWS CLI 지정하는를 사용하는 create-security-configuration 명령을 보여줍니다. 또한 로컬에 저장된 파일을 참조할 수 있습니다.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{"AuthenticationConfiguration": {"KerberosConfiguration": {"Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": {"TicketLifetimeInHours": 24}}}}'
  2. 보안 구성을 참조하고 클러스터에 대해 Kerberos 속성을 설정하며 부트스트랩 작업을 사용하여 Linux 계정을 추가하는 클러스터를 생성합니다. 다음 예제는 AWS CLI를 사용하는 create-cluster 명령을 보여줍니다. 이 명령은 위에서 생성한 보안 구성인 MyKerberosConfig를 참조합니다. 또한 부트스트랩 작업으로 간단한 스크립트 createlinuxusers.sh를 참조합니다. 클러스터 생성 전에 만들어 Amazon S3에 업로드합니다.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-7.5.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair \ --service-role EMR_DefaultRole \ --security-configuration MyKerberosConfig \ --applications Name=Hadoop Name=Hive Name=Oozie Name=Hue Name=HCatalog Name=Spark \ --kerberos-attributes Realm=EC2.INTERNAL,\ KdcAdminPassword=MyClusterKDCAdminPwd \ --bootstrap-actions Path=s3://amzn-s3-demo-bucket/createlinuxusers.sh

    다음 코드는 createlinuxusers.sh 스크립트의 내용을 보여줍니다(클러스터의 각 노드에 user1, user2 및 user3 추가). 다음 단계에서는 이러한 사용자를 KDC 보안 주체로 추가합니다.

    #!/bin/bash sudo adduser user1 sudo adduser user2 sudo adduser user3

2단계:에 보안 주체 추가KDC, HDFS 사용자 디렉터리 생성 및 구성 SSH

기본 노드에서 KDC 실행 중인 에는 로컬 호스트와 클러스터에서 생성한 각 사용자에 대해 보안 주체가 추가되어야 합니다. 클러스터에 연결하고 하둡 작업을 실행해야 하는 경우 각 사용자에 대한 HDFS 디렉터리를 생성할 수도 있습니다. 마찬가지로 Kerberos에 필요한 GSSAPI 인증을 활성화하도록 SSH 서비스를 구성합니다. 를 활성화한 후 SSH 서비스를 GSSAPI다시 시작합니다.

이러한 작업을 가장 간단하게 수행할 수 있는 방법은 클러스터에 하나의 단계를 제출하는 것입니다. 다음 예제는 이전 단계에서 생성한 클러스터에 bash 스크립트 configurekdc.sh를 제출하여 클러스터 ID를 참조합니다. 스크립트는 Amazon S3에 저장됩니다. 또는 EC2 키 페어를 사용하여 기본 노드에 연결하여 명령을 실행하거나 클러스터 생성 중에 단계를 제출할 수 있습니다.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://myregion.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://amzn-s3-demo-bucket/configurekdc.sh"]

다음 코드는 configurekdc.sh 스크립트의 내용을 보여줍니다.

#!/bin/bash #Add a principal to the KDC for the primary node, using the primary node's returned host name sudo kadmin.local -q "ktadd -k /etc/krb5.keytab host/`hostname -f`" #Declare an associative array of user names and passwords to add declare -A arr arr=([user1]=pwd1 [user2]=pwd2 [user3]=pwd3) for i in ${!arr[@]}; do #Assign plain language variables for clarity name=${i} password=${arr[${i}]} # Create principal for sshuser in the primary node and require a new password on first logon sudo kadmin.local -q "addprinc -pw $password +needchange $name" #Add user hdfs directory hdfs dfs -mkdir /user/$name #Change owner of user's hdfs directory to user hdfs dfs -chown $name:$name /user/$name done # Enable GSSAPI authentication for SSH and restart SSH service sudo sed -i 's/^.*GSSAPIAuthentication.*$/GSSAPIAuthentication yes/' /etc/ssh/sshd_config sudo sed -i 's/^.*GSSAPICleanupCredentials.*$/GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config sudo systemctl restart sshd

이제 추가한 사용자가를 사용하여 클러스터에 연결할 수 있습니다SSH. 자세한 내용은 Amazon을 사용하여 Kerberized 클러스터에 연결하는 SSH 데 사용 EMR 단원을 참조하십시오.