首页 > 解决方案 > 在 Snowflake 中克隆角色或将授权复制到新角色

问题描述

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

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

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

标签: snowflake-cloud-data-platform

解决方案


您可以使用 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


推荐阅读