Apache Iceberg™ テーブルには、カタログ提供認証情報を使用します。

供給された認証情報はIceberg テーブルをサポートし、 外部ボリューム を使用せずに、クラウドストレージ内のテーブルデータとメタデータに Snowflake がアクセスできるようになります。

代わりに、サードパーティの Iceberg REST カタログ(Snowflake Open Catalog など)を構成してアクセス制御を委譲し、その後、Snowflake で供給された認証情報用に構成されたカタログ統合を作成します。カタログ統合に関連付けられたIcebergテーブルでは、Snowflakeはカタログプロバイダーが提供する認証情報を使用して、外部クラウドストレージにセキュアに接続します。

注釈

REST カタログ統合 を使用し、そのファイルを Amazon S3 に保存している、 外部管理 Iceberg テーブル では、カタログ提供認証情報の使用がサポートされています。この機能を使用するには、外部カタログも認証情報の供給をサポートしている必要があります。

考慮事項

Icebergテーブルでカタログ提供認証情報を使用する場合は、以下を考慮してください。

  • この機能は、Amazon S3にデータとメタデータを保存するテーブルでのみサポートされています。

  • テーブルファイルは単一のバケットに格納する必要があります。複数のバケットに分散することはできません。

  • 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;
Copy

例: 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;
Copy

例: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;
Copy

条件:

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;
Copy

注釈

アカウント、データベース、スキーマの各レベルでデフォルト外部ボリュームをセットした場合、Snowflakeは、供給された認証情報を使用するように構成されたカタログ統合を指定する限り、テーブル作成時にデフォルト外部ボリュームを無視します。