자습서: Active Directory 도메인과 교차 영역 신뢰 구성 - Amazon EMR

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

자습서: Active Directory 도메인과 교차 영역 신뢰 구성

교차 영역 신뢰를 설정할 때 다른 Kerberos 영역의 보안 주체(일반적으로 사용자)가 EMR 클러스터의 애플리케이션 구성 요소에 인증하도록 허용합니다. 클러스터 전용 키 배포 센터(KDC)는 두 에 모두 있는 교차 영역 보안 주체를 KDC 사용하여 다른 와 신뢰 관계를 설정합니다KDCs. 보안 주체의 이름과 암호가 정확하게 일치합니다.

교차 영역 신뢰의 경우 가 네트워크를 통해 서로 연결되고 서로의 도메인 이름을 확인할 KDCs 수 있어야 합니다. EC2 인스턴스로 실행되는 Microsoft AD 도메인 컨트롤러와 영역 간 신뢰 관계를 설정하는 단계는 필요한 연결 및 도메인 이름 확인을 제공하는 예제 네트워크 설정과 함께 아래에 나와 있습니다. 에서 필요한 네트워크 트래픽을 허용하는 모든 네트워크 설정이 KDCs 허용됩니다.

선택적으로 한 클러스터KDC에서 를 사용하여 Active Directory와 영역 간 신뢰를 설정한 후 다른 보안 구성을 사용하여 다른 클러스터를 생성하여 첫 번째 클러스터KDC의 를 외부 로 참조할 수 있습니다KDC. 보안 그룹 및 클러스터 설정의 예는 Active Directory 교차 영역 신뢰KDC가 있는 외부 클러스터 단원을 참조하십시오.

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

중요

AmazonEMR은 를 통한 교차 영역 신뢰는 지원하지 않습니다 AWS Directory Service for Microsoft Active Directory.

1단계: VPC 및 서브넷 설정

2단계: Active Directory 도메인 컨트롤러 시작 및 설치

3단계: EMR 클러스터의 도메인에 계정 추가

4단계: Active Directory 도메인 컨트롤러에서 인바운드 신뢰 구성

5단계: DHCP 옵션 세트를 사용하여 Active Directory 도메인 컨트롤러를 VPC DNS 서버로 지정합니다.

6단계: Kerberized EMR 클러스터 시작

7단계: Active Directory 계정의 클러스터에 대한 HDFS 사용자 생성 및 권한 설정

1단계: VPC 및 서브넷 설정

다음 단계에서는 클러스터 전용 가 Active Directory 도메인 컨트롤러에 도달하고 도메인 이름을 확인할 KDC 수 있도록 VPC 및 서브넷을 생성하는 방법을 보여줍니다. 이 단계에서는 Active Directory 도메인 컨트롤러를 DHCP 옵션 세트의 도메인 이름 서버로 참조하여 도메인 이름 확인이 제공됩니다. 자세한 내용은 5단계: DHCP 옵션 세트를 사용하여 Active Directory 도메인 컨트롤러를 VPC DNS 서버로 지정합니다. 단원을 참조하십시오.

KDC 및 Active Directory 도메인 컨트롤러는 서로의 도메인 이름을 확인할 수 있어야 합니다. 이렇게 하면 AmazonEMR이 컴퓨터에 도메인에 조인하고 클러스터 인스턴스에서 해당 Linux 계정 및 SSH 파라미터를 자동으로 구성할 수 있습니다.

Amazon에서 도메인 이름을 확인할 EMR 수 없는 경우 Active Directory 도메인 컨트롤러의 IP 주소를 사용하여 신뢰를 참조할 수 있습니다. 그러나 Linux 계정을 수동으로 추가하고 클러스터 전용 에 해당 보안 주체를 추가KDC하고 를 구성해야 합니다SSH.

