Snowflake Data Clean Room:Amazon S3バケットからの外部データ¶
Snowflake Data Clean Room で分析されるデータは、Snowflakeネイティブであり、クラウドプロバイダーストレージの外部、またはその両方に存在することができます。 connector により、共同作業者はクリーンルーム内からクラウドプロバイダーの外部データにアクセスできます。
外部データコネクタは、 Snowflake外部テーブル を使用してデータを利用できるようにします。クリーンルーム内で外部テーブルをリンクさせることは、セキュリティ上のリスクが高まることに注意してください。その結果、コンシューマーが外部データを含めるためにコネクタを使用する前に、プロバイダーはクリーンルーム内で外部テーブルの使用を明示的に許可しなければなりません。プロバイダーが外部データコネクタを使用する場合、コンシューマーは外部テーブルが使用されていることを警告され、クリーンルームをインストールするかどうかを決めることができます。
このトピックでは、クリーンルームのアナリストがAmazon S3バケットから外部データにアクセスできるように、コネクタを使用する方法について説明します。
重要
サードパーティコネクタは、Snowflake提供ではないため、追加条件が適用される場合があります。これらの統合は、お客様の便宜のために提供されるものですが、統合に送受信されるコンテンツについては、お客様が責任を負うものとします。
お客様は、Snowflake Data Clean Roomsの使用に関連して必要な同意を取得する責任を負うものとします。アクティベーションを目的としたサードパーティコネクタとの接続も含め、Snowflake Data Clean Roomsを使用する際は、適用される法律および規制を遵守していることを確認してください。
前提条件¶
外部データ用コネクタを使用するには:
プロバイダーは、明示的に クリーンルーム内での外部テーブルの使用を許可しなければなりません。
ファイルはParquet形式でなければなりません。
S3バケットへ接続する¶
クリーンルームのコラボレーションがAmazon S3ストレージからデータにアクセスできるようにする手順は以下の通りです。
AWS で、以下の手順を完了します。
特定の権限を持つ IAM ポリシーを作成 します。
新しい IAM ポリシーを参照する IAM ロールを作成 します。
クリーンルーム環境では、 コネクタを作成 します。
AWS では、 が IAM ロール をクリーンルーム環境のサービスアカウント識別子で更新します。
クリーンルーム環境では、 AWS でコネクタを認証 します。
AWS で IAM ポリシーを作成する¶
Snowflakeでは、S3バケットへのアクセス許可を含むコネクタ専用の IAM ポリシーを作成することを推奨しています。この後の手順で、このポリシーを、コネクタのIDを表す IAM ロールに追加します。
この手順を完了するには、クリーンルーム環境に関連するアカウントのリージョンを知る必要があります。
クリーンルーム環境に関連するアカウントのリージョンを見つけるには、 クリーンルームにログインし、 Connectors » Cleanrooms » Snowflake を選択します。
S3バケットへの許可を含む IAM ポリシーを作成するには:
AWS Management Console にサインインします。
Console Home ダッシュボードから、 Identity and Access Management (IAM) を選択します。
左側のナビゲーションで Account settings を選択します。
Security Token Service (STS) セクションで、クリーンルーム環境に関連するアカウントのリージョンを見つけ、 Active を切り替えます。
左側のナビゲーションで Policies を選択します。
Create policy を選択します。
Policy editor セクションで、 JSON を選択します。
以下のポリシー本文をコピーしてポリシーエディターに貼り付け、 JSON を編集してバケット名(
<バケット>
)とフォルダーパスのプレフィックス(<プレフィックス>
)を含めます。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::<bucket>/<prefix>/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::<bucket>", "Condition": { "StringLike": { "s3:prefix": [ "<prefix>/*" ] } } } ] }
必ず
:::
形式を維持してください。たとえば、s3バケット URI がs3://sales/customers/
の場合、Resource
JSON フィールドの値はarn:aws:s3:::sales/customers/*
となります。Next を選択します。
ポリシー名(たとえば、
snowflake_cleanroom_access
)を入力し、 Create policy を選択します。
AWSでIAMロールを作成します。¶
AWS IAM ロールはコネクタのIDを表します。作成プロセスで、コネクタがS3バケットにアクセスするために必要なアクセス許可を付与する新しい IAM ポリシーにロールを関連付けます。
新しいIAMロールを作成するには:
AWS の Console Home ダッシュボードから、 Identity and Access Management (IAM) を選択します。
左側のナビゲーションで Roles を選択します。
Create role を選択します。
Trusted entity type セクションで、 AWS account を選択します。
An AWS account セクションで、 Another AWS account を選択します。
Account ID フィールドに、12桁の仮のプレースホルダー値(例えば、現在の AWS 口座の口座識別子)を入力します。この値は後で置き換えます。
Require external id を選択し、
0000
のような仮のプレースホルダー値を入力します。この値は後で置き換えます。Next を選択します。
Permissions policies セクションで、前の手順で作成したポリシーを見つけて、そのチェックボックスを選択します。
Next を選択します。
ロール名(例:
snowflake_cleanroom_connector
)を入力し、 Create role を選択します。
S3バケットと IAM ロールの識別子をコピーします。¶
クリーンルーム環境でコネクタを作成する場合、S3バケットと IAM ロールの識別子が必要になります。コネクタを作成する前に、以下の手順でこれらの識別子をコピーして保存してください。
IAMロール識別子をコピーするには:
AWS の Console Home ダッシュボードから、 Identity and Access Management (IAM) を選択します。
左側のナビゲーションで Roles を選択します。
前の手順で作成したロールを見つけ、それを選択して開きます。
Summary セクションで、 ARN を見つけ、コピーアイコンを選択します。このロール識別子は後のステップのために保存します。
S3バケットの識別子をコピーするには:
AWS の Console Home ダッシュボードから、 S3 を選択します。
S3バケットの名前を見つけ、それを選択して開きます。バケットにはクリーンルームに入れたいデータを入れてください。
バケットのプレフィックスに移動し、 Copy S3 URI を選択します。このバケットの識別子は、後のステップのために保存します。
Objects セクションではボタンを選択しないでください。
コネクタを作成し、サービスアカウントの詳細をコピーする¶
これで、クリーンルーム環境でコネクタを作成する準備が整いました。コネクタを作成したら、そのサービスアカウントの詳細をコピーして、 AWS の IAM ロールに関連付ける必要があります。
クリーンルーム環境でコネクタを作成するには:
メールアドレスを入力し、 Continue を選択します。
パスワードを入力してください。
複数のクリーンルーム環境に関連している場合は、使用するSnowflakeアカウントを選択します。
左のナビゲーションで、 Connectors を選択し、 Amazon Web Services セクションを展開します。
AWS Role ARN フィールドに、 AWS からコピーした IAM ロールの識別子(
arn:aws:iam::772412615275:role/mub00002_vhb71832_role
など)を入力します。S3 Bucket URI フィールドには、 AWS からコピーした S3 バケットの識別子(
s3://sales/customer_data/
など)を入力します。Create を選択します。
クリーンルームは、AWSにアクセスするために使用するサービスアカウントを生成します。
コピーアイコンを使用して、コネクタのサービスアカウントの Principal および External ID 識別子をコピーし、次のタスクのために保存します。
サービスアカウントの詳細で IAM ロールを更新する¶
これで、コネクタのサービスアカウントに関連付けられた識別子でIAMロールを更新する準備ができました。IAMロールを更新するには:
AWS Management Console にサインインします。
Console Home ダッシュボードから、 Identity and Access Management (IAM) を選択します。
左側のナビゲーションで Roles を選択します。
先ほど作成したロールを探し、選択して開きます。
Trust relationships タブを選択します。
Edit trust policy を選択します。
コネクタのサービスアカウントの識別子を含めるように、信頼ポリシーのJSONを変更します。あなたは先ほど、これらの識別子をコピーしました。JSONに次の変更を加えます。
AWS
JSON フィールドの値を、クリーンルーム環境からコピーした Principal の値に置き換えてください。以下の例では、クリーンルーム環境における Principal の値は
arn:aws:iam::115136555074:user/x4gy-s-p2345g38
です。sts:ExternalId
JSON フィールドの値を、クリーンルーム環境からコピーした External ID の値に置き換えてください。以下の例では、クリーンルーム環境における External ID の値は
UCA56729_SFCRole=4447_uht2344sdf3mrWLNRM0y3bE=
です。{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::115136555074:user/x4gy-s-p2345g38" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "UCA56729_SFCRole=4447_uht2344sdf3mrWLNRM0y3bE=" } } } ] }
Update policy を選択します。
コネクタの認証コード¶
これでS3バケットにアクセスできるようにコネクタを認証する準備ができました。コネクタを認証するためには:
クリーンルーム環境からサインアウトされた場合は、 ウェブアプリにサインインする をご参照ください。
クリーンルーム環境で Connectors を選択し、 Amazon Web Services セクションを展開します。
接続先のS3バケットを選択し、 Authenticate を選択します。
AWSの外部データへのアクセスを削除する¶
クリーンルーム環境からS3バケットへのアクセスを削除するには:
メールアドレスを入力し、 Continue を選択します。
パスワードを入力してください。
複数のクリーンルーム環境に関連している場合は、使用するSnowflakeアカウントを選択します。
左のナビゲーションで、 Connectors を選択し、 Amazon Web Services セクションを展開します。
現在接続しているS3バケットを見つけ、ゴミ箱アイコンを選択します。