ACCOUNTADMIN 以外のロールによる、データ共有タスクの実行の有効化

Snowflakeは、共有に関連するすべてのタスクを実行するための2つのグローバル/アカウント権限を提供します。

CREATE SHARE

プロバイダーアカウントで、共有を作成および管理できます(コンシューマアカウントとデータを共有するため)。

IMPORT SHARE

コンシューマアカウントで、アカウントと共有されているインバウンド共有を表示し、共有からデータベースを作成できるようにします。

デフォルトでは、これらの権限は ACCOUNTADMIN ロールにのみ付与され、アカウント管理者のみがこれらのタスクを実行できるようにします。ただし、権限を他のロールに付与して、アカウント内の他のユーザーにタスクを委任することができます。

注意

CREATE SHARE を他のロールに付与すると、共有の管理がより柔軟になりますが、これらのロールがあるユーザーは、所有する(または必要な権限がある)オブジェクトを他のアカウントに公開できます。この点は、機密データまたは専有データを含むアカウントのデータを共有している場合に特に注意する必要があります。

CREATE SHARE を他のロールに付与する前に、この点を考慮してください。

このトピックの内容:

CREATE SHARE 権限

ロールに CREATE SHARE 権限が付与されている場合、そのロールのあるユーザーは共有を作成できます。共有の作成者、つまり所有者として、ロールを使用して、次のような共有上のすべてのタスクを実行することもできます。

  • 共有に対するオブジェクトの権限の付与または取り消し。

  • 共有に対するコンシューマアカウントの追加または削除。

共有に対するオブジェクトの権限の付与または取り消しに必要な許可

共有でこれらのタスクを実行するには、タスクの実行に使用されるロールに次の権限が必要です。

  • 共有の OWNERSHIP、 および

  • OWNERSHIP または 付与される/取り消される オブジェクト上の USAGE/SELECT WITH GRANT OPTION。

    • データベース

    • テーブル

    • 外部テーブル

    • 安全なビュー

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

    • 安全な UDFs

ロールに必要なアクセス許可の組み合わせがない場合、共有でこれらのタスクを実行すると失敗します。

注釈

これは仕様によるものであり、他のアカウントとデータを共有するには、共有の所有者と共有データの所有者の両方の同意/承認が必要です(共有に含まれるオブジェクトによって)。同じロールが共有の所有者と共有内のオブジェクトになる場合があります。

共有内のオブジェクトへのアクセスブロック

共有内のオブジェクトへのアクセスは、共有を所有するロールまたはオブジェクトを所有するロールによってブロックできます。

  • ロールが共有を所有している場合は、共有からオブジェクトに対する権限を取り消すことにより、アクセスをブロックできます。

  • ロールが共有を所有していないが、共有内のオブジェクトを所有している場合、共有所有者からのオブジェクトの CASCADE で USAGE または SELECT 権限を取り消すことにより、アクセスをブロックできます。

注釈

共有および共有内のオブジェクトの所有権は、ロールへの直接的な付与を通じて、またはロール階層の下位レベルのロールから継承されます。詳細については、「ロール階層と権限の継承」をご参照ください。

また、同じロールが共有と共有内のオブジェクトを所有することもできます。

別のロールへの権限の付与

プロバイダーアカウントの ACCOUNTADMIN 以外のロールに CREATE SHARE を付与するには、ACCOUNTADMIN ロールと GRANT <権限> ... TO ROLE コマンドを使用します。

例えば、 SYSADMIN ロールに権限を付与するには:

USE ROLE ACCOUNTADMIN;

GRANT CREATE SHARE ON ACCOUNT TO SYSADMIN;

IMPORT SHARE 権限

ロールに IMPORT SHARE 権限が付与されている場合、そのロールのあるユーザーは次のタスクを実行できます。

  • すべての INBOUND 共有(プロバイダーアカウントで共有)を表示し、共有用のデータベースを作成します。

  • ロールが所有するすべての OUTBOUND 共有を表示します。

別のロールへの権限の付与

コンシューマアカウントの ACCOUNTADMIN 以外のロールに IMPORT SHARE を付与するには、ACCOUNTADMIN ロールと GRANT <権限> ... TO ROLE コマンドを使用します。

例えば、 SYSADMIN ロールに権限を付与するには:

USE ROLE ACCOUNTADMIN;

GRANT IMPORT SHARE ON ACCOUNT TO SYSADMIN;