VPC 및 서브넷을 설정하려면
  1. 단일 퍼블릭 서브넷VPC으로 Amazon을 생성합니다. 자세한 내용은 Amazon 시작하기 안내서의 1단계: 생성을 VPC 참조하세요. VPC

    중요

    Microsoft Active Directory 도메인 컨트롤러를 사용하는 경우 모든 IPv4 주소의 길이가 9자 미만이 되도록 EMR 클러스터의 CIDR 블록을 선택합니다(예: 10.0.0.0/16). 이는 컴퓨터가 Active Directory 디렉터리에 조인할 때 클러스터 컴퓨터의 DNS 이름이 사용되기 때문입니다. 는 IP 주소가 길수록 이름이 15자를 초과할 수 있는 방식으로 IPv4 주소를 기반으로 DNS 호스트 DNS 이름을 AWS 할당합니다. Active Directory는 조인된 컴퓨터 이름을 15자로 제한하고 예상하지 못한 오류가 발생하지 않도록 긴 이름은 끝을 자릅니다.

  2. 에 할당된 기본 DHCP 옵션 세트를 제거합니다VPC. 자세한 내용은 DHCP 옵션 없음을 사용하도록 변경 VPC을 참조하세요. 나중에 Active Directory 도메인 컨트롤러를 DNS 서버로 지정하는 새 를 추가합니다.

  3. 에 대한 DNS 지원이 활성화되어 있는지VPC, 즉 DNS 호스트 이름과 DNS 해결이 모두 활성화되어 있는지 확인합니다. 전환은 기본적으로 활성화되어 있습니다. 자세한 내용은 에 대한 DNS 지원 업데이트를 참조하세요VPC.

  4. 에 기본 인터넷 게이트웨이VPC가 연결되어 있는지 확인합니다. 자세한 내용은 인터넷 게이트웨이 생성 및 연결을 참조하십시오.

    참고

    이 예제에서는 에 대한 새 도메인 컨트롤러를 설정하기 때문에 인터넷 게이트웨이가 사용됩니다VPC. 인터넷 게이트웨이가 애플리케이션에서 필요하지 않을 수 있습니다. 유일한 요구 사항은 클러스터 전용 가 Active Directory 도메인 컨트롤러에 액세스할 KDC 수 있다는 것입니다.

  5. 사용자 지정 라우팅 테이블을 생성하고 인터넷 게이트웨이를 목표로 하는 루트를 추가한 다음, 서브넷에 이를 연결합니다. 자세한 내용은 사용자 지정 라우팅 테이블 생성을 참조하세요.

  6. 도메인 컨트롤러의 EC2 인스턴스를 시작할 때 를 사용하여 인스턴스에 연결할 수 있는 정적 퍼블릭 IPv4 주소가 있어야 합니다RDP. 이렇게 하는 가장 쉬운 방법은 퍼블릭 IPv4 주소를 자동 할당하도록 서브넷을 구성하는 것입니다. 이는 서브넷이 생성될 때 기본 설정이 아닙니다. 자세한 내용은 서브넷의 퍼블릭 IPv4 주소 지정 속성 수정을 참조하세요. 선택에 따라 인스턴스를 시작할 때 이 주소를 할당할 수 있습니다. 자세한 내용은 인스턴스 시작 중 퍼블릭 IPv4 주소 할당을 참조하세요.

  7. 완료되면 VPC 및 서브넷 을 기록해 둡니다IDs. 나중에 Active Directory 도메인 컨트롤러와 클러스터를 시작할 때 사용합니다.

2단계: Active Directory 도메인 컨트롤러 시작 및 설치

  1. Microsoft Windows Server 2016 Base 를 기반으로 EC2 인스턴스를 시작합니다AMI. m4.xlarge나 더 나은 인스턴스 유형을 사용하는 것이 좋습니다. 자세한 내용은 Amazon EC2 사용 설명서AWS Marketplace 인스턴스 시작을 참조하세요.

  2. EC2 인스턴스와 연결된 보안 그룹의 그룹 ID를 기록해 둡니다. 나중에 6단계: Kerberized EMR 클러스터 시작에서 필요합니다. 우리는 sg-012xrlmdomain345. 또는 EMR 클러스터와 이 인스턴스 간의 트래픽을 허용하는 인스턴스에 대해 서로 다른 보안 그룹을 지정할 수 있습니다. 자세한 내용은 Amazon 사용 설명서의 Linux 인스턴스용 Amazon EC2 보안 그룹을 참조하세요. EC2

  3. 를 사용하여 EC2 인스턴스에 연결합니다RDP. 자세한 내용은 Amazon EC2 사용 설명서Windows 인스턴스에 연결을 참조하세요.

  4. 서버 관리자를 열고 해당 서버에서 Active Directory 도메인 서비스 역할을 설치 및 구성합니다. 서버를 도메인 컨트롤러로 승격하고 도메인 이름(이 예제에서는 ad.domain.com)을 할당합니다. 나중에 EMR 보안 구성 및 클러스터를 생성할 때 도메인 이름이 필요하므로 도메인 이름을 기록해 둡니다. Active Directory를 처음 설정하는 경우 Windows Server 2016에서 Active Directory(AD)를 설정하는 방법의 지침을 따를 수 있습니다.

    설정이 완료되면 인스턴스가 다시 시작됩니다.

3단계: EMR 클러스터의 도메인에 계정 추가

