Amazon S3에 대한 EMRFS 요청에 대한 IAM 역할을 구성합니다. - 아마존 EMR

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

Amazon S3에 대한 EMRFS 요청에 대한 IAM 역할을 구성합니다.

참고

Amazon EMR 6.15.0에 Amazon S3 액세스 부여가 도입되면서 이 페이지에 설명된 EMRFS 역할 매핑 기능이 개선되었습니다. Amazon S3의 데이터에 대한 확장 가능한 액세스 제어 솔루션의 경우 Amazon과 함께 S3 액세스 권한을 사용하는 것이 좋습니다EMR.

클러스터에서 실행되는 애플리케이션이 s3://mydata 형식을 사용하여 데이터를 참조하는 경우 EMR Amazon은 요청을 보내는 EMRFS 데 사용합니다. Amazon S3와 상호 작용하려면 Amazon EC2 인스턴스 프로필에 연결된 권한 정책을 EMRFS 가정해야 합니다. 애플리케이션을 실행하는 사용자 또는 그룹이나 Amazon S3의 데이터 위치에 관계없이 동일한 Amazon EC2 인스턴스 프로필이 사용됩니다.

Amazon S3의 데이터에 서로 다른 수준의 액세스 권한을 필요로 하는 여러 사용자가 있는 클러스터가 있는 경우EMRFS, IAM 역할을 사용하여 보안 구성을 설정할 수 EMRFS 있습니다. EMRFS요청을 보내는 사용자 또는 그룹 또는 Amazon S3의 데이터 위치에 따라 클러스터 EC2 인스턴스에 대해 다른 서비스 역할을 맡을 수 있습니다. Amazon S3의 각 IAM 역할은 데이터 액세스에 대해 서로 다른 권한을 가질 EMRFS 수 있습니다. 클러스터 EC2 인스턴스의 서비스 역할에 대한 자세한 내용은 을 참조하십시오클러스터 EC2 인스턴스의 서비스 역할 (EC2인스턴스 프로필).

Amazon EMR 버전 5.10.0 이상에서는 에 대한 사용자 지정 IAM 역할 EMRFS 사용이 지원됩니다. 이전 버전을 사용하거나 EMRFS 제공할 IAM 역할 이외의 요구 사항이 있는 경우 대신 사용자 지정 자격 증명 공급자를 생성할 수 있습니다. 자세한 내용은 Amazon S3의 EMRFS 데이터에 대한 액세스 권한 부여를 참조하십시오.

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

역할 매핑의 사용자와 그룹은 클러스터에 정의된 하둡 사용자와 그룹입니다. 사용자와 그룹은 이를 사용하는 응용 프로그램 컨텍스트 내에서 전달됩니다 (예: YARN 사용자 가장하기EMRFS). Amazon S3 접두사는 버킷 지정자(깊이에 상관없음)일 수 있습니다(예: s3://mybucket 또는 s3://mybucket/myproject/mydata). 단일 역할 매핑 내에서 여러 식별자를 지정할 수 있지만, 모두 같은 유형이어야 합니다.

중요

IAM의 역할은 응용 프로그램 사용자 간에 응용 프로그램 수준의 격리를 EMRFS 제공합니다. 호스트 상의 사용자 간에 호스트 수준 격리를 제공하지는 않습니다. 클러스터에 대한 액세스 권한이 있는 모든 사용자는 격리를 우회하여 이러한 역할을 맡을 수 있습니다.

클러스터 애플리케이션이 Amazon S3에 요청을 보내면 보안 구성에 나타나는 하향식 순서로 역할 매핑을 EMRFS EMRFS 평가합니다. 요청을 통해 이루어진 요청이 식별자와 일치하지 EMRFS 않는 경우 클러스터 EMRFS 인스턴스의 서비스 역할 사용으로 대체됩니다. EC2 이러한 이유에서 이 역할에 연결된 정책의 권한을 Amazon S3로 제한하는 것이 좋습니다. 자세한 내용은 클러스터 EC2 인스턴스의 서비스 역할 (EC2인스턴스 프로필) 단원을 참조하십시오.

역할 구성

IAM역할이 포함된 보안 구성을 설정하기 전에 역할에 연결할 역할 및 권한 정책을 계획하고 생성하십시오. EMRFS 자세한 내용은 EC2 인스턴스의 역할은 어떻게 작동합니까? 를 참조하십시오. IAM사용 설명서에서 권한 정책을 생성할 때는 기본 Amazon EMR 역할에 연결된 관리형 정책으로 시작한 다음 요구 사항에 따라 이 정책을 편집하는 것이 좋습니다. EC2 기본 역할은 EMR_EC2_DefaultRole이고, 편집할 기본 관리형 정책은 AmazonElasticMapReduceforEC2Role입니다. 자세한 내용은 클러스터 EC2 인스턴스의 서비스 역할 (EC2인스턴스 프로필) 단원을 참조하십시오.

역할 권한을 수임하기 위해 신뢰 정책 업데이트

EMRFS사용하는 각 역할에는 클러스터의 Amazon EMR 역할이 역할을 EC2 맡도록 허용하는 신뢰 정책이 있어야 합니다. 마찬가지로 클러스터의 Amazon EMR 역할에는 역할이 역할을 맡을 수 있도록 허용하는 EMRFS 신뢰 정책이 EC2 있어야 합니다.

다음 예제 신뢰 정책은 의 역할에 연결되어 EMRFS 있습니다. 이 명령문을 사용하면 기본 Amazon EMR 역할이 역할을 EC2 맡을 수 있습니다. 예를 들어 두 개의 가상 EMRFS 역할이 있는 EMRFSRole_Second 경우 이 정책 설명이 각 역할에 대한 신뢰 정책에 추가됩니다. EMRFSRole_First

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

또한 다음과 같은 예제 신뢰 정책 설명이 에 추가되어 가상의 두 EMRFS 역할이 역할을 EMR_EC2_DefaultRole 맡을 수 있습니다.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "AWS": ["arn:aws:iam::AWSAcctID:role/EMRFSRole_First", "arn:aws:iam::AWSAcctID:role/EMRFSRole_Second"] }, "Action":"sts:AssumeRole" } ] }
역할의 신뢰 정책을 업데이트하려면 IAM

