GRANT OWNERSHIP コマンド: 共有データベースでは所有権の譲渡を不許可¶
GRANT OWNERSHIP および DROP ROLE コマンドは以下のように動作します。
- 以前:
データベースに対する USAGE 権限を共有に付与する場合は、 GRANT OWNERSHIP コマンドを実行すると、データベースの OWNERSHIP 権限を別のロールに譲渡することができます。例:
GRANT USAGE ON DATABASE mydb TO SHARE myshare; GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2 REVOKE CURRENT GRANTS;
Copyさらに、共有データベースに対する OWNERSHIP 権限を持つロールをドロップできます。
DROP ROLE r2;
Copy- 現在:
共有データベースの所有権を別のロールに譲渡して COPY CURRENT GRANTS 句を使用することはできますが、共有データベースに対する所有権を別のロールに譲渡して REVOKE CURRENT GRANTS 句を使用することはできません。これを実行しようとすると、Snowflakeは次のようなエラーメッセージを返します。
Cannot transfer ownership on a database that is granted to a share
このエラーメッセージを回避し、 OWNERSHIP 権限を別のロールに譲渡するには、共有からデータベースに対する USAGE 権限を取り消し、データベースに対する OWNERSHIP 権限を別のロールに譲渡し、データベースに対する USAGE 権限を共有に付与します。例:
REVOKE USAGE ON DATABASE mydb FROM SHARE myshare; GRANT OWNERSHIP ON DATABASE mydb TO ROLE r2; GRANT USAGE ON DATABASE mydb TO SHARE r2;
Copyさらに、共有データベースに対する OWNERSHIP 権限を持つロールをドロップしようとすると、Snowflakeは以下のエラーメッセージを返し、取る必要のあるアクションの手順が表示されます。
Cannot drop a role that is the owner of one or more shared databases. Run 'SHOW GRANTS TO ROLE <role_name>' to find these shared databases and transfer their ownership to appropriate role using 'GRANT OWNERSHIP ON DATABASE <database_name> TO ROLE <target_role_name> COPY CURRENT GRANTS'.
参照: 1181