교차 계정 액세스 권한 부여 - AWS Glue

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

교차 계정 액세스 권한 부여

계정 간에 데이터 카탈로그 리소스에 대한 액세스 권한을 부여하면 추출, 변환, 로드(ETL) 작업에서 다른 계정의 데이터를 쿼리하고 결합할 수 있습니다.

AWS Glue에서 교차 계정 액세스 권한을 부여하는 방법

AWS Glue방법을 사용하거나 계정 AWS Lake Formation 간 권한 부여를 사용하여 외부 AWS 계정에 데이터에 대한 액세스 권한을 부여할 수 있습니다. 이 AWS Glue 방법은 AWS Identity and Access Management (IAM) 정책을 사용하여 세밀한 액세스 제어를 달성합니다. Lake Formation은 관계형 데이터베이스 시스템의 GRANT/REVOKE 명령과 유사한 더 간단한 GRANT/REVOKE 권한 모델을 사용합니다.

이 섹션에서는 AWS Glue 메서드 사용에 대해 설명합니다. Lake Formation 교차 계정 권한 부여 사용에 대한 자세한 내용은 AWS Lake Formation Developer GuideGranting Lake Formation Permissions를 참조하세요.

리소스에 대한 교차 계정 액세스 권한을 부여하기 위한 두 가지 AWS Glue 방법이 있습니다.

  • 데이터 카탈로그 리소스 정책 사용

  • IAM 역할 사용

리소스 정책을 사용하여 교차 계정 액세스 권한 부여

다음은 데이터 카탈로그 리소스 정책을 사용하여 교차 계정 액세스 권한을 부여하는 일반적인 단계입니다.

  1. 계정 A의 관리자(또는 기타 권한이 있는 자격 증명)가 계정 A의 데이터 카탈로그에 리소스 정책을 연결합니다. 이 정책은 계정 B에게 계정 A의 카탈로그에 있는 리소스에 대한 작업을 수행할 수 있는 특정 교차 계정 권한을 부여합니다.

  2. 계정 B의 관리자는 계정 A에게서 받은 권한을 위임하는 계정 B의 IAM 자격 증명에 IAM 정책을 연결합니다.

    계정 B의 자격 증명이 이제 계정 A의 지정된 리소스에 대한 액세스 권한을 갖습니다.

    자격 증명은 리소스에 액세스하기 위해 리소스 소유자(계정 A) 상위 계정(계정 B) 모두의 권한이 필요합니다.

IAM 역할을 사용하여 교차 계정 액세스 권한 부여

다음은 IAM 역할을 사용하여 교차 계정 액세스 권한을 부여하는 일반적인 단계입니다.

  1. 리소스를 소유한 계정(계정 A)의 관리자(또는 권한이 있는 다른 자격 증명)가 IAM 역할을 생성합니다.

  2. 계정 A의 관리자는 문제의 리소스에 대한 교차 계정 액세스 권한을 부여하는 역할에 정책을 연결합니다.

  3. 계정 A의 관리자는 다른 계정(계정 B)의 IAM 자격 증명을 해당 역할을 맡을 수 있는 보안 주체로 식별하는 역할에 신뢰 정책을 연결합니다.

    서비스에 역할을 수임할 권한을 부여하려는 경우 신뢰 정책의 보안 주체가 AWS 서비스 보안 주체가 AWS 될 수도 있습니다.

  4. 이제, 계정 B의 관리자가 계정 B에 있는 하나 이상의 IAM 자격 증명에 권한을 위임해 해당 자격 증명이 역할을 맡을 수 있습니다. 그러면 계정 B의 해당 자격 증명에 계정 A의 리소스에 대한 액세스 권한이 부여됩니다.

IAM을 사용하여 권한을 위임하는 방법에 대한 자세한 내용은 IAM 사용 설명서액세스 관리 단원을 참조하십시오. 사용자, 그룹, 역할 및 권한에 대한 자세한 내용은 IAM User GuideIdentities (users, groups, and roles)를 참조하세요.

두 가지 방법을 비교하려면 IAM 사용 설명서IAM 역할과 리소스 기반 정책의 차이점을 참조하세요. AWS Glue에서는 두 옵션을 모두 지원하지만, 리소스 정책은 데이터 카탈로그 리소스에 대한 액세스 권한만 부여할 수 있다는 제한 사항이 있습니다.

예를 들어, 계정 B의 Dev 역할에게 계정 A의 데이터베이스 db1에 대한 액세스 권한을 부여하려면 다음 리소스 정책을 계정 A의 카탈로그에 연결합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase" ], "Principal": {"AWS": [ "arn:aws:iam::account-B-id:role/Dev" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-A-id:catalog", "arn:aws:glue:us-east-1:account-A-id:database/db1" ] } ] }

또한 계정 B는 계정 A의 db1에 액세스하기 전에 다음 IAM 정책을 Dev 역할에 연결해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:us-east-1:account-A-id:catalog", "arn:aws:glue:us-east-1:account-A-id:database/db1" ] } ] }