에서 IAM 콘솔을 엽니다 https://console.aws.amazon.com/iam/.

  1. Roles(역할)를 선택하고 Search(검색)에서 이름을 입력한 다음 Role name(역할 이름)을 선택합니다.

  2. 신뢰 관계(Trust relationships), 신뢰 관계 편집(Edit trust relationship)을 차례대로 선택합니다.

  3. 위 지침에 따라 정책 문서를 기준으로 신뢰 명령문을 추가하고 신뢰 정책 업데이트를 선택합니다.

역할을 키 사용자로 지정

역할이 AWS KMS key를 사용하여 암호화된 Amazon S3 위치에 대한 액세스를 허용하는 경우에는 해당 역할이 키 사용자로 지정되어 있는지 확인합니다. 이렇게 하면 역할에 KMS 키 사용 권한이 부여됩니다. 자세한 내용은AWS Key Management Service 개발자 안내서AWS KMS의 키 정책을 참조하세요.

다음과 같은 IAM 역할을 사용하여 보안 구성을 설정합니다. EMRFS

중요

지정한 IAM 역할 중 어느 것도 적용되지 EMRFS 않는 경우 EMRFS Amazon EMR 역할로 EC2 대체하십시오. 애플리케이션에서 Amazon S3에 대한 권한을 적절하게 제한하도록 이 역할을 사용자 지정한 다음, 클러스터를 생성할 때 EMR_EC2_DefaultRole 대신 이 사용자 지정 역할을 지정하는 것이 좋습니다. 자세한 내용은 IAM역할 사용자 지정클러스터를 생성할 때 사용자 지정 IAM 역할을 지정하십시오. 단원을 참조하세요.

콘솔을 사용하여 Amazon S3에 대한 EMRFS 요청에 대한 IAM 역할을 지정하려면
  1. 역할 매핑을 지정하는 보안 구성을 생성합니다.

    1. Amazon EMR 콘솔에서 보안 구성, 생성을 선택합니다.

    2. 보안 구성의 이름을 입력합니다. 클러스터를 생성할 때 이 이름을 사용하여 보안 구성을 지정합니다.

    3. Amazon S3에 대한 EMRFS 요청에 IAM 역할 사용을 선택합니다.

    4. 적용할 IAM역할을 선택하고 액세스 기준에서 목록에서 식별자 유형 (사용자, 그룹 또는 S3 접두사) 을 선택하고 해당 식별자를 입력합니다. 여러 식별자를 사용할 경우 공백 없이 쉼표로 구분합니다. 각 식별자 유형에 대한 자세한 내용은 아래 JSON configuration reference를 참조하세요.

    5. 역할 추가를 선택하여 이전 단계에서 설명한 추가 역할 매핑을 설정합니다.

    6. 다른 보안 구성 옵션을 적절히 설정하고 생성을 선택합니다. 자세한 내용은 보안 구성 생성 단원을 참조하십시오.

  2. 클러스터를 생성할 때 위에서 생성한 보안 구성을 지정합니다. 자세한 내용은 클러스터에 대한 보안 구성 지정 단원을 참조하십시오.

