如何在雪花中获取用户角色层次结构?

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。

以上是关于如何在雪花中获取用户角色层次结构?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Strapi 中配置角色层次结构(权限继承)?

如何在 Symfony 中检索完整的角色层次结构

如何在 Spring Security 3 和 Spring EL 中使用角色层次结构?

如何让jsp中的spring安全角色层次结构起作用?

如何找到在雪花中创建表的用户

如何识别雪花中占用更多成本的角色