![[小ネタ]Snowflakeで「自分が利用可能なロール」の一覧を求める](https://devio2023-media.developers.io/wp-content/uploads/2019/09/snowflake-logo-1200x630.png)
[小ネタ]Snowflakeで「自分が利用可能なロール」の一覧を求める
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
前置き: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ロールが与えられている
本来は、同じロールを複数付与する必要はないので、これを確認してロールの付与方法を検討するのも良いと思います。
以上、ご参考になれば幸いです。
