를 사용하여 Amazon S3에 대한 EMRFS 요청에 대한 IAM 역할을 지정하려면 AWS CLI
  1. aws emr create-security-configuration명령을 사용하여 보안 구성의 이름을 지정하고 보안 구성 세부 정보를 JSON 형식으로 지정합니다.

    아래 표시된 예시 명령에서는 이름이 EMRFS_Roles_Security_Configuration인 보안 구성을 생성합니다. 이는 명령이 실행되는 동일한 디렉토리에 저장되는 파일 MyEmrfsSecConfig.json 내 JSON 구조를 기반으로 합니다.

    aws emr create-security-configuration --name EMRFS_Roles_Security_Configuration --security-configuration file://MyEmrFsSecConfig.json.

    MyEmrFsSecConfig.json 파일의 구조에 대해 다음 지침을 사용합니다. 이 구조를 다른 보안 구성 옵션에 대한 구조와 함께 지정할 수 있습니다. 자세한 내용은 보안 구성 생성 단원을 참조하십시오.

    다음은 보안 구성 EMRFS 내에서 사용자 지정 IAM 역할을 지정하기 위한 예제 JSON 스니펫입니다. 이 예제에서는 세 가지 식별자 유형에 대한 역할 매핑을 보여줍니다. 뒤이어 파라미터 참조가 나옵니다.

    { "AuthorizationConfiguration": { "EmrFsConfiguration": { "RoleMappings": [{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_user1", "IdentifierType": "User", "Identifiers": [ "user1" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_to_MyBuckets", "IdentifierType": "Prefix", "Identifiers": [ "s3://MyBucket/","s3://MyOtherBucket/" ] },{ "Role": "arn:aws:iam::123456789101:role/allow_EMRFS_access_for_AdminGroup", "IdentifierType": "Group", "Identifiers": [ "AdminGroup" ] }] } } }
    파라미터 설명

    "AuthorizationConfiguration":

    필수 사항입니다.

    "EmrFsConfiguration":

    필수 사항입니다. 역할 매핑을 포함합니다.

      "RoleMappings":

    필수 사항입니다. 역할 매핑 정의를 하나 이상 포함. 역할 매핑은 표시되는 순서대로 위에서부터 아래로 평가됩니다. Amazon S3의 데이터 EMRFS 호출에 대해 역할 매핑이 true로 평가되면 더 이상 역할 매핑이 평가되지 않고 요청에 지정된 IAM 역할을 EMRFS 사용합니다. 역할 매핑은 다음과 같은 필수 파라미터로 구성됩니다.

       "Role":

    형식의 IAM 역할 ARN 식별자를 지정합니다. arn:aws:iam::account-id:role/role-name 이는 Amazon S3에 대한 EMRFS 요청이 Identifiers 지정된 항목 중 하나와 일치하는 경우 Amazon이 EMR 맡는 IAM 역할입니다.

       "IdentifierType":

    다음 중 하나가 될 수 있습니다.

    • "User"는 식별자가 하나 이상의 Hadoop 사용자이도록 지정하는데, Linux 계정 사용자 또는 Kerberos 보안 주체일 수 있습니다. EMRFS요청이 지정된 사용자 또는 사용자와 함께 시작되면 IAM 역할이 위임됩니다.

    • "Prefix"에서는 식별자가 Amazon S3 위치가 되도록 지정합니다. 이 IAM 역할은 지정된 접두사가 있는 위치 또는 여러 위치로 전화를 걸 때 사용됩니다. 예를 들어 s3://mybucket/접두사는 s3://mybucket/mydir s3://mybucket/yetanotherdir과 일치합니다.

    • "Group"은 식별자가 한 개 이상의 하둡 그룹이 되도록 지정합니다. 요청이 지정된 그룹 또는 여러 그룹의 사용자로부터 시작된 경우 IAM 역할이 위임됩니다.

       "Identifiers":

    해당 식별자 유형의 하나 이상의 식별자를 지정합니다. 공백 없이 콤마로 구분된 여러 개의 식별자.

  2. aws emr create-cluster 명령을 사용하여 클러스터를 생성하고 이전 단계에서 생성한 보안 구성을 지정합니다.

    다음 예제에서는 기본 코어 하둡 애플리케이션이 설치된 상태로 클러스터를 생성합니다. 클러스터는 위에서 만든 보안 구성을 EMRFS_Roles_Security_Configuration 사용하며 --ec2-attributes 파라미터의 InstanceProfile 인수를 사용하여 지정된 사용자 지정 Amazon EMR role for도 사용합니다. EC2 EC2_Role_EMR_Restrict_S3

    참고

    가독성을 위해 Linux 줄 연속 문자(\)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

    aws emr create-cluster --name MyEmrFsS3RolesCluster \ --release-label emr-7.2.0 --ec2-attributes InstanceProfile=EC2_Role_EMR_Restrict_S3,KeyName=MyKey \ --instance-type m5.xlarge --instance-count 3 \ --security-configuration EMRFS_Roles_Security_Configuration