Granting Cross-Account Access - AWS Glue

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

Granting Cross-Account Access

액세스 권한 부여 데이터 카탈로그 계정에 있는 리소스를 통해 ETL(Extract, Transform, Load) 작업을 통해 여러 계정의 데이터를 쿼리하고 연결할 수 있습니다.

Methods for Granting Cross-Account Access in AWS Glue

외부 데이터에 대한 액세스를 허용할 수 있습니다. AWS 계정 사용 AWS Glue 방법 또는 AWS Lake Formation 교차 계좌 보조금. The AWS Glue 사용 방법 AWS Identity and Access Management (IAM) 정책을 세부적인 액세스 제어를 달성하기 위한 정책 Lake Formation 간단한 GRANT/REVOKE 권한 모델과 유사한 GRANT/REVOKE 관계형 데이터베이스 시스템의 명령을 참조하십시오.

이 섹션에서는 AWS Glue 방법. 사용에 대한 정보 Lake Formation 교차 계정 보조금, 참조 레이크 형성 권한 부여 in the AWS Lake Formation 개발자 안내서.

2개의 AWS Glue 리소스에 대한 교차 계정 액세스를 부여하는 방법:

  • Use a 데이터 카탈로그 resource policy

  • Use an IAM role

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

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

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

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

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

    사용자에게 both 리소스 소유자(계정 A) and 상위 계정(계정 B)을 사용하여 리소스에 액세스할 수 있습니다.

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

다음은 IAM 역할:

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

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

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

    AWS 서비스에 역할을 맡을 수 있는 권한을 부여하고 싶다면, 신뢰 정책의 보안 주체는 AWS 서비스 보안 주체가 됩니다.

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

사용에 대한 자세한 정보 IAM 권한을 위임하려면 액세스 관리 in the IAM 사용 설명서. 사용자, 그룹, 역할 및 권한에 대한 자세한 내용은 ID(사용자, 그룹 및 역할) in the IAM 사용 설명서.

이러한 두 가지 접근 방식을 비교하려면 IAM 역할이 리소스 기반 정책과 다름 in the IAM 사용 설명서. AWS Glue 은(는) 리소스 정책이 액세스 권한을 부여할 수 있는 제한과 함께 두 옵션을 모두 지원합니다. 데이터 카탈로그 자원.

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

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

또한 계정 B는 Bob이 계정 A의 db1에 대한 액세스 권한을 실제로 얻기 전에 Bob에게 다음 IAM 정책을 연결해야 합니다.

{ "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" ] } ] }

Adding or Updating the 데이터 카탈로그 Resource Policy

다음을 추가하거나 업데이트할 수 있습니다. AWS Glue 데이터 카탈로그 콘솔, API 또는 AWS Command Line Interface (AWS CLI) ).

중요

귀하의 계좌에서 이미 계정 간 허가를 받은 경우 AWS Lake Formation, 추가 또는 업데이트 데이터 카탈로그 리소스 정책에 추가 단계가 필요합니다. 자세한 내용은 Glue 및 Lake Formation을 사용하여 교차 계정 권한 관리 in the AWS Lake Formation 개발자 안내서.

다음을 결정하기 위해 Lake Formation 교차 계정 보조금은 glue:GetResourcePolicies API 또는 AWS CLI. API가 이미 기존 이외의 모든 정책을 반환하는 경우 데이터 카탈로그 정책 Lake Formation 보조금이 있습니다. 자세한 내용은 getresourcepolicy API를 사용하여 모든 교차 계정 보조금 보기 in the AWS Lake Formation 개발자 안내서.

