安全なデータ共有の開始

安全なデータ共有は、非常に強力でありながら使いやすい機能です。わずか数ステップでデータプロバイダーとして開始できます。

このトピックでは、データベースとそのオブジェクトを1つ以上のアカウントと共有するために必要なタスクを紹介します。トピックの最後の例は、これらのタスクを実行するために必要なすべての SQL コマンドを示しています。

このトピックの内容:

注釈

このトピックで説明されているタスクを実行するには、 ACCOUNTADMIN ロールを使用する必要があります。

また、このトピックでは、プロバイダーがデータの共有を開始するために必要なタスクの 最小 セットのみを説明します。より詳細なデータ共有シナリオなどの詳細な情報については、 共有の操作 をご参照ください。

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

CREATE SHARE を使用して共有を作成します。このステップでは、共有は単にオブジェクトとアカウントが追加されるのを待っているコンテナーです。

ステップ2:権限を付与してオブジェクトを共有に追加する

GRANT <privilege> ...TO SHARE を使用して、共有に次のオブジェクト権限を付与します。

  • 共有するデータベースの USAGE 権限。

  • 共有するオブジェクトを含む各データベーススキーマに対する USAGE 権限。

  • 各共有スキーマで特定のオブジェクトを共有するための SELECT 権限。

    • テーブル

    • 外部テーブル

    • 安全なビュー

    • 安全なマテリアライズドビュー

    • 安全な UDFs

重要

異なる 地域 または クラウドプラットフォーム のデータコンシューマーとデータを安全に共有することを計画するときは、現在、1つ以上の外部テーブルがデータベースに存在する場合、プライマリデータベースの複製がブロックされることに注意してください。

必要に応じて、 SHOW GRANTS を使用して、共有のオブジェクト許可を表示します。

ちなみに

次の手順が完了すると、共有に追加されたすべてのアカウントに共有が「表示」されるため、次の手順を完了する前に共有のこの最小限の検証を実行することをお勧めします。

共有の詳細な検証を実行する場合、Snowflakeは、アカウント内のコンシューマーアカウントをシミュレートするメカニズムを提供します。詳細については、 セキュアオブジェクトを使用したデータアクセスの制御 をご参照ください。

ステップ3:1つ以上のアカウントを共有に追加する

ALTER SHARE を使用して、共有に1つ以上のアカウントを追加します。共有に追加されたアカウントを確認するには、 SHOW GRANTS を使用できます。

これで完了です。指定したアカウントで共有を使用する準備が整いました。これらおよびその他のデータプロバイダータスクを実行するための詳細な手順については、 共有の操作 をご参照ください。

次の例は、上記のプロバイダープロセス全体を示しています。

この例では以下を前提としています。

  • aggregates_eula という名前のスキーマと aggregate_1 という名前のテーブルを持つ sales_db という名前のデータベースが存在。

  • データベース、スキーマ、およびテーブルは、 xy12345 および yz23456 という名前の2つのアカウントと共有。

USE ROLE accountadmin;

CREATE SHARE sales_s;

GRANT USAGE ON DATABASE sales_db TO SHARE sales_s;
GRANT USAGE ON SCHEMA sales_db.aggregates_eula TO SHARE sales_s;
GRANT SELECT ON TABLE sales_db.aggregates_eula.aggregate_1 TO SHARE sales_s;

SHOW GRANTS TO SHARE sales_s;

ALTER SHARE sales_s ADD ACCOUNTS=xy12345, yz23456;

SHOW GRANTS OF SHARE sales_s;