我有不同的用户,角色为“sysadmin”。当系统管理员用户“AAA”正在创建表时,一切正常,但是当用户“BBB”想要删除/创建或替换用户“AAA”创建的表时,我们收到“权限不足”的错误”。我应该怎么办?我有什么需要改变的吗?
** sysadmin 中的所有用户在所需的架构、数据库、表上都有“GRANT ALL”。
我有不同的用户,角色为“sysadmin”。当系统管理员用户“AAA”正在创建表时,一切正常,但是当用户“BBB”想要删除/创建或替换用户“AAA”创建的表时,我们收到“权限不足”的错误”。我应该怎么办?我有什么需要改变的吗?
** sysadmin 中的所有用户在所需的架构、数据库、表上都有“GRANT ALL”。
ROLE
特权,请通过阅读例如,了解您的选择。配置访问控制。
您必须考虑以下因素的组合:
ROLE
;确保在创建表时USER AAA
两者USER BBB
都在使用。ROLE SYSADMIN
检查相关表的所有权,并运行命令SHOW ROLES
以查看是否一切都按预期设置。GRANT OWNERSHIP ... FUTURE ...TO ROLE SYSADMIN
确保SYSADMIN
拥有每个对象SYSADMIN
来控制访问您可以创建一个运行任意数量的 SQL 语句的JavaScript 存储过程,然后设置一个TASK
运行/调用该过程。
先说几点:
Snowflake 使用基于角色的访问控制 (RBAC)。这意味着使用什么用户并不重要,重要的是他们在做某事时激活了什么角色。
创建对象(如表)时激活的角色成为该对象的所有者
只有当活动角色是对象的所有者时,您才能删除对象,或者角色是创建它的角色的成员(它在角色层次结构中较高)
如果用户“AAA”使用SYSADMIN
角色创建表,那么您需要确保用户“BBB”在SYSADMIN
激活时删除表(或角色是SYSADMIN
like的成员ACCOUNTADMIN
)
顺便说一句,我建议设置角色层次结构而不是分配太多人SYSADMIN
。