AWS Lake Formation을 사용하여 AWS Glue Data Catalog 데이터베이스 및 테이블을 교차 계정으로 공유하려면 어떻게 해야 합니까?

7분 분량
0

AWS Lake Formation을 사용하여 AWS Glue Data Catalog 데이터베이스 및 테이블을 교차 계정으로 공유하려고 합니다.

해결 방법

Lake Formation의 교차 계정 기능을 사용하면 다른 AWS 계정에 액세스 권한을 부여하여 데이터 레이크에 데이터를 쓰고 공유할 수 있습니다. 리소스는 태그 기반 액세스 제어 또는 명명된 리소스를 통해 공유할 수 있습니다. 이 문서에서는 명명된 리소스를 사용하여 Data Catalog 리소스에 대한 교차 계정 액세스 권한을 부여하는 방법에 집중합니다.

전제 조건이 충족되었는지 확인

Data Catalog 리소스를 다른 계정과 공유하거나 다른 계정에서 공유하는 리소스에 액세스하기 전에 다음 전제 조건을 염두에 두십시오.

Lake Formation 권한 취소

Data Catalog 리소스에 대한 IAMAllowedPrincipals 그룹에서 모든 Lake Formation 권한을 취소하십시오.

새 테이블에 Super 권한이 부여되지 않도록 방지

공유할 수 있는 테이블을 포함하는 Data Catalog 데이터베이스의 경우 새 테이블의 IAMAllowedPrincipalsSuper 권한이 기본으로 부여되지 않도록 하십시오.

  1. Lake Formation 콘솔을 엽니다.
  2. 탐색 창의 데이터 카탈로그에서 데이터베이스를 선택합니다.
  3. 업데이트하려는 데이터베이스를 선택합니다.
  4. 작업을 선택한 다음, 편집을 선택합니다.
  5. 새로 생성된 테이블을 위한 기본 권한에서 이 데이터베이스의 새 테이블에 IAM 액세스 제어만 사용을 선택 취소합니다.
  6. 저장을 선택합니다.

자세한 내용은 Super를 참조하십시오.

교차 계정 액세스에 필요한 권한 추가

계정에서 AWS Glue Data Catalog 리소스 정책이 이미 활성화되어 있는 경우 정책을 제거하거나 교차 계정 권한 부여에 필요한 정책에 새 권한을 추가할 수 있습니다. 다음은 계정 1111222233334444에서 계정 5555666677778888로 교차 계정 AWS Glue 액세스를 제공하기 위한 리소스 정책의 예시입니다.

자세한 내용은 교차 계정 액세스 권한 부여를 참조하십시오.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ram.amazonaws.com"
      },
      "Action": "glue:ShareResource",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::5555666677778888:root"
      },
      "Action": "glue:*",
      "Resource": [
        "arn:aws:glue:us-east-1:1111222233334444:table/*/*",
        "arn:aws:glue:us-east-1:1111222233334444:database/*",
        "arn:aws:glue:us-east-1:1111222233334444:catalog"
      ]
    }
  ]
}

조직과의 공유 활성화

Data Catalog 리소스가 조직 간에 공유되는 경우 AWS RAM 콘솔을 사용하여 ](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)AWS Organizations와의 공유를 활성화[하십시오. 이 옵션을 활성화하는 AWS Identity and Access Management(IAM) 사용자 또는 역할에는 ram:EnableSharingWithAwsOrganization IAM 권한이 있어야 합니다.

자세한 내용은 교차 계정 액세스 전제 조건을 참조하십시오.

필요한 IAM 권한 부여

소스 계정: 명명된 리소스 방법을 사용하여 교차 계정 권한을 부여하려면 AWS Glue 및 AWS Resource Access Manager(AWS RAM)에 필요한 IAM 권한이 있어야 합니다. 이러한 권한을 부여하는 AWS 관리형 정책 AWSLakeFormationCrossAccountManager를 선택하거나 이 정책을 기반으로 새 정책을 생성할 수 있습니다.

대상 계정: 대상 계정의 데이터 레이크 관리자에게는 다음과 같은 추가 정책이 있어야 합니다. 이 정책을 통해 관리자는 AWS RAM 리소스 공유 초대를 수락하고 조직과의 리소스 공유를 활성화할 수 있습니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ram:AcceptResourceShareInvitation",
        "ram:RejectResourceShareInvitation",
        "ec2:DescribeAvailabilityZones",
        "ram:EnableSharingWithAwsOrganization"
      ],
      "Resource": "*"
    }
  ]
}

