【问题标题】:Cloning a role or copying grants to a new role in Snowflake在 Snowflake 中克隆角色或将授权复制到新角色
【发布时间】:2020-10-28 23:53:40
【问题描述】:

我想创建一个新角色 (role_new),它最初对另一个角色 (role_old) 具有相同的授权。理想情况下,我将能够克隆一个角色。但是,似乎无法在 Snowflake 中克隆角色。我不想在这里使用继承的原因是因为我计划从 role_old 撤消一些授权,因此它们也会从 role_new 中撤消。

似乎没有办法将授权从一个角色复制到另一个角色。它是否正确?我们最接近的就是继承。

有没有人遇到过类似的情况?关于如何处理这个问题的任何想法?

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    我认为没有一种简单的方法可以克隆现有角色的授权/权限。通常,这就是为什么我建议人们通过 Git 和 Flyway 等其他工具通过代码维护他们的 Snowflake 环境的原因。

    否则,您可以通过执行“显示授权”和“显示角色”来查看授权和角色。您还可以查看使用SnowReportsnowflakeinspector 来可视化您的安全设置。但我认为你最好的办法是通过代码存储你的安全框架,这样你就可以复制/修改/粘贴并以这种方式执行它。

    【讨论】:

      【解决方案2】:

      您可以使用 SQL 生成器来执行此操作。

      第 1 步:运行“表演”以获得角色的授权。

      第 2 步:从 result_scan 运行 SQL 生成器以创建授权语句列表。

      第 3 步:(可选)使用存储过程自动运行它们。

      我没有测试这么多,但它看起来有点像这样:

      show grants to role SYSADMIN;
      
      select 'grant ' || "privilege" || ' on ' || "granted_on" || ' to MYNEWROLE;' as SQL_COMMAND from table(result_scan(last_query_id()));
      

      如果您想运行所有生成的 SQL 语句,我编写了一个存储过程来专门为生成的命令执行此操作:

      https://support.snowflake.net/s/article/Executing-Multiple-SQL-Statements-in-a-Stored-Procedure

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-28
        • 2014-05-08
        • 1970-01-01
        • 2018-02-10
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        • 2014-01-17
        相关资源
        最近更新 更多