如何在雪花中获取用户角色层次结构?
Posted
技术标签:
【中文标题】如何在雪花中获取用户角色层次结构?【英文标题】:How to get User-Role Hierarchy in Snowflake? 【发布时间】:2020-09-22 17:11:06 【问题描述】:我需要一些帮助来显示用户角色层次结构。根据审计要求,我需要创建角色层次仪表板。我没有找到任何直接的方法来获得这个作为角色继承和嵌套角色。这属于多对多关系。一个用户可以有一个或多个角色分配给它,一个角色可以有一个或多个角色分配给它。我正在尝试从以下视图中获取此信息
SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_ROLES
SNOWFLAKE.ACCOUNT_USAGE.GRANTS_TO_USERS
这里有一些信息。 用户 DBA 具有环境级别的角色(从今天开始是 Role_DEV,但很快就会有另一个 Role_STG),它具有相应的 READ 和 WRITE 角色。这些是基于架构级别的。
这是层次结构,我需要像这样或类似的显示
User_DBA ==> Role_DBA ==> Role_DEV ==> Role_Write ==> Role_Read ==> Role_Read_Schema_A
User_DBA ==> Role_DBA ==> Role_DEV ==> Role_Write ==> Role_Read ==> Role_Read_Schema_B
User_DBA ==> Role_DBA ==> Role_DEV ==> Role_Write ==> Role_Write_Schema_A
User_DBA ==> Role_DBA ==> Role_DEV ==> Role_Write ==> Role_Write_Schema_B
ETL 用户角色层次结构
User_ETL ==> Role_ETL ==> Role_ETL_DEV ==> Role_WRITE_Schema_A ==> Role_Read_Schema_A
User_ETL ==> Role_ETL ==> Role_ETL_DEV ==> Role_Read_Schema_B
报告角色层次结构(报告用户没有默认角色)
User_Rpt ==> Role_Read_Schema_A
User_Rpt ==> Role_Read_Schema_B
有什么建议或方法吗?
谢谢你, 神灵
【问题讨论】:
视图应该包含您要查找的信息。您面临的问题是什么? 这个先前的答案可能会让你大部分时间到达那里:Query to get list of all roles and their associated users in snowflake 【参考方案1】:这是获取您正在寻找的角色层次结构的示例。我认为您可以使用此示例并添加 grants_to_users
视图以获取您要查找的内容。
with initial_table as (
select
name as node,
grantee_name as parent
from snowflake.account_usage.grants_to_roles
where deleted_on is null and granted_on = 'ROLE'
union all
select 'ACCOUNTADMIN' as node, '' as parent
)
select
node,
parent,
sys_connect_by_path(node, ' ==> ') as path
from initial_table
start with node = 'ACCOUNTADMIN'
connect by parent = prior node
【讨论】:
谢谢。这绝对有助于我进一步研究它。使用它,我将尝试找出下层层次结构。前任。如果用户只分配了一个角色为 WRITE_ROLE,那么我需要显示 WRITE_ROLE USER_1 ==> WRITE_ROLE ==> READ_ROLE 在这种情况下,我不需要显示上层层次结构,即 ACCOUNTADMIN、SYSADMIN。以上是关于如何在雪花中获取用户角色层次结构?的主要内容,如果未能解决你的问题,请参考以下文章