AWS Glue의 카탈로그 통합 구성하기

AWS Glue의 카탈로그 통합을 생성하고 Snowflake에 AWS Glue Data Catalog에 대한 제한적 액세스 권한을 부여합니다.

참고

이 섹션의 지침을 완료하려면 Amazon Web Services(AWS)에서 IAM 정책과 역할을 생성하고 관리할 권한이 있어야 합니다. AWS 관리자가 아닌 경우 AWS 관리자에게 이러한 작업을 수행하도록 요청하십시오.

1단계: AWS Glue Data Catalog에 대한 액세스 허가 구성

가장 좋은 방법은 Snowflake가 AWS Glue Data Catalog에 액세스할 수 있도록 새 IAM 정책을 만드는 것입니다. 그러면 정책을 IAM 역할에 연결하고 AWS가 그 역할에 대해 생성하는 보안 자격 증명을 사용하여 카탈로그의 파일에 액세스할 수 있습니다. 지침은 AWS Identity and Access Management 사용자 가이드에서 IAM 정책 만들기역할 권한 정책 수정하기 를 참조하십시오.

Snowflake에서는 테이블에 대한 정보에 액세스하려면 최소한 AWS Glue Data Catalog에 대해 다음 권한이 필요합니다.

  • glue:GetTable

  • glue:GetTables

다음 예시 정책(JSON 형식)에서는 지정된 데이터베이스의 모든 테이블에 액세스하는 데 필요한 권한을 제공합니다.

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "AllowGlueCatalogTableAccess",
         "Effect": "Allow",
         "Action": [
            "glue:GetTable",
            "glue:GetTables"
         ],
         "Resource": [
            "arn:aws:glue:*:<accountid>:table/*/*",
            "arn:aws:glue:*:<accountid>:catalog",
            "arn:aws:glue:*:<accountid>:database/<database-name>"
         ]
      }
   ]
}
Copy

참고

  • 이 정책의 Resource 요소를 수정하여 허용되는 리소스(예: 카탈로그, 데이터베이스 또는 테이블)를 추가로 제한할 수 있습니다. 자세한 내용은 AWS Glue에서 정의된 리소스 유형 을 참조하십시오.

  • AWS Glue에 암호화를 사용하는 경우 AWS Key Management Service(AWS KMS) 권한을 추가하도록 정책을 수정해야 합니다. 자세한 내용은 AWS Glue에서 암호화 설정하기 를 참조하십시오.

2단계: Snowflake에서 카탈로그 통합 만들기

CREATE CATALOG INTEGRATION(AWS Glue) 명령을 사용하여 AWS Glue Data Catalog의 카탈로그 통합을 만듭니다.

다음 예에서는 AWS Glue Data Catalog 원본을 사용하는 카탈로그 통합을 만듭니다. 이 예제에서는 선택적 GLUE_REGION 매개 변수의 값을 지정합니다.

CREATE CATALOG INTEGRATION glueCatalogInt
  CATALOG_SOURCE = GLUE
  CATALOG_NAMESPACE = 'my.catalogdb'
  TABLE_FORMAT = ICEBERG
  GLUE_AWS_ROLE_ARN = 'arn:aws:iam::123456789012:role/myGlueRole'
  GLUE_CATALOG_ID = '123456789012'
  GLUE_REGION = 'us-east-2'
  ENABLED = TRUE;
Copy

3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색

카탈로그 통합을 생성할 때 Snowflake 계정용으로 생성된 AWS IAM 사용자 및 외부 ID에 대한 정보를 검색하려면 DESCRIBE CATALOG INTEGRATION 명령을 실행하십시오. 다음 섹션에서 이 정보를 AWS에 제공하여 신뢰 관계를 설정합니다.

다음 예제 명령은 이전 단계에서 생성된 카탈로그 통합을 설명합니다.

DESCRIBE CATALOG INTEGRATION glueCatalogInt;
Copy

다음 값을 기록합니다.

설명

GLUE_AWS_IAM_USER_ARN

Snowflake 계정용으로 생성된 AWS IAM 사용자입니다(예: arn:aws:iam::123456789001:user/abc1-b-self1234). Snowflake는 전체 Snowflake 계정에 대해 단일 IAM 사용자를 프로비저닝합니다. 계정의 모든 Glue 카탈로그 통합에서 해당 IAM 사용자를 사용합니다.

GLUE_AWS_EXTERNAL_ID

신뢰 관계를 구축하기 위해 필요한 외부 ID입니다.

이러한 값은 다음 섹션에서 입력합니다.

4단계: AWS Glue Data Catalog에 액세스할 수 있도록 IAM 사용자 권한 부여

카탈로그 통합을 생성할 때 ARN(GLUE_AWS_ROLE_ARN)을 사용하여 지정한 것과 동일한 IAM 역할에 대한 신뢰 정책을 업데이트합니다. 3단계: Snowflake 계정에 대한 AWS IAM 사용자 및 외부 ID 검색 에 기록한 값을 신뢰 정책에 추가합니다.

지침은 신뢰 정책 수정하기 를 참조하십시오.

다음 예시 신뢰 정책에서는 GLUE_AWS_IAM_USER_ARNGLUE_AWS_EXTERNAL_ID 값을 지정할 위치를 보여줍니다.

{
   "Version": "2012-10-17",
   "Statement": [
      {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
         "AWS": "<glue_iam_user_arn>"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
         "StringEquals": {
            "sts:ExternalId": "<glue_aws_external_id>"
         }
      }
      }
   ]
}
Copy

여기서

  • glue_iam_user_arn 은 자신이 기록한 GLUE_IAM_USER_ARN 값입니다.

  • glue_aws_external_id 는 자신이 기록한 GLUE_AWS_EXTERNAL_ID 값입니다.

참고

  • 보안상의 이유로, 새 카탈로그 통합을 생성하는 경우(또는 CREATE OR REPLACE CATALOG INTEGRATION 구문을 사용하여 기존 카탈로그 통합을 다시 생성하는 경우) 새 카탈로그 통합은 다른 외부 ID를 가지며 새 외부 ID로 신뢰 정책을 수정하지 않으면 신뢰 관계를 확인할 수 없습니다.

  • 권한이 올바르게 구성되었는지 확인하려면 이 카탈로그 통합을 사용하여 Iceberg 테이블을 생성하십시오. Snowflake는 이 카탈로그 통합을 참조하는 Iceberg 테이블을 생성할 때까지 권한이 올바르게 설정되었는지 확인하지 않습니다.

다음 단계

AWS Glue에 대한 카탈로그 통합을 구성한 후 AWS Glue 를 카탈로그로 사용하는 Iceberg 테이블을 만들 수 있습니다.

테이블을 업데이트하고 AWS Glue의 변경 사항과 동기화된 상태를 유지하려면 ALTER ICEBERG TABLE … REFRESH 문을 사용하십시오. 자세한 내용은 테이블의 메타데이터 새로 고치기 섹션을 참조하십시오.