カテゴリ:

ユーザーとセキュリティ DDL (アクセス制御)

GRANT <権限> ... TO SHARE

データベースおよびその他のサポートされているデータベースオブジェクト(スキーマ、 UDFs、テーブル、およびビュー)のアクセス権限を共有に付与します。これらのオブジェクトに権限を付与すると、事実上オブジェクトが共有に追加され、1つ以上のコンシューマーアカウントと共有できます。

詳細については、 Secure Data Sharingの紹介 および 共有の操作 をご参照ください。

こちらもご参照ください:

REVOKE <権限> ... FROM SHARE

GRANT <権限> ... TO ROLE

構文

GRANT objectPrivilege ON
     {  DATABASE <name>
      | SCHEMA <name>
      | FUNCTION <name>
      | { TABLE <name> | ALL TABLES IN SCHEMA <schema_name> }
      | VIEW <name>  }
  TO SHARE <share_name>

条件:

objectPrivilege ::=
-- For DATABASE, SCHEMA, or FUNCTION
    USAGE
-- For TABLE or VIEW
    SELECT
-- For DATABASE
    REFERENCE_USAGE

パラメーター

name

指定された権限が付与されるオブジェクト(データベース、スキーマ、 UDF、テーブル、またはセキュアビュー)の識別子を指定します。

schema_name

すべてのテーブルに対して指定された権限が付与されるスキーマの識別子を指定します。

share_name

指定された権限が付与される共有の識別子を指定します。

使用上の注意

  • 共有には、単一のデータベースに対する USAGE 権限のみを付与できます。ただし、そのデータベース内では、複数のスキーマ、 UDFs、テーブル、およびビューに対する権限を共有に付与できます。

  • 個々のオブジェクトに対する権限は、個別の GRANT ステートメントで共有に付与する必要があります。唯一の例外は、テーブルに対する SELECT 権限です。 ALL 句を使用して、指定したスキーマのテーブルすべての SELECT を共有に付与できます。

  • ビューの SELECT 権限は、セキュアビューでのみ付与できます。非セキュアビューで SELECT 権限を共有に付与しようとすると、エラーが返されます。

  • USAGE 権限は、安全な UDFs でのみ付与できます。安全ではない UDF で USAGE 権限を共有に付与しようとすると、エラーが返されます。

  • 現在、別のデータベースのオブジェクトを参照する UDF の共有はサポートされていません。たとえば、別のデータベースからのセキュアビューを参照する UDF に USAGE を付与しようとすると、エラーが返されます。

  • 複数のデータベースに属するオブジェクトを参照するセキュアビューを共有する場合は、次のように REFERENCE_USAGE 権限を使用します。

    • REFERENCE_USAGE 権限は、各データベースに個別に付与する必要があります。

    • 共有にセキュアビューで SELECT を付与する前に、データベースに REFERENCE_USAGE 権限を付与する必要があります。

  • Secure Data Sharing: データプロバイダーは、将来の付与を使用して新しいオブジェクトを共有に自動で追加することはできません。つまり、データプロバイダーは、 GRANT <権限> ... TO SHARE ステートメントを使用して、将来のオブジェクトに対する権限を共有に付与することはできません。

これは、単一のデータベースのオブジェクトを共有する例です。

GRANT USAGE ON DATABASE mydb TO SHARE share1;

GRANT USAGE ON SCHEMA mydb.public TO SHARE share1;

GRANT USAGE ON FUNCTION mydb.shared_schema.function1 TO SHARE share1;

GRANT USAGE ON FUNCTION mydb.shared_schema.function2 TO SHARE share1;

GRANT SELECT ON ALL TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT USAGE ON SCHEMA mydb.shared_schema TO SHARE share1;

GRANT SELECT ON VIEW mydb.shared_schema.view1 TO SHARE share1;

GRANT SELECT ON VIEW mydb.shared_schema.view3 TO SHARE share1;

これは、異なるデータベースのオブジェクトを参照するセキュアビューを共有する例です。

CREATE SECURE VIEW view2 AS SELECT * FROM database2.public.sampletable;

GRANT USAGE ON DATABASE database1 TO SHARE share1;

GRANT USAGE ON SCHEMA database1.schema1 TO SHARE share1;

GRANT REFERENCE_USAGE ON DATABASE database2 TO SHARE share1;

GRANT SELECT ON VIEW view2 TO SHARE share1;
最上部に戻る