カテゴリ:

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

GRANT <privilege> ...TO SHARE

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

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

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

REVOKE <privilege> ...FROM SHARE

GRANT <権限> ... TO ROLE

構文

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

条件:

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

パラメーター

名前

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

スキーマ名

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

共有名

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

使用上の注意

  • テーブルとビューを除き、各オブジェクト権限はロールに個別に付与する必要があります。 ALL 句を使用して、指定したスキーマのすべてのテーブルまたはビューの SELECT をロールに付与できます。

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

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

    この制限のため、指定されたスキーマ内のすべてのビューが安全な場合にのみ ALL VIEWS IN SCHEMA スキーマ名 を使用します。

  • 複数のデータベースに属するオブジェクトを参照する安全なビューを共有する場合は、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 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;