Snowflake如何获取所有用户及其已分配角色的列表?
获取Snowflake所有用户及其已分配角色的完整列表
方法1:使用Account Usage视图(全账户范围,有延迟)
Account Usage视图覆盖全账户元数据,适合批量查询,但数据存在1-2小时的延迟。执行以下SQL:
SELECT u.name AS username, r.name AS role_name FROM snowflake.account_usage.users u JOIN snowflake.account_usage.grants_to_users gtu ON u.id = gtu.grantee_id JOIN snowflake.account_usage.roles r ON gtu.role_id = r.id ORDER BY u.name, r.name;
方法2:使用Information Schema(实时数据)
如果需要实时获取角色分配信息,可查询Information Schema的role_grants视图:
SELECT grantee_name AS username, granted_role_name AS role_name FROM information_schema.role_grants WHERE grantee_type = 'USER' ORDER BY grantee_name, granted_role_name;
注:该视图默认返回当前数据库范围内的权限,若要查询全账户,需切换到
SNOWFLAKE数据库下执行。
方法3:使用SHOW命令结合RESULT_SCAN
通过SHOW GRANTS命令直接获取权限,再用RESULT_SCAN解析结果:
SHOW GRANTS TO ALL USERS; SELECT "granted_to" AS username, "role" AS role_name FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
权限要求
执行以上查询需要具备以下角色之一:
ACCOUNTADMIN(最高权限)SECURITYADMIN(管理权限)USERADMIN(用户管理权限)- 被授予
MONITOR USAGE权限的自定义角色
内容的提问来源于stack exchange,提问作者SnowPablo
相关产品推荐
相关产品推荐