참고: AWS RAM에서 리소스 공유 초대를 받은 IAM 사용자 또는 역할에는 glue:PutResourcePolicy에 필요한 IAM 권한이 있어야 합니다.

대상 계정과 데이터베이스 및 테이블 공유

데이터베이스 및 데이터베이스의 모든 테이블을 조직의 일부가 아닌 대상 계정과 공유하려면 다음 작업을 수행하십시오.

참고: 소스 계정의 데이터베이스에 있는 모든 테이블을 공유하는 경우 소스 계정에서 생성된 모든 새 테이블이 대상 계정과 자동으로 공유됩니다.

소스 계정에서 다음을 수행합니다.

  1. Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다.
  2. 탐색 창에서 데이터베이스를 선택합니다.
  3. 공유하려는 데이터세트를 선택합니다.
  4. 작업을 선택한 다음, 권한 부여를 선택합니다.
  5. 외부 계정을 선택합니다.
  6. AWS 계정 ID 또는 AWS 조직 ID의 경우 대상 계정의 계정 ID를 입력합니다.
  7. 테이블의 경우 모든 테이블을 선택해야 합니다.
  8. 테이블 권한부여 가능 권한에 대해 부여하려는 액세스 권한을 선택합니다.
  9. 권한 부여를 선택합니다.

대상 계정에서 다음을 수행합니다.

  1. AWS RAM 콘솔을 엽니다.
  2. 탐색 창의 나와 공유됨에서 리소스 공유를 선택합니다.
  3. 액세스 권한이 부여된 리소스 공유 목록을 검토합니다.
  4. 소스 계정에서 공유한 리소스에 대한 초대를 수락하려면 리소스 공유 ID를 선택하고, 리소스 공유 수락을 선택합니다.
  5. Lake Formation 콘솔을 엽니다.
  6. 탐색 창에서 데이터베이스를 선택합니다.
    목록에서 공유 데이터베이스를 볼 수 있습니다. 이 데이터베이스의 소유자 계정 ID는 소스 계정의 계정 ID를 보여줍니다.
  7. 공유 데이터베이스를 선택한 다음 작업을 선택합니다.
  8. 리소스 링크 생성을 선택합니다.
  9. 리소스 링크 생성 페이지에서 다음을 수행합니다.
    리소스 링크 이름에 리소스 링크의 이름을 입력합니다.
    **공유 데이터베이스의 ** 경우 공유 데이터베이스의 이름을 선택해야 합니다.
    공유 데이터베이스의 소유자 ID에서 소스 계정의 계정 ID를 입력합니다.
  10. 생성을 선택합니다.
    리소스 링크가 생성됩니다.

리소스 링크는 메타데이터 데이터베이스 및 테이블(일반적으로 다른 AWS 계정의 공유 데이터베이스 및 테이블) 에 대한 링크인 Data Catalog 객체입니다. 데이터 레이크의 데이터에 대한 교차 계정 액세스 활성화에 도움이 됩니다. 리소스 링크가 생성되면 데이터 레이크 관리자 액세스 권한으로 공유 데이터베이스의 테이블을 쿼리할 수 있습니다.

공유 데이터베이스의 IAM 사용자/위탁자에게 액세스 권한을 부여하려면 리소스 링크 및 공유 데이터베이스에 필요한 권한을 부여합니다. 이를 통해 IAM 사용자/위탁자는 Lake Formation 콘솔에서 공유 데이터베이스 및 리소스 링크를 볼 수 있습니다. IAM 사용자는 Amazon Athena 콘솔 또는 Amazon Redshift Spectrum에서 데이터베이스 및 리소스 링크를 볼 수도 있습니다.

IAM 사용자에게 리소스 링크에 대한 액세스 권한을 부여하려면 다음을 수행합니다.

  1. Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다.
  2. 탐색 창에서 데이터베이스를 선택합니다.
  3. 생성한 리소스 링크를 선택합니다.
  4. 작업을 선택한 다음, 권한 부여를 선택합니다.
  5. 위탁자에서 IAM 사용자 및 역할을 선택합니다.
  6. IAM 사용자 및 역할의 경우 액세스 권한을 부여해야 하는 IAM 사용자 또는 위탁자를 선택합니다.
  7. 리소스 링크 권한에서 설명을 선택합니다.
  8. 권한 부여를 선택합니다.

IAM 사용자에게 공유 데이터베이스의 액세스 권한을 부여하려면 다음을 수행합니다.

  1. Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다.
  2. 탐색 창에서 데이터베이스를 선택합니다.
  3. 공유 데이터베이스를 선택합니다.
  4. 작업을 선택한 다음, 권한 부여를 선택합니다.
  5. 위탁자에서 IAM 사용자 및 역할을 선택합니다.
  6. IAM 사용자 및 역할에서 액세스 권한을 부여해야 하는 IAM 사용자 또는 위탁자를 선택합니다.
  7. 데이터베이스 권한에서 설명을 선택합니다.
    참고: 이 단계는 사용자에게 공유 데이터베이스를 볼 수 있는 최소 권한을 제공합니다.
  8. 권한 부여를 선택합니다.

데이터베이스의 전체 또는 특정 테이블에 대한 액세스 권한을 부여하려면 모든 테이블 옵션을 선택합니다.

  1. 리소스 링크를 선택합니다.
  2. 작업을 선택한 다음, 권한 부여를 선택합니다.
  3. IAM 사용자 및 역할을 선택합니다.
  4. IAM 사용자 및 역할에서 액세스 권한을 부여하려는 사용자/위탁자를 선택합니다.
  5. LF-태그 또는 카탈로그 리소스에서 다음을 수행합니다.
    데이터베이스의 모든 테이블에 대한 액세스 권한을 부여하려면 테이블 - 선택 사항에서 모든 테이블을 선택합니다.
    데이터베이스의 특정 테이블에 대해서만 액세스 권한을 부여하려면 테이블 - 선택 사항에서 테이블을 선택합니다.
  6. 테이블 권한부여 가능한 권한에 대해 선택설명을 선택합니다.
  7. 권한 부여를 선택합니다.

참고: 소스 계정에서 부여 가능한 권한으로 선택한 권한만 부여할 수 있습니다.

필요한 권한을 부여한 후 대상 계정에서 Athena의 테이블을 성공적으로 쿼리할 수 있습니다.

대상 계정과 테이블만 공유

대상 계정과 개별 테이블을 공유하려면 이전 섹션의 지침을 따르되 다음과 같이 변경하십시오.

소스 계정:

Lake Formation 콘솔에서 대상 계정에 대한 액세스 권한을 부여하려면 데이터베이스를 선택하는 대신 개별 테이블을 선택합니다.

대상 계정:

  • AWS RAM 콘솔에서 리소스 공유를 수락하여 Lake Formation 콘솔의 공유 테이블에 액세스합니다.
  • 공유 테이블에 대한 리소스 링크를 생성합니다. 리소스 링크가 생성되면 데이터 레이크 관리자 액세스 권한으로 공유 테이블을 쿼리할 수 있습니다.
  • IAM 사용자/위탁자에게 공유 테이블에 대한 액세스 권한을 부여하려면 리소스 링크에 대한 권한을 부여해야 합니다.

추가 고려 사항 검토

  • 테이블에 권한을 부여하면 테이블의 특정 열에 대해서만 액세스를 제한할 수 있습니다. 이를 통해 대상 계정은 공유 테이블의 해당 열만 볼 수 있습니다.
  • 대상 계정의 IAM 사용자/위탁자가 소스 계정의 Amazon Simple Storage Service(Amazon S3) 경로에 액세스할 수 있는지 확인하십시오.
  • 이전에 소스 계정에서 부여한 권한을 취소하면 대상 계정이 공유 데이터베이스/테이블에 액세스할 수 없습니다. 하지만 대상 계정에서 생성한 리소스 링크는 자동으로 삭제되지 않습니다. 리소스 링크는 수동으로 삭제해야 합니다.
  • 데이터베이스/테이블을 삭제할 때 AWS RAM의 리소스 공유는 자동으로 삭제되지 않습니다. 따라서 공유 데이터베이스 또는 테이블을 삭제하기 전에 교차 계정 권한을 수동으로 취소해야 합니다.

관련 정보

공유 Data Catalog 테이블 및 데이터베이스 보기

리소스 링크 생성

데이터 위치 권한 부여(외부 계정)

Data Catalog 리소스에 대한 권한 부여 및 취소

AWS Lake Formation 교차 계정 기능의 작동 방식

댓글 없음