Apache Iceberg™ テーブルには、カタログ提供認証情報を使用します。¶
供給された認証情報はIceberg テーブルをサポートし、 外部ボリューム を使用せずに、クラウドストレージ内のテーブルデータとメタデータに Snowflake がアクセスできるようになります。
代わりに、サードパーティの Iceberg REST カタログ(Snowflake Open Catalog など)を構成してアクセス制御を委譲し、その後、Snowflake で供給された認証情報用に構成されたカタログ統合を作成します。カタログ統合に関連付けられたIcebergテーブルでは、Snowflakeはカタログプロバイダーが提供する認証情報を使用して、外部クラウドストレージにセキュアに接続します。
注釈
Using catalog-vended credentials is supported for externally managed Iceberg tables that use a REST catalog integration. To use this feature, your external catalog must also support credential vending.
考慮事項¶
Icebergテーブルでカタログ提供認証情報を使用する場合は、以下を考慮してください。
This feature is supported for tables that store their data and metadata in Amazon S3, Azure Storage, or Google Cloud Storage.
テーブルファイルは単一のバケットに格納する必要があります。複数のバケットに分散することはできません。
REST カタログで構成されたサービスプリンシパルには、バケット内のテーブルファイルを含む*すべての*場所からの読み取り権限が必要です。AWS Lake Formation を AWS Glue と併用する場合は、このアクセスを有効にするために追加の手順が必要になる場合があります。詳細については、(オプション)Lake ormationのアクセス制御を構成する をご参照ください。
Snowflakeは、カタログがクラウドストレージプロバイダーに基づいて、以下のいずれかのトークンを提供することを期待します。
AWS: An expiration time for the AWS session token. Snowflake searches for a key-value pair where the key is
s3.session-token-expires-at-ms, and the value is a timestamp that specifies the expiration time in milliseconds.Azure: An expiration time for the SAS token. Snowflake searches for a key-value pair where the key is
adls.sas-token-expires-at-ms, and the value is a timestamp that specifies the expiration time in milliseconds.Google Cloud Storage: An expiration time for the OAuth 2.0 access token. Snowflake searches for a key-value pair where the key is
gcs.oauth2.token-expires-at, and the value is a timestamp that specifies the expiration time in milliseconds.
If your catalog doesn't provide a token, Snowflake expects your catalog to provide an expiration time for vended credentials, and searches for a key-value pair where the key is
expiration-time, and the value is a timestamp that specifies the expiration time in milliseconds; for example,1730234407000.カタログに有効期限が記載されていない場合、Snowflakeは認証情報の有効期限を受信後60分とみなします。
Table creation fails if your catalog provides credentials that aren't valid.
CREATE ICEBERG TABLE...AS SELECT コマンドはサポートされていません。
プライベート接続はサポートされていません。プライベート接続を使用するには、 外部ボリュームを構成 する必要があります。
自動供給された認証情報のカタログ統合の作成¶
ベンディングされた認証情報のカタログ統合を作成するには、CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) コマンドを使用し、ACCESS_DELEGATION_MODE プロパティを VENDED_CREDENTIALS に設定します。
条件:
ACCESS_DELEGATION_MODE = { VENDED_CREDENTIALS | EXTERNAL_VOLUME_CREDENTIALS }外部クラウドストレージにあるIcebergテーブルファイルへのアクセスに使用するアクセス委譲モードを指定します。
VENDED_CREDENTIALSは、Snowflake が自動供給された認証情報を使用するように指定します。EXTERNAL_VOLUME_CREDENTIALSはSnowflakeが外部ボリュームを使用するように指定します。
デフォルト:
EXTERNAL_VOLUME_CREDENTIALS
You can specify the ACCESS_DELEGATION_MODE property in the list of REST_CONFIG properties in any
CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) statement.
重要
アクセス制御に AWS Lake Formationを使用する場合は、Snowflake が AWS Glue カタログまたは Amazon S3テーブルにアクセスできるようにする必要があります。詳細については、 (オプション)Lake ormationのアクセス制御を構成する をご参照ください。
例:AWS Glue¶
次の例では、ベンディングされた認証情報を使用する AWS Glue のカタログ統合を作成します。詳細については、 AWS Glue Iceberg REST のカタログ統合の構成 をご参照ください。
CREATE CATALOG INTEGRATION glue_rest_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'rest_catalog_integration'
REST_CONFIG = (
CATALOG_URI = 'https://glue.us-west-2.amazonaws.com/iceberg'
CATALOG_API_TYPE = AWS_GLUE
CATALOG_NAME = '123456789012'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = SIGV4
SIGV4_IAM_ROLE = 'arn:aws:iam::123456789012:role/my-role'
SIGV4_SIGNING_REGION = 'us-west-2'
)
ENABLED = TRUE;
例:Amazon S3 テーブル¶
この例では、 Amazon S3 テーブル のカタログ統合を作成し、Lake Formation を使用して SigV4 認証情報のベンディングを有効にします。
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_bucketAWS アカウントの 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;
注釈
アカウント、データベース、スキーマの各レベルでデフォルト外部ボリュームをセットした場合、Snowflakeは、供給された認証情報を使用するように構成されたカタログ統合を指定する限り、テーブル作成時にデフォルト外部ボリュームを無視します。