如何查询Snowflake中拥有指定Schema USAGE权限的所有角色
查询Snowflake中拥有指定Schema USAGE权限的角色
可以通过Snowflake的系统视图来查询拥有DB1.Schema的USAGE权限的角色,以下是两种常用方法:
方法一:使用ACCOUNT_USAGE视图(账户级权限查询)
如果您拥有ACCOUNT_USAGE的访问权限,这个视图可以查询整个账户范围内的权限分配情况:
SELECT GRANTEE_NAME AS ROLE_NAME, PRIVILEGE, GRANTED_ON, OBJECT_NAME AS SCHEMA_NAME, GRANTOR_NAME FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES WHERE PRIVILEGE = 'USAGE' AND GRANTED_ON = 'SCHEMA' AND DATABASE_NAME = 'DB1' AND OBJECT_NAME = 'Schema' -- 如果Schema名称区分大小写,改为 '"Schema"' ORDER BY ROLE_NAME;
该查询会返回所有被授予目标Schema USAGE权限的角色,包含角色名称、权限类型、对象类型、Schema名称以及授权者信息。
方法二:使用INFORMATION_SCHEMA(数据库级权限查询)
如果您没有ACCOUNT_USAGE权限,可以切换到目标数据库后,通过当前数据库的INFORMATION_SCHEMA查询:
USE DATABASE DB1; SELECT GRANTEE AS ROLE_NAME, PRIVILEGE_TYPE AS PRIVILEGE, TABLE_CATALOG AS DATABASE_NAME, TABLE_SCHEMA AS SCHEMA_NAME FROM INFORMATION_SCHEMA.OBJECT_PRIVILEGES WHERE PRIVILEGE_TYPE = 'USAGE' AND OBJECT_TYPE = 'SCHEMA' AND TABLE_SCHEMA = 'Schema' -- 区分大小写时改为 '"Schema"' ORDER BY ROLE_NAME;
这个查询仅覆盖当前数据库内的权限分配,返回结果包含角色名、权限类型、所属数据库和Schema名称。
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

