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