Amazon EMRFS에 대하여 크로스 계정 액세스를 설정하려면 어떻게 해야 하나요?

3분 분량
0

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

간략한 설명

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

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

해결 방법

보안 구성을 사용하여 EMRFS에 대한 IAM 역할을 지정할 때에는 역할 매핑을 설정하게 됩니다. 역할 매핑은 식별자에 해당하는 IAM 역할을 지정합니다. 식별자는 EMRFS를 통해 Amazon S3에 액세스하기 위한 기준을 결정합니다. 식별자는 데이터 위치를 나타내는 사용자, 그룹 또는 Amazon S3 접두사일 수 있습니다. EMRFS가 액세스 기준과 일치하는 요청을 하면 EMRFS는 클러스터 EC2 인스턴스가 요청에 대한 해당 IAM 역할을 맡게 합니다. 클러스터 EC2 인스턴스의 서비스 역할에 연결된 IAM 권한 대신 해당 역할에 연결된 IAM 권한이 적용됩니다. 자세한 내용은 Amazon S3에 대한 EMRFS 요청의 IAM 역할 구성을 참조하세요.

다음 단계에서 식별자는 EMRFS를 통해 액세스되는 Amazon S3 접두사로 지정됩니다. 역할 매핑이 포함된 보안 구성을 사용하여 EMRFS에 대한 크로스 계정 액세스를 생성하려면 다음을 수행합니다.

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

2.    다음과 비슷한 신뢰 정책을 추가합니다. 이 신뢰 정책은 Amazon EMR에 대한 Amazon Elastic Compute Cloud(Amazon EC2) 역할이 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를 사용해야 합니다. 해당 역할을 수임할 권한이 있더라도 콘솔은 다른 계정의 역할을 나열하지 않습니다. AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

역할 매핑에 대해 다음과 비슷한 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://doc-example-bucket/"
          ]
        }
      ]
    }
  }
}

4.    IAM 정책을 생성한 다음 Amazon 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 Key Management Service(AWS KMS)를 통한 서버 측 암호화를 사용하는 경우, 수임한 역할은 AWS KMS 고객 관리형 키의 키 사용자여야 합니다. 역할이 AWS KMS 키에 나열되어 있지 않으면 버킷에 액세스할 수 없습니다.


관련 정보

보안 구성 생성

AWS 공식
AWS 공식업데이트됨 2년 전