![[Snowflake]ロールに付与した権限を確認する](https://devio2023-media.developers.io/wp-content/uploads/2019/09/snowflake-logo-1200x630.png)
[Snowflake]ロールに付与した権限を確認する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
Snowflakeには、データベースを管理するためのGUI画面が提供されています。Snowflakeにおける権限管理の基本となるロールの管理も、まず自身のロールをSECURITYADMINかACCOUNTADMINに切り替えた上で、[アカウント]-[ロール]に移動すれば可能です(下図)。
ただ、この画面では「ロールがどのユーザ及びロールに付与されているか」は確認できるものの、「ロールの中にどのような権限が含まれているか」を確認することができません。本エントリではその確認方法について紹介します。
SHOW GRANTSコマンドを使う
まあ、結論はこれだけなんですがね…。以前のエントリでSNOWFLAKE.INFORMATION_SCHEMA.APPLICABLE_ROLESビューを参照する方法を知ったものだから、てっきり同じような権限情報を格納したビューがあると思いこんで、だいぶ探してしまいました。
気を取り直して、早速コマンドを実行します。例として、弊社で実施しているSnowflakeハンズオンイベントの内容を少しだけ利用します。
確認用ロールの作成と権限付与
ロールの作成はよく使われるSYSADMINロールでは実施できません。SECURITYADMINか、それを包含するACCOUNTADMINロールである必要があります。
USE ROLE accountadmin;
例として、JUNIOR_DBAロールを作成し、ロールに対し作成済みのデータベースの利用(USAGE)権限を与えます。
CREATE ROLE junior_dba; GRANT USAGE ON DATABASE citibike TO ROLE junior_dba; GRANT USAGE ON DATABASE weather TO ROLE junior_dba;
ロール内の権限確認
ここで先程紹介したコマンドの出番です。作成したロールの中身を確認してみましょう。
SHOW GRANTS TO ROLE junior_dba;
以下の結果を得ました。
表示されたカラムは、それぞれ以下の意味を持ちます。
| カラム名 | 意味 |
|---|---|
| created_on | 権限操作によって新たにレコードが作成された日時 |
| privilege | 付与した権限の種類 |
| granted_on | 権限付与対象の種類 |
| name | 権限付与対象の名前 |
| granted_to | 非権限付与対象の種類 |
| grantee_name | 非権限付与対象の種類 |
| grant_option | 権限は操作特権付きか |
| granted_by | 権限を付与の操作を行ったロール |
読み解くと、それぞれ2つのデータベース(CITIBIKE, WEATHER)の使用(USAGE)権限を、JUNIOR_DBAロールに特権操作なしで付与しているとわかります。
このコマンドで、ロールの設定を確認してください。









