カテゴリ:

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

GRANT <権限> ... TO SHARE

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

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

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

REVOKE <privilege> ...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

パラメーター

名前

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

スキーマ名

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

共有名

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

使用上の注意

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

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

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

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

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

  • 複数のデータベースに属するオブジェクトを参照する安全なビューを共有する場合は、次のように REFERENCE_USAGE 権限を使用してください。

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

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

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

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;