을(를) 추가하거나 업데이트하려면 데이터 카탈로그 리소스 정책(콘솔)

  1. https://console.aws.amazon.com/glue/에서 AWS Glue 콘솔을 엽니다.

    로그인 AWS Identity and Access Management (IAM사용자 또는 glue:PutResourcePolicy 허가.

  2. 탐색 창에서 [ Settings]을 선택합니다.

  3. On 데이터 카탈로그 설정 페이지, 아래 권한리소스 정책을 텍스트 영역에 붙여넣습니다. 그런 다음 [Save]를 선택합니다.

    콘솔에 정책의 권한이 허용된 권한 외에 추가된다는 경고가 표시됩니다. Lake Formation, 선택 진행.

을(를) 추가하거나 업데이트하려면 데이터 카탈로그 리소스 정책(AWS CLI)

Making a Cross-Account API Call

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

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

Making a Cross-Account ETL Call

일부 AWS Glue PySpark 및 Scala API에는 카탈로그 ID 필드가 있습니다. 교차 계정 액세스가 가능하도록 모든 필수 권한이 부여된 경우 ETL 작업은 대상 계정의 데이터 카탈로그 리소스에 액세스할 수 있도록 카탈로그 ID 필드에 대상 AWS 계정 ID를 전달하여 계정 간에 API 작업에 대해 PySpark 및 Scala를 호출할 수 있습니다.

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

catalog_id를 지원하는 PySpark API는 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 정책을 업데이트합니다.

Cross-Account CloudTrail Logging

언제 AWS Glue ETL(Extract, Transform, Load) 작업을 통해 데이터 카탈로그 표 공유 AWS Lake Formation 교차 계정 보조금, 추가 AWS CloudTrail 로깅 동작.

이 논의의 목적은 AWS 테이블을 공유하는 계정은 소유자 계정이며 테이블이 공유된 계정은 수신자 계정입니다. 수취인 계정의 ETL 작업이 소유자 계정의 테이블에 있는 데이터에 액세스하면 수취인 계정의 로그에 추가되는 데이터 액세스 클라우드트레일 이벤트가 소유자 계정으로 복사됩니다. CloudTrail 로그. 이렇게 하면 소유자 계정이 다양한 수신자 계정에서 데이터 액세스를 추적할 수 있습니다. 기본적으로 CloudTrail 사건에는 사람이 읽을 수 있는 주요 장소(주요 ARN)가 포함되지 않습니다. 수취인 계정의 관리자는 로그에 주요 ARN을 포함시키도록 선택할 수 있습니다.

자세한 내용은 크로스 계정 클라우드트레일 로깅 in the AWS Lake Formation 개발자 안내서.

AWS Glue Resource Ownership and Operations

AWS 계정은 리소스 생성자와 상관없이 계정에서 생성된 AWS Glue 데이터 카탈로그 리소스를 소유합니다. 특히 리소스의 소유자는 주요 법인 즉, AWS 계정 루트 사용자는 IAM 사용자 또는 IAM 역할) authenticated 해당 리소스에 대한 생성 요청: 예:

  • If you use your AWS account root user credentials to create a table in your 데이터 카탈로그, your AWS account is the owner of the resource.

  • If you create an IAM user in your AWS account and grant permissions to that user to create a table, every table that the user creates is owned by your AWS account, to which the user belongs.

  • If you create an IAM role in your AWS account with permissions to create a table, anyone who can assume the role can create a table. But again, your AWS account owns the table resources that are created using that role.

각 AWS Glue 리소스에 대해 서비스는 적용되는 일련의 API 작업을 정의합니다. 이러한 API 작업에 대한 권한을 부여하기 위해 AWS Glue에서는 정책에서 지정할 수 있는 작업을 정의합니다. 일부 API 작업에서는 API 작업을 수행하기 위해 복수의 작업에 대한 권한이 필요할 수 있습니다.

Cross-Account Resource Ownership and Billing

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

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

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

Cross-Account Access Limitations

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

  • Cross-account access to AWS Glue is not allowed if the resource owner account has not migrated the Amazon Athena data catalog to AWS Glue. You can find the current migration status using the GetCatalogImportStatus(get_catalog_import_status). For more details on how to migrate an Athena catalog to AWS Glue, see Upgrading to the AWS Glue Data Catalog Step-by-Step in the Amazon Athena User Guide.

  • Cross-account access is only supported for 데이터 카탈로그 resources, including databases, tables, user-defined functions, and connections.

  • Cross-account access to the 데이터 카탈로그 is not supported when using an AWS Glue crawler, or Amazon Athena.