Snowflake cloud data platform 克隆角色或将授权复制到Snowflake中的新角色

Snowflake cloud data platform 克隆角色或将授权复制到Snowflake中的新角色,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我想创建一个新角色(role_new),它最初对另一个角色(role_old)具有相同的授权。理想情况下,我可以克隆一个角色。然而,看起来不可能在《雪花》中克隆角色。我不想在这里使用继承的原因是因为我计划从role_old撤销一些授权,因此它们也将从role_new撤销 看起来没有办法将授权从一个角色复制到另一个角色。这是正确的吗?我们拥有的最接近的东西是继承权 有人遇到过类似的情况吗?关于如何处理这个问题有什么想法吗?我认为克隆现有角色的授权/权限不是一个简单的方法。通常,这就是我建议人们通过

我想创建一个新角色(role_new),它最初对另一个角色(role_old)具有相同的授权。理想情况下,我可以克隆一个角色。然而,看起来不可能在《雪花》中克隆角色。我不想在这里使用继承的原因是因为我计划从role_old撤销一些授权,因此它们也将从role_new撤销

看起来没有办法将授权从一个角色复制到另一个角色。这是正确的吗?我们拥有的最接近的东西是继承权


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

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


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

您可以使用SQL生成器来实现这一点

步骤1:运行“show”以获得角色的授权

步骤2:从结果扫描运行SQL生成器以创建grant语句列表

步骤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语句,我专门为生成的命令编写了一个存储过程: