显示 Snowflake 数据库中所有模式的授权
Show grants on all schemas in a Snowflake database
我正在尝试列出特定数据库中所有模式的所有授权。
我发现只有 SHOW GRANTS ON SCHEMA "TEST_DB"."TEST_SCHEMA"
对一种模式有效,但遗憾的是我无法对所有模式有效。
我认为我需要结合使用 SHOW
和 result_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
我正在尝试列出特定数据库中所有模式的所有授权。
我发现只有 SHOW GRANTS ON SCHEMA "TEST_DB"."TEST_SCHEMA"
对一种模式有效,但遗憾的是我无法对所有模式有效。
我认为我需要结合使用 SHOW
和 result_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