如何将数据库的所有权限授予Snowflake中的角色



我试图将数据库的所有权限授予snowflake中的角色

这包括所有读取、创建、更新和删除模式、阶段、存储集成、表等的能力。

还应该包括将来在数据库中创建的任何对象。

grant all on database test to developer;

这只授予数据库的视图,而不是模式或数据库中的任何其他对象

不幸的是,在Snowflake中,没有这样的命令可以通过单个命令授予所有访问权限。

即使使用所有特权命令,您也必须对对象授予一个使用特权才能有效。

Schema Privileges的文档中也提到了。

对于将来的授权,您可以尝试在模式和数据库级别执行以下命令

模式水平

grant usage on database SAMPLEDATABASE1 to role testrole12;
grant usage on schema SAMPLEDATABASE1.TEST to role testrole12;
grant select on future tables in schema SAMPLEDATABASE1.TEST to role testrole12;
grant role testrole12 to user SUJANT3;

数据库级

grant usage on database SAMPLEDATABASE1 to role testrole12;
grant usage on future schemas in database SAMPLEDATABASE1 to role testrole12;
grant select on future tables in database SAMPLEDATABASE1 to role testrole12;
grant role testrole12 to user SUJANT3;

没有一个命令可以影响数据库下的所有对象,但是您可以为每个对象运行这些SQL集:

GRANT ALL ON ALL schemas in database <DB> TO ROLE <role>; 
GRANT ALL ON ALL TABLES IN SCHEMA <db.schema> TO ROLE <role>; 

同样适用于未来的拨款:

grant all on future schemas in database <DB> TO ROLE <role>;
grant all on future tables in schema <db.schema> to ROLE <role>;

这也可以扩展到视图和其他对象。

听起来你想授予所有权?每个对象只能有一个所有者,所以我建议您只在适当的时候使用:

GRANT OWNERSHIP ON DATABASE TEST
TO DEVELOPER
COPY CURRENT GRANTS
;

注意:复制当前授予保留当前的特权,除了所有权转移。否则,将删除所有已存在的权限。

最新更新