[小ネタ]Snowflakeで「自分が利用可能なロール」の一覧を求める
前置き:Snowflakeのロールについて
Snowflakeでは権限を"ロール"という単位で管理します。システム管理者やロール作成者からロールの利用権を付与されると、そのユーザはUSE ROLE
コマンドやワークシートのメニュー[ロールの切り替え]で、利用が許可されたロールを自身で切り替え、適切な権限を行使することができます(下図参考)。
本題:自分が利用可能なロールをクエリで調べる方法
自分が利用(選択)できるロールの一覧は、SNOWFLAKE
データベースのINFORMATION_SCHEMA
スキーマ内にあるAPPLICABLE_ROLES
ビューを参照します。対応ドキュメントは以下です。
APPLICABLE_ROLES
ビューのカラム構造は以下です。
列名 | データ型 | 説明 |
---|---|---|
GRANTEE | TEXT | 権限が付与されるロールまたはユーザー |
ROLE_NAME | TEXT | ロールの名前 |
ROLE_OWNER | TEXT | ロールの所有者 |
IS_GRANTABLE | TEXT | このロールを他のユーザーに付与できるかどうか |
SnowflakeワークシートでAPPLICABLE_ROLES
ビューを確認します。
SELECT * FROM snowflake.information_schema.applicable_roles;
このビューへの問い合わせで、直接および間接的に付与(ロールにロールが含まれる状況)されたロールが一覧表示されます。
注意点
注意点としては、表示されるロールに重複が発生する可能性があります。例として下図では、TABLEAU_ROLE
が2件付与されています。
- Row12:別途付与されているACCOUNT_SYSADMINにTABLEAU_ROLEが含まれている(=間接的に付与されている)
- Row13:ユーザYOSUKE_KATSUKIに直接TABLEAU_ROLEロールが与えられている
本来は、同じロールを複数付与する必要はないので、これを確認してロールの付与方法を検討するのも良いと思います。
以上、ご参考になれば幸いです。