RDP Active Directory 도메인 컨트롤러로 이동하여 각 클러스터 사용자의 Active Directory 사용자 및 컴퓨터에 계정을 생성합니다. 자세한 내용은 Microsoft Learn 사이트에서 Create a User Account in Active Directory Users and Computers를 참조하세요. 각 사용자의 사용자 로그온 이름을 적어둡니다. 나중에 클러스터를 구성할 때 필요하기 때문입니다.

뿐만 아니라, 컴퓨터를 도메인에 조인할 수 있는 충분한 권한을 가진 계정을 생성해야 합니다. 이 계정은 클러스터를 생성할 때 지정합니다. AmazonEMR은 이를 사용하여 클러스터 인스턴스를 도메인에 조인합니다. 6단계: Kerberized EMR 클러스터 시작에서 이 계정과 암호를 지정합니다. 컴퓨터 조인 권한을 이 계정에 위임하려면 조인 권한을 가진 그룹을 생성한 다음, 이 그룹에 사용자를 할당하는 것이 좋습니다. 관련 지침은 AWS Directory Service 관리 안내서에서 디렉터리 조인 권한 위임을 참조하세요.

4단계: Active Directory 도메인 컨트롤러에서 인바운드 신뢰 구성

아래 예제 명령은 클러스터 전용 의 단방향, 수신, 비일시적, 영역 신뢰인 Active Directory에서 신뢰를 생성합니다KDC. 이 예제에서는 클러스터의 영역은 EC2.INTERNAL입니다. 를 교체합니다.KDC-FQDN 를 호스팅하는 Amazon EMR 기본 노드에 대한 퍼블릭 DNS 이름이 나열된 . KDC passwordt 파라미터는 클러스터를 생성할 때 클러스터 영역과 함께 지정하는 교차 영역 보안 주체 암호를 지정합니다. 영역 이름은 해당 클러스터에 대한 us-east-1의 기본 도메인 이름에서 파생됩니다. Domain은 신뢰를 생성하고 있는 Active Directory 도메인으로, 일반적으로 소문자를 많이 사용합니다. 이 예에서는 ad.domain.com을 사용합니다.

관리자 권한으로 Windows 명령 프롬프트를 열고 다음 명령을 입력하여 Active Directory 도메인 컨트롤러에서 신뢰 관계를 생성합니다.

C:\Users\Administrator> ksetup /addkdc EC2.INTERNAL KDC-FQDN C:\Users\Administrator> netdom trust EC2.INTERNAL /Domain:ad.domain.com /add /realm /passwordt:MyVeryStrongPassword C:\Users\Administrator> ksetup /SetEncTypeAttr EC2.INTERNAL AES256-CTS-HMAC-SHA1-96

5단계: DHCP 옵션 세트를 사용하여 Active Directory 도메인 컨트롤러를 VPC DNS 서버로 지정합니다.

이제 Active Directory 도메인 컨트롤러가 구성되었으므로 내에서 이름 확인을 위해 도메인 이름 서버로 VPC 사용하도록 를 구성해야 합니다VPC. 이렇게 하려면 DHCP 옵션 세트를 연결합니다. 도메인 이름을 클러스터의 도메인 이름으로 지정합니다. 예를 들어 클러스터가 us-east-1에 있는 경우에는 ec2.internal, 다른 리전의 경우에는 region.compute.internal입니다. 도메인 이름 서버 의 경우 Active Directory 도메인 컨트롤러의 IP 주소(클러스터에서 연결할 수 있어야 함)를 첫 번째 항목으로 지정한 다음 AmazonProvidedDNS (예: xx.xx.xx.xx,AmazonProvidedDNS). 자세한 내용은 DHCP 옵션 세트 변경을 참조하세요.