데이터 카탈로그 리소스 정책 추가 또는 업데이트

콘솔, API 또는 AWS Command Line Interface (AWS CLI) 를 사용하여 AWS Glue 데이터 카탈로그 리소스 정책을 추가하거나 업데이트할 수 있습니다.

중요

AWS Lake Formation이 있는 계정에서 이미 교차 계정 권한을 부여한 경우 데이터 카탈로그 리소스 정책을 추가하거나 업데이트하려면 추가 단계가 필요합니다. 자세한 내용은 AWS Lake Formation 개발자 가이드AWS Glue 및 Lake Formation을 모두 사용하여 계정 권한 관리를 참조하세요.

Lake Formation 크로스 계정 권한 부여가 있는지 확인하려면 glue:GetResourcePolicies API 작업 또는 AWS CLI를 사용합니다. glue:GetResourcePolicies이(가) 이미 존재하는 데이터 카탈로그 정책 이외의 정책을 반환하는 경우 Lake Formation 권한 부여가 존재합니다. 자세한 내용은 AWS Lake Formation 개발자 안내서의 GetResourcePolicies API 작업을 사용한 모든 교차 계정 권한 보기를 참조하십시오.

데이터 카탈로그 리소스 정책을 추가하거나 업데이트하려면(콘솔)
  1. https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

    권한이 있는 AWS Identity and Access Management (IAM) 관리자로 로그인하세요. glue:PutResourcePolicy

  2. 탐색 창에서 설정을 선택합니다.

  3. [데이터 카탈로그 설정(Data catalog settings)] 페이지의 [권한(Permissions)]에서 리소스 정책을 텍스트 영역에 붙여넣습니다. 그런 다음 저장을 선택합니다.

    정책의 권한이 Lake Formation을 사용하여 부여된 권한에 추가된다는 알림이 콘솔에 표시되면 [계속(Proceed)]을 선택합니다.

데이터 카탈로그 리소스 정책을 추가하거나 업데이트하려면(AWS CLI)
  • aws glue put-resource-policy 명령을 제출합니다. Lake Formation 권한 부여가 이미 있는 경우 --enable-hybrid 옵션을 'TRUE' 값과 함께 포함해야 합니다.

    이 명령의 사용 예는 AWS Glue용 리소스 기반 정책 예제 섹션을 참조하세요.

교차 계정 API 호출 수행

모든 AWS Glue Data Catalog 작업에는 CatalogId 필드가 있습니다. 교차 계정 액세스를 활성화하기 위한 필수 권한이 부여된 경우 호출자는 계정을 교차하여 데이터 카탈로그 API 호출을 수행할 수 있습니다. 호출자는 해당 대상 계정의 리소스에 액세스하기 위해 CatalogId의 대상 AWS 계정 ID를 전달하여 이렇게 합니다.

CatalogId 값을 입력하지 않으면 AWS Glue에서는 기본적으로 호출자의 계정 ID를 사용하고 교차 계정 호출이 수행되지 않습니다.

교차 계정 ETL 호출 수행

일부 AWS Glue PySpark 및 Scala API에는 카탈로그 ID 필드가 있습니다. 계정 간 액세스를 활성화하는 데 필요한 모든 권한이 부여된 경우, ETL 작업은 카탈로그 ID 필드의 대상 계정 ID를 전달하여 대상 AWS 계정의 Data Catalog 리소스에 액세스함으로써 여러 계정에서 API 작업을 수행하고 Scala를 호출할 수 있습니다. PySpark

카탈로그 ID 값을 입력하지 않으면 AWS Glue에서는 기본적으로 호출자의 계정 ID를 사용하고 교차 계정 호출이 수행되지 않습니다.

지원하는 PySpark API에 대해서는 을 참조하십시오. catalog_id GlueContext 클래스 catalogId를 지원하는 Scala API는 AWS Glue Scala GlueContext API 단원을 참조하십시오.

다음 예는 ETL 작업을 실행하기 위해 피부여자에게 필요한 권한을 보여줍니다. 이 예제에서 grantee-account-id는 작업을 실행하는 catalog-id 클라이언트의 grantor-account-id소유자이며 리소스의 소유자입니다. 이 예에서는 부여자의 계정에 있는 모든 카탈로그 리소스에 대한 권한을 부여합니다. 부여되는 리소스의 범위를 제한하기 위해 카탈로그, 데이터베이스, 테이블 및 연결에 해당하는 특정 ARN을 제공할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetConnection", "glue:GetDatabase", "glue:GetTable", "glue:GetPartition" ], "Principal": {"AWS": ["arn:aws:iam::grantee-account-id:root"]}, "Resource": [ "arn:aws:glue:us-east-1:grantor-account-id:*" ] } ] }
참고

부여자의 계정에 있는 테이블이 부여자의 계정에 있는 Amazon S3 위치를 가리키는 경우 피부여자의 계정에서 ETL 작업을 실행하는 데 사용하는 IAM 역할은 부여자의 계정에서 객체를 나열하고 가져올 수 있는 권한이 있어야 합니다.

