セキュアビューを使用した非構造化データの共有

このトピックでは、セキュアビューと Secure Data Sharing 使用して、非構造化データファイルを共有する方法について簡単に説明します。Secure Data Sharingにより、データプロバイダーは、あるSnowflakeアカウントから別のSnowflakeアカウントのデータコンシューマーとデータベース内の選択したオブジェクトを共有できます。

詳細とその他の例については、 共有の操作 をご参照ください。

ステップ1: セキュアビューを作成する

まず、 CREATE SECURE VIEW コマンドを使用して、ステージの非構造化データからセキュアビューを作成します。ビューは、クエリの結果をテーブルのようにアクセスできるようにします。セキュアビューはデータプライバシー用に特別に指定されています。詳細については、 ビューの概要 をご参照ください。

データコンシューマーがセキュアビューからスコープ付きまたは事前署名付き URLs のいずれかを取得できるようにすることができます。スコープ付き URLs はより安全性が高く、事前署名付き URLs は承認や認証コードなしでアクセスすることができます。ユースケースに適した URL を選択するには、 ファイルにアクセスできる URLs の型 をご参照ください。

注釈

Snowflakeは、コンシューマーアカウントのユーザーがセキュアビューをクエリするまで、スコープ付きまたは事前署名付き URLs を作成しません。このオンデマンドの作成動作は、事前署名付き URLs の有効期間を管理するのに役立ちます。事前署名付き URLs が流出するリスクを最小限に抑えるため、 GET_PRESIGNED_URL 関数の EXPIRATION_TIME パラメーターに短い時間間隔を設定することもできます。

次の例では、データコンシューマーが、スコープまたは事前署名付き URLs にステージングされたファイルの特定のセットをクエリできるようにするセキュアビューを作成します。どちらのビューも、ディレクトリテーブルの RELATIVE_PATH 列をクエリして、スコープまたは事前署名付き URL を取得します。

スコープ URL

この例では、 BUILD_SCOPED_FILE_URL 関数を呼び出し、ステージングされたファイルのセットに対して、スコープ付き URLs を使用したセキュアビューを作成します。この例では、 mystage という名前のステージのディレクトリテーブルにある RELATIVE_PATH 列を、 BUILD_SCOPED_FILE_URL 関数に渡しています。

CREATE OR REPLACE SECURE VIEW images_scoped_v AS
SELECT BUILD_SCOPED_FILE_URL(@mystage, relative_path) AS scoped_file_url
FROM DIRECTORY(@mystage);
Copy

また、ステージのファイルのサブセットからセキュアビューを作成することができるため、ステージ全体を共有する必要はありません。次の例では、 client_name フィールドが abc と等しいステージにある画像のセキュアビューを作成します。

CREATE OR REPLACE SECURE VIEW images_for_client_abc AS
SELECT build_scoped_file_url(@myStage, relative_path) AS scoped_file_url
FROM directory(@mystage) d join clients c on d.relative_path = c.relative_path
WHERE c.client_name = 'abc';
Copy

事前署名付き URL

この例では、 GET_PRESIGNED_URL 関数を呼び出して、ステージングされたファイルのセットの事前事前署名付き URLs を取得します。この例では、 EXPIRATION_TIME パラメーターに60秒を指定することで、事前署名付き URLs に1分間だけアクセスできるようにしています。

CREATE OR REPLACE SECURE VIEW images_presigned_v AS
SELECT GET_PRESIGNED_URL(@mystage, relative_path, 60) AS presigned_url
FROM DIRECTORY(@mystage);
Copy

ステップ2: 共有を作成する

次に、空の共有を作成し、その共有にセキュアビューのアクセス権限を付与します。そうすると、セキュアビューオブジェクトが共有に追加されます。

次の例では、 CREATE SHARE コマンドで共有を作成し、 GRANT <権限> ... TO SHARE コマンドを使用して、共有にセキュアビューのための SELECT 権限を付与します。

CREATE SHARE my_share;
GRANT SELECT ON my_secure_view TO SHARE my_share;
Copy

ステップ3: アカウントを共有に追加する

最後に、コンシューマー用アカウントを共有に追加して、コンシューマー用アカウントのアクセスを提供する必要があります。

次の例では、 ALTER SHARE コマンドを使用して、 my_share という名前の共有に consumer_account_1 という名前のアカウントを追加します。

ALTER SHARE my_share ADD ACCOUNTS=consumer_account_1;
Copy

このステップを完了すると、 consumer_account_1 アカウントは共有を表示でき、セキュアビューでファイルにアクセスすることができます。