6단계: Kerberized EMR 클러스터 시작

  1. Amazon 에서 이전 단계에서 생성한 Active Directory 도메인 컨트롤러를 지정하는 보안 구성을 EMR생성합니다. 아래에 명령 예제가 나와 있습니다. 도메인 ad.domain.com2단계: Active Directory 도메인 컨트롤러 시작 및 설치에서 지정한 도메인 이름으로 대체합니다.

    aws emr create-security-configuration --name MyKerberosConfig \ --security-configuration '{ "AuthenticationConfiguration": { "KerberosConfiguration": { "Provider": "ClusterDedicatedKdc", "ClusterDedicatedKdcConfiguration": { "TicketLifetimeInHours": 24, "CrossRealmTrustConfiguration": { "Realm": "AD.DOMAIN.COM", "Domain": "ad.domain.com", "AdminServer": "ad.domain.com", "KdcServer": "ad.domain.com" } } } } }'
  2. 다음 속성을 사용하여 클러스터를 생성합니다.

    • --security-configuration 옵션을 사용하여 생성한 보안 구성을 지정합니다. 우리는 MyKerberosConfig 를 참조하십시오.

    • --ec2-attributes optionSubnetId 속성을 사용하여 1단계: VPC 및 서브넷 설정에서 생성한 서브넷을 지정합니다. 우리는 step1-subnet 를 참조하십시오.

    • --ec2-attributes 옵션의 AdditionalMasterSecurityGroupsAdditionalSlaveSecurityGroups를 사용하여 2단계: Active Directory 도메인 컨트롤러 시작 및 설치의 AD 도메인 컨트롤러와 연결된 보안 그룹이 코어 및 태스크 노드뿐만 아니라 클러스터 프라이머리 노드와 연결되도록 지정합니다. 우리는 sg-012xrlmdomain345 를 참조하십시오.

    또한 --kerberos-attributes를 사용하여 다음과 같은 클러스터 고유의 Kerberos 속성을 지정합니다.

    다음 예제는 Kerberos 인증을 사용하는 클러스터를 시작합니다.

    aws emr create-cluster --name "MyKerberosCluster" \ --release-label emr-5.10.0 \ --instance-type m5.xlarge \ --instance-count 3 \ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole,KeyName=MyEC2KeyPair,\ SubnetId=step1-subnet, AdditionalMasterSecurityGroups=sg-012xrlmdomain345, AdditionalSlaveSecurityGroups=sg-012xrlmdomain345\ --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,\ ADDomainJoinUser=ADUserLogonName,ADDomainJoinPassword=ADUserPassword,\ CrossRealmTrustPrincipalPassword=MatchADTrustPwd

7단계: Active Directory 계정의 클러스터에 대한 HDFS 사용자 생성 및 권한 설정

Active Directory와 신뢰 관계를 설정할 때 Amazon은 각 Active Directory 계정에 대해 클러스터에 Linux 사용자를 EMR 생성합니다. 예를 들어 Active Directory의 사용자 로그인 이름 LiJuanlijuan이라는 Linux 계정을 갖습니다. Active Directory 사용자 이름에는 대문자가 포함될 수 있지만 Linux는 Active Directory 대소문자를 인식하지 못합니다.

사용자가 클러스터에 로그인하여 Hadoop 작업을 실행하도록 허용하려면 Linux 계정에 대한 HDFS 사용자 디렉터리를 추가하고 각 사용자에게 디렉터리의 소유권을 부여해야 합니다. 이를 위해서는 클러스터 단계로 Amazon S3에 저장된 스크립트를 실행하는 것이 좋습니다. 또는 프라이머리 노드의 명령줄에서 아래 스크립트의 명령을 실행할 수도 있습니다. 클러스터를 생성할 때 지정한 EC2 키 페어를 사용하여 Hadoop 사용자SSH로 기본 노드에 연결합니다. 자세한 내용은 보안 SSH 인증에 EC2 키 페어 사용 단원을 참조하십시오.

다음 명령을 실행하여 스크립트를 실행하는 클러스터에 단계를 추가합니다.AddHDFSUsers.sh.

aws emr add-steps --cluster-id <j-2AL4XXXXXX5T9> \ --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,\ Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://DOC-EXAMPLE-BUCKET/AddHDFSUsers.sh"]

파일의 내용 AddHDFSUsers.sh 는 다음과 같습니다.

#!/bin/bash # AddHDFSUsers.sh script # Initialize an array of user names from AD or Linux users and KDC principals created manually on the cluster ADUSERS=("lijuan" "marymajor" "richardroe" "myusername") # For each user listed, create an HDFS user directory # and change ownership to the user for username in ${ADUSERS[@]}; do hdfs dfs -mkdir /user/$username hdfs dfs -chown $username:$username /user/$username done

Hadoop 그룹에 매핑된 Active Directory 그룹

AmazonEMR은 System Security Services Daemon(SSD)을 사용하여 Active Directory 그룹을 Hadoop 그룹에 매핑합니다. SSH 를 사용하여 Kerberized 클러스터에 연결에 설명된 대로 프라이머리 노드에 로그인한 후에 그룹 매핑을 확인하기 위해 hdfs groups 명령을 사용하여 클러스터에서 해당 Hadoop 사용자의 Hadoop 그룹에 Active Directory 계정이 속한 Active Directory 그룹이 매핑되었는지 확인할 수 있습니다. 또한 명령(예를 들면 hdfs groups lijuan)을 사용하여 하나 이상의 사용자 이름을 지정하는 방법으로 다른 사용자의 그룹 매핑을 확인할 수도 있습니다. 자세한 내용은 Apache 명령 가이드의 그룹을 참조하세요. HDFS