我正在尝试获得用户所属的所有角色。在我的情况下,用户是管理员角色的一部分,该角色继承了另一个角色提取器,而后者又继承了另一个角色分析器。如果我从雪花查询如下:
显示授予用户
此列表仅列出管理员角色,而没有列出其他两个角色(安装者,分析师)。如果同一用户登录到雪花,他可以在角色下拉列表中看到所有三个可用的角色。
需要帮助以获取所有显式角色,而不考虑角色继承。
谢谢 巴拉尼
答案 0 :(得分:0)
首先,视图"SNOWFLAKE"."ACCOUNT_USAGE"."GRANTS_TO_USERS"
和"SNOWFLAKE"."ACCOUNT_USAGE"."GRANTS_TO_ROLES"
结合在一起即可提供您所需的信息,
但仅ACCOUNTADMIN
您还具有:
SELECT * FROM "MY_DATABASE"."INFORMATION_SCHEMA"."ENABLED_ROLES";
SELECT * FROM "MY_DATABASE"."INFORMATION_SCHEMA"."APPLICABLE_ROLES";
后者似乎是一个不错的起点。
答案 1 :(得分:0)
这是一个很好的问题,令我感到惊讶的是,之前还没有完全询问过它。解决方案并不像我想的那么简单,但是我创建了一个解决方案,将角色,角色层次结构和角色用户信息捕获到自定义表中,然后使用通过根连接的查询,我可以识别所有继承的角色(以及授予该角色的路径数-如果您想知道为什么撤销特定授予却不会由于另一个间接路径而删除特权,则很有用。
由于此解决方案可能对许多Snowflake客户有用,因此我计划将该解决方案发布到Snowflake社区脚本库,包括其他视图,这些视图突出显示了何时不必要地纠缠了角色层次结构(此操作自每个赠款都只是在链中添加一个链接。
答案 2 :(得分:0)
我找到了找到具有继承角色的所有角色的最佳方法。
仅在SQL下运行。
SELECT CURRENT_AVAILABLE_ROLES()