GRANT <権限> ... TO SHARE¶
データベースおよびその他のサポートされているデータベースオブジェクト(スキーマ、 UDFs、テーブル、およびビュー)のアクセス権限を共有に付与します。これらのオブジェクトに権限を付与すると、事実上オブジェクトが共有に追加され、1つ以上のコンシューマーアカウントと共有できます。
詳細については、 Secure Data Sharingについて および 共有の作成と設定 をご参照ください。
- こちらもご参照ください。
構文¶
GRANT objectPrivilege ON { DATABASE <name> | SCHEMA <name> | FUNCTION <name> | SEMANTIC VIEW <name> | { TABLE <name> | ALL TABLES IN SCHEMA <schema_name> } | { EXTERNAL TABLE <name> | ALL EXTERNAL TABLES IN SCHEMA <schema_name> } | { ICEBERG TABLE <name> | ALL ICEBERG TABLES IN SCHEMA <schema_name> } | { DYNAMIC TABLE <name> | ALL DYNAMIC TABLES IN SCHEMA <schema_name> } | TAG <name> | VIEW <name> } TO SHARE <share_name> 条件:
objectPrivilege ::= -- For DATABASE REFERENCE_USAGE [ , ... ] -- For DATABASE, FUNCTION, or SCHEMA USAGE [ , ... ] -- For SEMANTIC VIEW REFERENCES [ , ... ] -- For TABLE EVOLVE SCHEMA [ , ... ] -- For EXTERNAL TABLE, ICEBERG TABLE, TABLE, or VIEW SELECT [ , ... ] -- For TAG READ パラメーター¶
name指定された権限が付与されるオブジェクトの識別子を指定します。
schema_nameすべてのテーブルに対して指定された権限が付与されるスキーマの識別子を指定します。
share_name指定された権限が付与される共有の識別子を指定します。
使用上の注意¶
共有には、単一のデータベースに対する USAGE 権限のみを付与できます。ただし、そのデータベース内では、複数のスキーマ、 UDFs、テーブル、およびビューに対する権限を共有に付与できます。
個々のオブジェクトに対する権限は、個別の GRANT ステートメントで共有に付与する必要があります。唯一の例外は、テーブル(Apache Iceberg™ テーブルを含む)に対する 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 ステートメントを使用して、将来のオブジェクトに対する権限を共有に付与することはできません。
共有から作成されたデータベースまたはデータベースオブジェクトを再共有することはできません。共有から作成されたデータベースまたはデータベースオブジェクトに対する USAGE 権限を別の共有に付与しようとすると、エラーが返されます。
Iceberg テーブルである
TABLEオブジェクトを指定すると、コマンドはそのIcebergテーブルに対する権限を付与します。
例¶
これは、単一のデータベースのオブジェクトを共有する例です。
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 SELECT ON ALL EXTERNAL TABLES IN SCHEMA mydb.public TO SHARE share1; GRANT SELECT ON ALL ICEBERG TABLES IN SCHEMA mydb.public TO SHARE share1; GRANT SELECT ON ALL DYNAMIC 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; GRANT SELECT ON ICEBERG TABLE mydb.shared_schema.iceberg_table_1 TO SHARE share1; GRANT SELECT ON DYNAMIC TABLE mydb.public TO SHARE share1;Copy
これは、異なるデータベースのオブジェクトを参照するセキュアビューを共有する例です。
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;Copy