기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자습서: 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.
2단계: Active Directory 도메인 컨트롤러 시작 및 설치
4단계: Active Directory 도메인 컨트롤러에서 인바운드 신뢰 구성
5단계: DHCP 옵션 세트를 사용하여 Active Directory 도메인 컨트롤러를 VPC DNS 서버로 지정
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 및 서브넷을 설정하려면
-
단일 퍼블릭 서브넷VPC으로 Amazon을 생성합니다. 자세한 내용은 Amazon 시작 안내서의 1단계: 생성을 VPC 참조하세요. VPC
중요
Microsoft Active Directory 도메인 컨트롤러를 사용하는 경우 모든 IPv4 주소의 길이가 9자 미만이 되도록 EMR 클러스터의 CIDR 블록을 선택합니다(예: 10.0.0.0/16). 이는 컴퓨터가 Active Directory 디렉터리에 조인할 때 클러스터 컴퓨터의 DNS 이름이 사용되기 때문입니다.는 IPv4 IP 주소가 길수록 이름이 15자를 초과할 수 있는 방식으로 주소를 기반으로 DNS 호스트 DNS 이름을 AWS 할당합니다. Active Directory는 조인된 컴퓨터 이름을 15자로 제한하고 예상하지 못한 오류가 발생하지 않도록 긴 이름은 끝을 자릅니다.
-
에 할당된 기본 DHCP 옵션 세트를 제거합니다VPC. 자세한 내용은 DHCP 옵션을 사용하지 VPC 않도록 변경을 참조하세요. 나중에 Active Directory 도메인 컨트롤러를 DNS 서버로 지정하는 새 도메인을 추가합니다.
-
에 대한 DNS 지원이 활성화되어 있는지VPC, 즉 DNS 호스트 이름과 DNS 해결이 모두 활성화되어 있는지 확인합니다. 전환은 기본적으로 활성화되어 있습니다. 자세한 내용은 에 대한 DNS 지원 업데이트를 참조하세요VPC.
-
VPC에 기본 인터넷 게이트웨이가 연결되어 있는지 확인합니다. 자세한 내용은 인터넷 게이트웨이 생성 및 연결을 참조하십시오.
참고
이 예제에서는에 대한 새 도메인 컨트롤러를 설정하기 때문에 인터넷 게이트웨이가 사용됩니다VPC. 인터넷 게이트웨이가 애플리케이션에서 필요하지 않을 수 있습니다. 유일한 요구 사항은 클러스터 전용가 Active Directory 도메인 컨트롤러에 액세스할 KDC 수 있다는 것입니다.
-
사용자 지정 라우팅 테이블을 생성하고 인터넷 게이트웨이를 목표로 하는 루트를 추가한 다음, 서브넷에 이를 연결합니다. 자세한 내용은 사용자 지정 라우팅 테이블 생성을 참조하세요.
-
도메인 컨트롤러의 EC2 인스턴스를 시작할 때를 사용하여 인스턴스에 연결하려면 정적 퍼블릭 IPv4 주소가 있어야 합니다RDP. 이렇게 하는 가장 쉬운 방법은 퍼블릭 IPv4 주소를 자동 할당하도록 서브넷을 구성하는 것입니다. 이는 서브넷이 생성될 때 기본 설정이 아닙니다. 자세한 내용은 서브넷의 퍼블릭 IPv4 주소 지정 속성 수정을 참조하세요. 선택에 따라 인스턴스를 시작할 때 이 주소를 할당할 수 있습니다. 자세한 내용은 인스턴스 시작 중 퍼블릭 IPv4 주소 할당을 참조하세요.
-
완료되면 VPC 및 서브넷을 기록해 둡니다IDs. 나중에 Active Directory 도메인 컨트롤러와 클러스터를 시작할 때 사용합니다.
2단계: Active Directory 도메인 컨트롤러 시작 및 설치
-
Microsoft Windows Server 2016 Base를 기반으로 EC2 인스턴스를 시작합니다AMI. m4.xlarge나 더 나은 인스턴스 유형을 사용하는 것이 좋습니다. 자세한 내용은 Amazon EC2 사용 설명서의 AWS Marketplace 인스턴스 시작을 참조하세요.
-
EC2 인스턴스와 연결된 보안 그룹의 그룹 ID를 기록해 둡니다. 나중에 6단계: Kerberized EMR 클러스터 시작에서 필요합니다. 를 사용합니다
sg-012xrlmdomain345
. 또는 EMR 클러스터와이 인스턴스 간의 트래픽을 허용하는 인스턴스에 대해 서로 다른 보안 그룹을 지정할 수 있습니다. 자세한 내용은 Amazon 사용 설명서의 Linux 인스턴스용 Amazon EC2 보안 그룹을 참조하세요. EC2 -
를 사용하여 EC2 인스턴스에 연결합니다RDP. 자세한 내용은 Amazon EC2 사용 설명서의 Windows 인스턴스에 연결을 참조하세요.
-
서버 관리자를 열고 해당 서버에서 Active Directory 도메인 서비스 역할을 설치 및 구성합니다. 서버를 도메인 컨트롤러로 승격하고 도메인 이름(이 예제에서는
)을 할당합니다. 나중에 EMR 보안 구성 및 클러스터를 생성할 때 필요하므로 도메인 이름을 기록해 둡니다. Active Directory를 처음 설정하는 경우 Windows Server 2016에서 Active Directory(AD)를 설정하는 방법ad.domain.com
의 지침을 따를 수 있습니다. 설정이 완료되면 인스턴스가 다시 시작됩니다.
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 trustEC2.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
, 다른 리전의 경우에는
입니다. 도메인 이름 서버의 경우 Active Directory 도메인 컨트롤러의 IP 주소(클러스터에서 연결할 수 있어야 함)를 첫 번째 항목으로 지정한 다음 AmazonProvidedDNS (예: ,)를 지정해야 합니다region
.compute.internalxx.xx.xx.xx
AmazonProvidedDNS. 자세한 내용은 DHCP 옵션 세트 변경을 참조하세요.
6단계: Kerberized EMR 클러스터 시작
-
Amazon에서 이전 단계에서 생성한 Active Directory 도메인 컨트롤러를 지정하는 보안 구성을 EMR생성합니다. 아래에 명령 예제가 나와 있습니다. 도메인
을 2단계: Active Directory 도메인 컨트롤러 시작 및 설치에서 지정한 도메인 이름으로 대체합니다.ad.domain.com
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
" } } } } }' -
다음 속성을 사용하여 클러스터를 생성합니다.
-
--security-configuration
옵션을 사용하여 생성한 보안 구성을 지정합니다. 예제MyKerberosConfig
에서는를 사용합니다. -
--ec2-attributes option
의SubnetId
속성을 사용하여 1단계: VPC 및 서브넷 설정에서 생성한 서브넷을 지정합니다. 예제step1-subnet
에서는를 사용합니다. -
--ec2-attributes
옵션의AdditionalMasterSecurityGroups
및AdditionalSlaveSecurityGroups
를 사용하여 2단계: Active Directory 도메인 컨트롤러 시작 및 설치의 AD 도메인 컨트롤러와 연결된 보안 그룹이 코어 및 태스크 노드뿐만 아니라 클러스터 프라이머리 노드와 연결되도록 지정합니다. 예제sg-012xrlmdomain345
에서는를 사용합니다.
또한
--kerberos-attributes
를 사용하여 다음과 같은 클러스터 고유의 Kerberos 속성을 지정합니다.-
Active Directory 도메인 컨트롤러를 설정할 때 지정한 클러스터 영역
-
passwordt
에서 4단계: Active Directory 도메인 컨트롤러에서 인바운드 신뢰 구성로 지정한 교차 영역 신뢰 보안 주체의 암호. -
클러스터 전용를 관리하는 데 사용할 수
KdcAdminPassword
있는 입니다KDC. -
3단계: EMR 클러스터의 도메인에 계정 추가에서 생성한 컴퓨터 조인 권한을 가진 Active Directory 계정의 사용자 로그인 이름 및 암호.
다음 예제는 Kerberos 인증을 사용하는 클러스터를 시작합니다.
aws emr create-cluster --name "
MyKerberosCluster
" \ --release-label emr-5.10.0 \ --instance-typem5.xlarge
\ --instance-count3
\ --ec2-attributes InstanceProfile=EMR_EC2_DefaultRole
,KeyName=MyEC2KeyPair
,\ SubnetId=step1-subnet
, AdditionalMasterSecurityGroups=sg-012xrlmdomain345
, AdditionalSlaveSecurityGroups=sg-012xrlmdomain345
\ --service-role EMR_DefaultRole \ --security-configurationMyKerberosConfig
\ --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의 사용자 로그인 이름 LiJuan
은 lijuan
이라는 Linux 계정을 갖습니다. Active Directory 사용자 이름에는 대문자가 포함될 수 있지만 Linux는 Active Directory 대소문자를 인식하지 못합니다.
사용자가 클러스터에 로그인하여 Hadoop 작업을 실행하도록 허용하려면 Linux 계정에 대한 HDFS 사용자 디렉터리를 추가하고 각 사용자에게 디렉터리의 소유권을 부여해야 합니다. 이를 위해서는 클러스터 단계로 Amazon S3에 저장된 스크립트를 실행하는 것이 좋습니다. 또는 프라이머리 노드의 명령줄에서 아래 스크립트의 명령을 실행할 수도 있습니다. 클러스터를 생성할 때 지정한 EC2 키 페어를 사용하여 Hadoop 사용자SSH로를 통해 기본 노드에 연결합니다. 자세한 내용은 Amazon의 SSH 자격 증명에 EC2 키 페어 사용 EMR 단원을 참조하십시오.
다음 명령을 실행하여 스크립트를 실행하는 클러스터에 단계를 추가합니다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://amzn-s3-demo-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은 시스템 보안 서비스 데몬(SSD)을 사용하여 Active Directory 그룹을 하둡 그룹에 매핑합니다. Amazon을 사용하여 Kerberized 클러스터에 연결하는 SSH 데 사용 EMR에 설명된 대로 프라이머리 노드에 로그인한 후에 그룹 매핑을 확인하기 위해 hdfs
groups
명령을 사용하여 클러스터에서 해당 Hadoop 사용자의 Hadoop 그룹에 Active Directory 계정이 속한 Active Directory 그룹이 매핑되었는지 확인할 수 있습니다. 또한 명령(예를 들면 hdfs groups
)을 사용하여 하나 이상의 사용자 이름을 지정하는 방법으로 다른 사용자의 그룹 매핑을 확인할 수도 있습니다. 자세한 내용은 Apache 명령 안내서의 그룹을lijuan