【Snowflake】Snowflake ~ SHOW GRANT ~

■ はじめに

https://dk521123.hatenablog.com/entry/2022/02/24/231532

を分冊。

 SnowflakeのDBアクセス権限に関する調査において、
「SHOW GRANTS TO USER <user_name>」や
「SHOW GRANTS TO ROLE <role_name>」を使った。
個人的に結構よく使うので、まとめておく。

目次

【0】SHOW GRANT
 1)構文
【1】Role関連
 1)SHOW GRANTS TO ROLE <role_name>
 2)SHOW GRANTS OF ROLE <role_name>
【2】User関連
 1)SHOW GRANTS TO USER <user_name>
【3】その他
 1)SHOW GRANTS ON <object_type> <object_name>

【0】SHOW GRANT

https://docs.snowflake.com/ja/sql-reference/sql/show-grants.html

* すべてのアクセス制御権限を一覧表示
 => 【1】以降は、個人的によく使うものを抜粋して紹介する

1)構文

SHOW GRANTS

SHOW GRANTS ON ACCOUNT

SHOW GRANTS ON <object_type> <object_name>

SHOW GRANTS TO { ROLE <role_name> | USER <user_name> | SHARE <share_name> }

SHOW GRANTS OF ROLE <role_name>

SHOW GRANTS OF SHARE <share_name>

SHOW FUTURE GRANTS IN SCHEMA { <schema_name> }

SHOW FUTURE GRANTS IN DATABASE { <database_name> }

SHOW FUTURE GRANTS TO ROLE <role_name>

【1】Role関連

コマンド結果の項目

Item name Explanation
grantee_name 付与者の名前
granted_by 被付与者(付与された者)に権限付与を承認したロール

1)SHOW GRANTS TO ROLE <role_name>

* ロールに付与されているすべての権限とロールを一覧表示

コマンド例

-- adminロールに付与された権限を一覧表示
show grants to role admin;

+---------------------------------+------------------+------------+------------+------------+--------------+------------+
| created_on                      | privilege        | granted_on | name       | granted_to | grant_option | granted_by |
|---------------------------------+------------------+------------+------------+------------+--------------+------------+
| Wed, 17 Dec 2014 18:19:37 -0800 | CREATE WAREHOUSE | ACCOUNT    | DEMOENV    | ADMIN      | false        | SYSADMIN   |
+---------------------------------+------------------+------------+------------+------------+--------------+------------+

2)SHOW GRANTS OF ROLE <role_name>

* ロールが付与されているすべてのユーザーとロールを一覧表示

コマンド例

-- adminロールに付与されたロールとユーザーを一覧表示
show grants of role admin;

+---------------------------------+---------+------------+--------------+---------------+
| created_on                      | role    | granted_to | grantee_name | granted_by    |
|---------------------------------+---------+------------+--------------+---------------|
| Tue, 05 Jul 2016 16:16:34 -0700 | ADMIN   | ROLE       | ANALYST_US   | SECURITYADMIN |
| Tue, 05 Jul 2016 16:16:34 -0700 | ADMIN   | ROLE       | DBA          | SECURITYADMIN |
| Fri, 08 Jul 2016 10:21:30 -0700 | ADMIN   | USER       | JOESM        | SECURITYADMIN |
+---------------------------------+---------+------------+--------------+---------------+

【2】User関連

1)SHOW GRANTS TO USER <user_name>

* ユーザーに付与されているすべてのロールを一覧表示

使用上の注意

* すべてのユーザが自動的に使用できる PUBLIC ロールはリスト表示されない

【3】その他

1)SHOW GRANTS ON <object_type> <object_name>

* オブジェクト(以下の例だとDB)に対して
 付与されているすべての権限を一覧表示する

コマンド例

-- test_dbデータベースに付与された権限を一覧表示
show grants on database test_db;

+---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------+
| created_on                      | privilege | granted_on | name       | granted_to | grantee_name | grant_option | granted_by   |
|---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------|
| Thu, 07 Jul 2016 05:22:29 -0700 | OWNERSHIP | DATABASE   | REALESTATE | ROLE       | ACCOUNTADMIN | true         | ACCOUNTADMIN |
| Thu, 07 Jul 2016 12:14:12 -0700 | USAGE     | DATABASE   | REALESTATE | ROLE       | PUBLIC       | false        | ACCOUNTADMIN |
+---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------+

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ SHOW / DESCRIBE ~
https://dk521123.hatenablog.com/entry/2022/02/24/231532
Snowflake ~ GRANT OWNERSHIP ~
https://dk521123.hatenablog.com/entry/2022/02/25/094250
所有権変更後にエラー「current role has no privileges on it」
https://dk521123.hatenablog.com/entry/2023/04/14/151140