GRANT OWNERSHIP コマンド: 共有データベースでは所有権の譲渡を不許可

注意

この動作変更は2023_06バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

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