계정 A의 클라이언트가 ETL 작업을 생성하고 실행할 수 있는 권한을 이미 가지고 있는 경우 교차 계정 액세스를 위해 ETL 작업을 설정하는 기본 단계는 다음과 같습니다.

  1. 교차 계정 데이터 액세스를 허용합니다(Amazon S3 교차 계정 액세스가 이미 설정된 경우에는 이 단계를 건너뜀).

    1. 계정 A에서 교차 계정 액세스를 허용하도록 계정 B에서 Amazon S3 버킷 정책을 업데이트합니다.

    2. 계정 B에서 버킷에 대한 액세스를 허용하도록 계정 A에서 IAM 정책을 업데이트합니다.

  2. 교차 계정 데이터 카탈로그 액세스를 허용합니다.

    1. 계정 A에서 액세스를 허용하도록 계정 B에서 데이터 카탈로그에 연결된 리소스 정책을 생성하거나 업데이트합니다.

    2. 계정 B에서 데이터 카탈로그에 대한 액세스를 허용하도록 계정 A에서 IAM 정책을 업데이트합니다.

교차 계정 CloudTrail 로깅

ETL (AWS Glue추출, 변환, 로드) 작업이 AWS Lake Formation 계정 간 권한 부여를 통해 공유되는 데이터 카탈로그 테이블의 기본 데이터에 액세스하는 경우 추가 로깅 동작이 발생합니다. AWS CloudTrail

이 설명에서 설명하자면 테이블을 공유한 AWS 계정은 소유자 계정이고 테이블을 공유한 계정은 받는 사람 계정입니다. 수신자 계정의 ETL 작업이 소유자 계정의 테이블에 있는 데이터에 액세스하면 수신자 계정의 로그에 추가된 데이터 액세스 CloudTrail 이벤트가 소유자 계정의 로그에 복사됩니다. CloudTrail 이는 소유자 계정이 다양한 수신자 계정의 데이터 액세스를 추적할 수 있도록 하기 위한 것입니다. 기본적으로 CloudTrail 이벤트에는 사람이 읽을 수 있는 주체 식별자 (Principal ARN) 가 포함되지 않습니다. 수신자 계정의 관리자는 로그에 보안 주체 ARN을 포함하도록 선택할 수 있습니다.

자세한 내용은 개발자 가이드의 계정 간 CloudTrail 로깅을 참조하십시오.AWS Lake Formation

교차 계정 리소스 소유권 및 결제

한 AWS 계정 (계정 A) 의 사용자가 다른 계정 (계정 B) 의 데이터베이스와 같은 새 리소스를 만들면 해당 리소스는 생성된 계정인 계정 B가 소유합니다. 계정 B의 관리자는 읽기 및 쓰기와 세 번째 계정에게 액세스 권한 부여 등을 비롯해 새 리소스에 액세스하기 위한 전체 권한을 자동으로 가져옵니다. 계정 A의 사용자는 계정 B가 부여한 적절한 권한이 있는 경우에만 방금 생성한 리소스에 액세스할 수 있습니다.

스토리지 비용과 새 리소스와 직접 연관된 기타 비용이 리소스 소유자인 계정 B에게 청구됩니다. 리소스를 생성한 사용자의 요청 비용은 요청자의 계정인 계정 A로 청구됩니다.

AWS Glue청구 및 가격 책정에 대한 자세한 내용은 요금 AWS 책정 방식을 참조하십시오.

교차 계정 액세스 제한 사항

AWS Glue 교차 계정 액세스에는 다음과 같은 제한 사항이 있습니다.

  • 리전의 AWS Glue 지원 이전에 Amazon Athena 또는 Amazon Redshift Spectrum을 사용하여 데이터베이스와 테이블을 생성했으며 리소스 소유자 계정이 Amazon Athena 데이터 카탈로그를 AWS Glue로 마이그레이션하지 않은 경우에는 AWS Glue에 대한 교차 계정 액세스가 허용되지 않습니다. GetCatalogImportStatus(get_catalog_import_status)를 사용하여 현재 마이그레이션 상태를 찾을 수 있습니다. Athena 카탈로그를 로 마이그레이션하는 방법에 대한 자세한 내용은 Amazon Athena 사용 설명서의 AWS Glue Data Catalog step-by-step Athena로 업그레이드를 참조하십시오. AWS Glue

  • 교차 계정 액세스는 데이터베이스, 테이블, 사용자 정의 함수 및 연결을 포함한 데이터 카탈로그 리소스에 대해서만 지원됩니다.

  • Athena에서 데이터 카탈로그에 대한 교차 계정 액세스를 사용하려면 카탈로그를 Athena DataCatalog 리소스로 등록해야 합니다. 지침은 Amazon Athena 사용 설명서다른 계정에서 AWS Glue Data Catalog 등록을 참조하세요.