显示 Snowflake 数据库中所有模式的授权

Show grants on all schemas in a Snowflake database

我正在尝试列出特定数据库中所有模式的所有授权。

我发现只有 SHOW GRANTS ON SCHEMA "TEST_DB"."TEST_SCHEMA" 对一种模式有效,但遗憾的是我无法对所有模式有效。

我认为我需要结合使用 SHOWresult_scan,但我想知道是否有更直接的解决方案

我想到了:

show grants on schema "DB"."SCHEMA_A";
show grants on schema "DB"."SCHEMA_B";
select * from table(result_scan(last_query_id())) union all select * from table(result_scan(last_query_id(-2)));

但是很脏,也很笨重

您在 Snowflake 中创建的每个数据库都有一个 information_schema 架构,您可以使用它来获取有关对象的元数据。您可以使用以下命令查看已将哪些授权分配给数据库中的模式:

select * 
from your_db_name.information_schema.object_privileges 
where object_type = 'SCHEMA';

这将向您显示哪些角色(“被授权者”)已被授予访问该数据库中模式的权限,但请记住,它不会显示权限是如何在角色层次结构中向下推送到子角色的。

信息架构文档:https://docs.snowflake.com/en/sql-reference/info-schema.html