首页 > 解决方案 > 关于 CREATE TABLE ... CLONE {COPY GRANTS} 行为的问题

问题描述

我是 Snowflake 的新手,我对 CREATE TABLE ... CLONE COPY GRANTS 文档的解释以及我在尝试时看到的内容感到困惑:

CREATE TABLE ... CLONE 语法包括 COPY GRANTS 关键字,这些关键字会影响新表克隆,如下所示:https ://docs.snowflake.com/en/sql-reference/sql/create-clone.html [1]

对象克隆:https ://docs.snowflake.com/en/sql-reference/sql/grant-privilege.html [2]

文档的链接 1. 表示不使用 COPY GRANTS 会继承源表权限,但不会继承未来的权限,而链接 2.(粗线)表示不使用 COPY GRANTS 会继承未来的权限 我对这个解释很困惑。此外,我尝试使用和不使用 COPY GRANTS 选项克隆表:使用 COPY GRANTS 源表的初始权限出现在克隆中,没有 COPY GRANT 则没有权限(所有者除外)。但在这两种情况下,源表上的未来授权永远不会继承克隆表。有人可以帮助我理解吗?非常感谢, 问候, 西里尔

标签: clonesnowflake-cloud-data-platform

解决方案


您似乎在文档上发现了一个错误。当您使用 COPY GRANTS 时,克隆的表将继承在原始表上授予的任何显式访问权限。

create role test_role;

create table test_table (v varchar);

grant update on future tables in schema public to test_role;

grant select on test_table to role test_role;

show grants on test_table;

+-----------+------------+--------------+
| privilege | granted_on | grantee_name |
+-----------+------------+--------------+
| OWNERSHIP | TABLE      | ACCOUNTADMIN |
| SELECT    | TABLE      | TEST_ROLE    |
+-----------+------------+--------------+

create table clone_table_nocp clone test_table;

create table clone_table_yescp clone test_table copy grants;

show grants on clone_table_nocp; -- has future grants of schema

+-----------+--------------+
| privilege | grantee_name |
+-----------+--------------+
| OWNERSHIP | ACCOUNTADMIN |
| UPDATE    | TEST_ROLE    |
+-----------+--------------+

show grants on clone_table_withcp; -- inherited access privileges, but does not have future grants 

+-----------+--------------+
| privilege | grantee_name |
+-----------+--------------+
| OWNERSHIP | ACCOUNTADMIN |
| SELECT    | TEST_ROLE    |
+-----------+--------------+

我将与文档团队联系以修复它。


推荐阅读