哪个 Snowflake 特权允许 ROLE insert/write 变成 table

Which Snowflake privilege allow a ROLE to insert/write into a table

我有一个由 ROLE_Amy_database.shema_1 下创建的 table_aa。现在,我有另一个 ROLE_B,它对 my_database.shema_1 具有 CREATE TABLEUSAGE 权限,对 my_database.shema_1 下的表具有 SELECT 权限。那么,ROLE_B能否将insert数据写入ROLE_A所拥有和创建的table_aa

我明白因为 table_aa 的所有权是 ROLE_A,所以 ROLE_B 不能删除 table_aa。但是 ROLE_B 可以写入 table_aa 吗?

我是雪花的新手。有什么想法吗?

您需要在 table_aa 上向 Role_B 提供插入权限才能对其进行写入。

你的理解是正确的。 ROLE_B 不能 drop/insert 进入 table_aa 因为它属于 ROLE_A.

我明白你的困惑在哪里。在您的情况下,由于 ROLE_Bmy_database.shema_1 上具有 CREATE TABLEUSAGE SELECT 的 table 特权,因此此角色不足以插入或删除其他角色拥有的 table。现在,由于 ROLE_B 拥有 CREATE TABLE 特权,因此该角色创建的任何新 table 都将由 ROLE_B 拥有,同样,ROLE_A 不能 insert/drop 此角色拥有的 table 除非给予特定权限。

在您的情况下,正如@srinath 所建议的,您需要授予 ROLE_B

INSERT 权限
grant insert on table my_database.shema_1.table_aa to role ROLE_B;

对于角色拥有的对象,所有者角色必须授予对象必要的权限,以便使用另一个角色执行特定操作。

要验证角色拥有的所有权限,运行 show grants to role; 同样要检查特定 table 已分配的所有权限 运行 show grants on table my_database.shema_1.table_name; 这将显示 table 拥有的所有权限以及分配给哪个角色。

请参阅 snowflake-access-control-model and security-access-control-privileges 了解更多说明