Apache Iceberg™ 테이블에 카탈로그 판매 자격 증명 사용¶
Iceberg 테이블에 대한 자격 증명 지원을 통해 외부 볼륨 을 사용하지 않고도 클라우드 저장소의 테이블 데이터 및 메타데이터에 대한 Snowflake 액세스 권한을 부여할 수 있습니다.
대신 서드 파티 Iceberg REST 카탈로그(예: Snowflake Open Catalog)로 액세스 제어를 구성하고 위임한 다음, 제공된 자격 증명에 맞게 구성된 Snowflake에서 카탈로그 통합을 만듭니다. 카탈로그 통합과 연결된 모든 Iceberg 테이블의 경우 Snowflake는 카탈로그 공급자가 제공한 자격 증명을 사용하여 외부 클라우드 저장소에 안전하게 연결합니다.
참고
REST 카탈로그 통합을 사용 하고 Amazon S3에 파일을 저장하는 외부에서 관리되는 Iceberg 테이블 에 카탈로그에서 판매된 자격 증명을 사용할 수 있습니다. 이 기능을 사용하려면 외부 카탈로그에서도 자격 증명 발급을 지원해야 합니다.
고려 사항¶
카탈로그에서 판매되는 자격 증명을 Iceberg 테이블에 사용할 때는 다음 사항을 고려하십시오.
이 기능은 데이터와 메타데이터를 Amazon S3에 저장하는 테이블에만 지원됩니다.
테이블 파일은 1개의 버킷에 저장해야 하며, 여러 버킷에 분산해서 저장할 수 없습니다.
REST 카탈로그로 구성된 서비스 주체는 버킷에 있는 테이블 파일이 포함된 모든 위치에서 읽기 권한이 있어야 합니다.
Snowflake는 카탈로그에서 제공된 자격 증명의 만료 시간을 제공할 것으로 예상하고 키는
expiration-time
이고 값은 만료 시간을 밀리초 단위로 지정하는 타임스탬프(예:1730234407000
)인 키-값 페어(키-값 쌍)를 찾습니다.카탈로그에 만료 시간이 제공되지 않는 경우 Snowflake는 자격 증명이 수신 후 60분 후에 만료되는 것으로 가정합니다.
카탈로그에서 잘못된 자격 증명을 제공하는 경우 테이블 생성이 실패합니다.
데이터 공유는 지원되지 않습니다.
판매된 자격 증명을 위한 카탈로그 통합 생성하기¶
판매된 자격 증명에 대한 카탈로그 통합을 생성하려면 ACCESS_DELEGATION_MODE
매개 변수를 VENDED_CREDENTIALS
로 설정한 CREATE CATALOG INTEGRATION(Apache Iceberg™ REST) 명령을 사용합니다.
여기서
ACCESS_DELEGATION_MODE = {VENDED_CREDENTIALS | EXTERNAL_VOLUME_CREDENTIALS}
외부 클라우드 저장소에 있는 Iceberg 테이블 파일에 액세스할 때 사용할 액세스 위임 모드를 지정합니다.
VENDED_CREDENTIALS
은 Snowflake가 제공된 자격 증명을 사용하도록 지정합니다.EXTERNAL_VOLUME_CREDENTIALS
은 Snowflake가 외부 볼륨을 사용하도록 지정합니다.
기본값:
EXTERNAL_VOLUME_CREDENTIALS
REST 카탈로그 통합을 생성하는 방법에 대한 자세한 내용은 Apache Iceberg™ REST 카탈로그에 대한 카탈로그 통합 구성 또는 Snowflake Open Catalog 의 카탈로그 통합 구성하기 섹션을 참조하십시오.
예시: Snowflake Open Catalog¶
다음 예는 제공된 자격 증명을 사용하여 Snowflake Open Catalog 에 대한 카탈로그 통합을 생성합니다.
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int_vended_credentials
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my-namespace'
REST_CONFIG = (
CATALOG_URI = 'https://myrestapi.com/polaris/api/catalog'
CATALOG_NAME = 'my_catalog_name'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my_client_id'
OAUTH_CLIENT_SECRET = 'my_client_secret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
예: SigV4 및 Amazon API 게이트웨이¶
이 예제에서는 제공된 자격 증명으로 SigV4 인증을 사용하는 카탈로그 통합을 생성합니다.
CREATE OR REPLACE CATALOG INTEGRATION my_rest_catalog_integration
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://asdlkfjwoalk-execute-api.us-west-2-amazonaws.com/MyApiStage'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
)
ENABLED = TRUE;
예시: Amazon S3 테이블¶
이 예제에서는 Lake Formation을 사용하여 SigV4 자격 증명 벤딩이 활성화된 Amazon S3 테이블 에 대한 카탈로그 통합을 생성합니다.
CREATE OR REPLACE CATALOG INTEGRATION my_s3_tables_catalog_integration
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'my_namespace'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012:S3tablescatalog/my_table_bucket'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my_api_permissions_role'
)
ENABLED = TRUE;
여기서
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
AWS Glue Iceberg REST 엔드포인트 를 지정합니다.
CATALOG_NAME = 'aws_account_id:s3tablescatalog/s3_table_bucket
AWS 계정에 S3 테이블 버킷을 지정합니다.
판매된 자격 증명을 사용하는 Iceberg 테이블 생성하기¶
서드 파티 Iceberg REST 카탈로그로 액세스 제어를 설정하고 벤딩된 자격 증명에 대한 카탈로그 통합을 만든 후에는 Iceberg 테이블을 만들 수 있습니다.
벤딩된 자격 증명을 사용하는 Iceberg 테이블을 생성하는 경우 ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
로 구성된 카탈로그 통합을 지정하고 CREATE ICEBERG TABLE(Iceberg REST 카탈로그) 문에서 EXTERNAL_VOLUME
매개 변수를 생략해야 합니다.
예:
CREATE ICEBERG TABLE my_iceberg_table
CATALOG = open_catalog_int_vended_credentials
CATALOG_TABLE_NAME = 'my_table'
AUTO_REFRESH = TRUE;
참고
계정, 데이터베이스 또는 스키마 수준에서 기본 외부 볼륨을 설정한 경우, 제공된 자격 증명을 사용하도록 구성된 카탈로그 통합을 지정하는 한 테이블을 생성하는 동안에는 기본 외부 볼륨을 무시합니다.