EMRFS에 대한 교차 계정 액세스를 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 1월 17일

EMRFS(EMR 파일 시스템)를 사용하여 다른 AWS 계정에 있는 Amazon S3(Amazon Simple Storage Service) 버킷에 쓰기 작업을 수행하고 싶습니다.

간략한 설명

다음 옵션 중 하나를 사용하여 EMRFS에 대한 교차 계정 액세스를 설정합니다.

  • Amazon EMR 계정에 대한 액세스 권한을 부여하는 대상 버킷에 대한 버킷 정책을 추가합니다. 가장 쉬운 옵션입니다. 하지만 대상 계정은 EMRFS가 대상 버킷에 작성하는 객체를 소유하지 않습니다.
  • 사용자 지정 자격 증명 공급자를 사용합니다. 이 옵션을 사용하면 대상 버킷 계정에서 AWS Identity and Access Management(IAM) 역할을 수임할 수 있습니다. 즉, 대상 계정은 EMRFS가 대상 버킷에 작성하는 객체를 소유합니다.
  • 보안 구성에서 역할 매핑을 사용합니다. 이 옵션을 사용해도 EMRFS가 대상 버킷 계정에서 IAM 역할을 수임할 수 있습니다. 본 문서에서는 이 방법에 대해 설명합니다.

해결 방법

보안 구성을 사용하여 EMRFS에 대한 IAM 역할을 지정할 때에는 역할 매핑을 설정하게 됩니다. 역할 매핑은 특정 식별자에 해당하는 IAM 역할을 지정합니다. 이 시나리오에서 식별자는 EMRFS를 사용하여 액세스하려는 Amazon S3 접두사입니다. 식별자는 EMRFS를 통해 Amazon S3에 액세스하기 위한 기준을 결정합니다. 자세한 내용은 Amazon S3에 대한 EMRFS 요청의 IAM 역할 구성을 참조하십시오.

역할 매핑이 포함된 보안 구성을 사용하여 EMRFS에 대한 교차 계정 액세스를 생성하려면 다음 단계를 따르십시오.

1.    대상 계정에서 IAM 역할을 생성합니다. 이 역할은 EMR 클러스터로부터 수임할 역할입니다.

2.    다음과 비슷한 신뢰 정책을 추가합니다. 이 신뢰 정책은 EMR에 대한 Amazon EC2(Amazon Elastic Compute Cloud) 역할이 1단계에서 생성한 역할을 수임하도록 허용해야 합니다. 자세한 내용은 역할 구성을 참조하십시오.

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Principal":{
            "AWS":"arn:aws:iam::EMRFSAcctID:role/EMR_EC2_DefaultRole"
         },
         "Action":"sts:AssumeRole"
      }
   ]
}

3.    AWS CLI(AWS 명령줄 인터페이스)를 사용하여 역할 매핑이 포함된 보안 구성을 생성합니다. 역할 매핑은 대상 계정의 역할(1단계에서 생성한 역할)을 지정해야 합니다.

참고: 보안 구성을 생성하려면 AWS CLI 또는 SDK를 사용해야 합니다. 해당 역할을 수임할 권한이 있더라도 콘솔은 다른 계정의 역할을 나열하지 않습니다.

역할 매핑에 대해 다음과 비슷한 JSON 객체를 제공합니다. 예제에서 다음 값을 대체합니다.
arn:aws:iam::DestinationAcctID:role/role_in_destination_account: 1단계에서 생성한 역할의 Amazon 리소스 이름(ARN)
s3://awsexamplebucket/: EMRFS가 쓰기 작업을 수행할 버킷

{
  "AuthorizationConfiguration": {
    "EmrFsConfiguration": {
      "RoleMappings": [{
        "Role": "arn:aws:iam::DestinationAcctID:role/role_in_destination_account",
        "IdentifierType": "Prefix",
        "Identifiers": ["s3://awsexamplebucket/"]
      }]
    }
  }
}

4.    IAM 정책을 생성한 다음 EMR EC2 인스턴스 프로파일(예: EMR_EC2_DefaultRole)에 연결합니다.

다음 정책 예제는 AWS Security Token Service(STS)가 모든 역할을 수임하도록 허용합니다. 정책은 적어도 STS가 1단계에서 생성한 역할을 수임하도록 허용해야 합니다. 자세한 내용은 임시 보안 자격 증명을 생성할 수 있는 권한 부여를 참조하십시오.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "*"
        }
    ]
}

5.    EMR 클러스터를 시작하고 3단계에서 생성한 보안 구성을 지정합니다.

참고: 대상 버킷이 AWS KMS(AWS Key Management Service)를 통한 서버 측 암호화를 사용하는 경우, 수임한 역할은 KMS CMK(고객 마스터 키)의 키 사용자여야 합니다. 역할이 KMS CMK에 나열되어 있지 않으면 버킷에 액세스할 수 없습니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?