SnowflakeのMANAGE GRANTSの権限について
はじめに
私が所属しているライフイズテックではデータ基盤にSnowflakeを採用しています。
Snowflakeの権限管理では、MANAGE GRANTSという権限が存在します。今回はMANAGE GRANTSについて調べたことをまとめます。
まとめようと思った背景
Snowflakeで既存のオブジェクトに対しての権限付与では、対象のオブジェクトの所有権(Ownership)を持っているロールが、権限の付与や取り消しが可能です。
そのため、将来の付与についても同様だと考えて、所有権のあるユーザーで下記のような権限付与を行おうとしたところエラーになりました。
GRANT SELECT ON FUTURE TABLES IN DATABASE <database> TO ROLE <role>;
エラーになったためサポートに問い合わせたところ、MANAGE GRANTSが必要だということがわかったため、調べてみることにしました。
MANAGE GRANTSについて
MANAGE GRANTSはオブジェクトの所有権と同様に権限の付与や取り消しを可能にする権限です。
デフォルトでは、SECURITYADMINに付与されているため、SECURITYADMINとACCOUNTADMINが使うことができます。
MANAGE GRANTSのロールがあれば、各オブジェクトの所有権のあるロールに切り替えることがなく、一元的に権限管理を実行することができます。
基本的には権限付与は対象オブジェクトの所有権があるロールで実行可能ですが、所有権のあるロールでも下記のケースおいては、所有権のあるロールではなく、MANAGE GRANTSの権限のあるロールでの実行が必要です。
- データベースレベルまたはスキーマレベルでの将来のオブジェクトに対しての権限付与
- 管理アクセススキーマでの権限付与
宣伝
ライフイズテック サービス開発部では、月毎に気軽にご参加いただけるカジュアルなイベントを実施しています。開催予定のイベントは、 connpass のグループからご確認ください。興味のあるイベントがあったらぜひ参加登録をお願いいたします。皆さんのご参加をお待ちしています!
Discussion