动态表访问控制¶
本主题讨论对动态表执行创建、查询、更改、查看和删除等操作所需的权限。
要了解有关 Snowflake 权限模型的更多信息,请参阅 访问控制概述 和 访问控制权限。
转移所有权¶
要让用户完全访问动态表,可以执行以下任一操作:
分配授予时,请确保将对象类型指定为 DYNAMIC TABLE
,因为动态表具有与常规表不同的权限集。
要授予动态表的 OWNERSHIP 权限,请确保接收角色在以下对象上具有 USAGE 权限。否则,后续的计划刷新将失败。
包含动态表的数据库和架构。
用于刷新表的仓库。
要转移动态表的所有权,您可以使用 GRANT OWNERSHIP 命令或 Snowsight。
以下示例使用 GRANT OWNERSHIP 命令将 my_dynamic_table
的所有权权限授予 budget_admin
角色。
GRANT OWNERSHIP ON DYNAMIC TABLE my_dynamic_table TO ROLE budget_admin;
以下示例使用 GRANT OWNERSHIP 命令将所有权权限授予 budget_admin
角色,该权限适用于在 mydb.myschema
架构中创建的所有未来动态表。
GRANT OWNERSHIP ON FUTURE DYNAMIC TABLES IN SCHEMA mydb.myschema TO ROLE budget_admin;
登录 Snowsight。
在导航中,转到 Monitoring » Dynamic Tables。
选择要转移所有权的角色。
创建动态表的权限¶
要创建动态表,必须使用具有以下权限的角色:
权限 |
对象 |
---|---|
CREATE DYNAMIC TABLE |
计划在其中创建动态表的架构。 |
SELECT |
计划为新动态表查询的现有表和视图。 |
USAGE |
计划用于新动态表的数据库和架构。 计划用于刷新表的仓库。 备注 虽然您可以使用具有 USAGE 权限的辅助角色执行 |
要创建依赖于另一个动态表的动态表,必须使用具有以下权限的角色:
权限 |
对象 |
---|---|
SELECT |
创建新的动态表时计划查询的动态表。 |
OPERATE |
新动态表依赖的所有上游动态表。只有在创建动态表时设置为同步刷新时才需要。 |
查询动态表的权限¶
要查询动态表,可以使用具有 创建动态表权限 的角色。对于用户(例如数据分析师)只需查询动态表的情况,可使用具有以下权限的角色:
权限 |
对象 |
---|---|
USAGE |
包含动态表的数据库和架构。 用于运行查询的仓库。 |
SELECT |
查询的动态表。 |
更改动态表的权限¶
要更改动态表,必须使用拥有该动态表的 OWNERSHIP 或 OPERATE 权限的角色。
如果拥有动态表的 OPERATE 权限,可以使用 ALTER DYNAMIC TABLE 命令执行以下操作:
使用 ALTER ... <label-alter_dynamic_table_suspend_resume>。
使用 ALTER ...RESUME。
使用 ALTER ...REFRESH。
使用 ALTER ...SET。
如果您拥有动态表的 OWNERSHIP 权限,则除了上面列出的操作外,还可以执行以下操作:
使用 ALTER ... SET | UNSET COMMENT 设置或取消注释。
使用 ALTER ... RENAME TO 重命名动态表。
使用 ALTER ... SWAP WITH 将动态表与另一个动态表交换
使用 ALTER ... SET 设置新参数
指定或移除群集密钥。请参阅 群集操作 (clusteringAction)。
更改治理政策。请参阅 数据治理策略和标签操作 (dataGovnPolicyTagAction)。
更改搜索优化。请参阅 搜索优化操作 (searchOptimizationAction)。
查看动态表元数据的权限¶
要查看元数据,必须使用具有该动态表 MONITOR 权限的角色。
对于用户只需要查看动态表的元数据和 Information Schema 的情况(例如,数据科学家持有的角色),请使用对该动态表具有 MONITOR 权限的角色。虽然 OPERATE 权限授予了这一访问权限,但它也包括更改动态表的功能,因此 MONITOR 更适合用户不需要更改动态表的情况。
如果拥有动态表的 MONITOR 权限,则可以执行以下操作:
使用 DESCRIBE DYNAMIC TABLE 命令和 Snowsight 动态表详细信息页面查看动态表的具体详细信息。如果只拥有动态表的 SELECT 权限,则以下字段会隐藏:
text
、warehouse
、scheduling_state
、last_suspended_on
和suspend_reason_code
(仅限 UI)。使用 SHOW DYNAMIC TABLES 命令查看可以访问哪些动态表。
调用 DYNAMIC_TABLE_GRAPH_HISTORY 表函数,查看图表历史记录。
调用 DYNAMIC_TABLE_REFRESH_HISTORY 表函数,查看刷新历史记录。
删除动态表的权限¶
要删除动态表,必须使用具有该动态表 OWNERSHIP 权限的角色。