by shigemk2

当面は技術的なことしか書かない

GRANTを実行できる権限

データベースにある将来のオブジェクトの権限を付与または取り消すには、 MANAGE GRANTS グローバル権限が必要です。SECURITYADMIN および ACCOUNTADMIN システムロールのみが MANAGE GRANTS 権限を持っています。ただし、この権限はカスタムロールに付与できます。

ACCOUTNADMINかSECURITYADMINしかGRANTは実行できないらしい。

docs.snowflake.com

GRANT OWNERSHIPのCOPYとREVOKE

やってること

所有権が新しいロールに譲渡されるときに、オブジェクトの既存のアウトバウンド権限すべてを削除するか、譲渡するかを指定します。

なので、copy current grantsをつけたら権限が残るし、revoke current grantsをつけたら権限が消える。 デフォルトはrevoke current grants。

オブジェクトにアウトバウンド(つまり依存)権限が存在する場合、 GRANT OWNERSHIP ステートメントはブロックされます。オブジェクトの所有者(またはそれ以上の役割)は、現在のすべての権限を新しい所有者のロールに対して明示的にコピーするか( COPY CURRENT GRANTS オプションを使用)、所有権を譲渡する 前 にオブジェクトのすべてのアウトバウンド権限を取り消します( REVOKE CURRENT GRANTS オプションを使用)。

でも既に付与されている権限があったら、revoke current grantsを明示しないとだめ。

docs.snowflake.com