0

我需要从元数据表中检查授予用户的角色和授权。基本上,我需要元数据表,我可以在其中使用多个角色进行查询,例如。XXX,YYY,ZZZ。我需要这个来获取可能已被授予的角色的层次结构。

我可以显示授予角色 XXX - 这将为我提供授予该角色的所有用户/角色,但我必须一次只为一个角色做。如果我做

SELECT * 
FROM SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_USERS 
WHERE ROLE='XXX' 
AND DELETED_ON IS null;

它只给我被授予此角色的用户,而不是角色本身。如果我检查GRANTS_TO_ROLES表 - 它为我提供了为该角色授予的实际权限,而不是授予该特定角色的其他角色。

4

2 回答 2

0

您提到了层次结构-我怀疑您想查看哪些角色被授予其他角色..

尝试这个:

show grants of role Your_Role

在返回的表中,您将看到一些角色被分配给其他角色和用户。即列granted_to

于 2020-02-03T14:05:18.403 回答
0

您可以做的是使用 SHOW 语法而不是选择:

show roles in account;

将为您提供完整的角色列表(仍然来自元数据)。不确定您到底想进一步对它们做什么,但如果您真的想将结果作为查询处理,您可以按照它

select * from table(result_scan(last_query_id()));

并用于与其他表连接或只是复制到某种临时表中并从那里进一步连接

于 2020-02-03T08:57:47.647 回答