自动履行对象

在继续操作之前,请务必了解 Cross-Cloud Auto-Fulfillment(自动履行)支持的对象、对象可能如何依赖账户角色、Snowflake 为自动履行创建的内部对象,以及对象级自动履行具体会履行哪些内容。

支持自动履行的对象

您的列表中包含 或引用 的数据库对象必须仅包含支持自动履行的对象。

根据您的数据产品,支持的对象有所不同:

对象

共享(数据库)

应用程序包

视图(常规视图,又名非安全视图)

视图(物化视图)

视图(安全视图)

使用 REFERENCE_USAGE 权限引用存储在其他数据库中的数据的安全视图。

动态表

|CM|(仅来自应用程序包)

Iceberg 表

数据库角色

SQL UDF/UDTF(常规,也称为非安全)

|CM|(从引用数据库中的共享视图调用时)

SQL UDF/UDTF(安全)

|CM|(从引用数据库中的共享视图调用时)

存储过程(不用于共享)

掩码和行访问策略

标签

任务(不用于共享)

警报(不用于共享)

密钥(不用于共享)

如果此列表中的某个对象被指定为复制或故障转移组的一部分,则不支持对其执行自动履行。有关详细信息,请参阅 跨多个账户的复制和故障转移简介。如果主数据库包含混合表,刷新操作会失败。有关详细信息,请参阅 Snowflake 社区论坛 (https://community.snowflake.com/s/article/Auto-fulfillment-error-SQL-execution-error-Primary-database-contains-an-entity-of-type-Table-Replication-of-a-database-with-this-entity-type-is-not-supported)。

如果您的数据产品包含或引用受支持对象列表以外的对象,您必须更新数据产品。

依赖于账户角色的对象的自动履行

自动履行不会复制账户角色。相反,SSAs 中的对象由 ACCOUNTADMIN 角色拥有。

如果您的共享或应用程序包中包含依赖于某个账户角色的对象,那么在与使用者共享时,该对象的工作方式可能会与您预期的不同。例如:

  • 如果使用 INVOKER_ROLE 上下文函数共享包含受策略保护的数据的安全视图,由于视图所有者角色不同,策略的评估值可能与提供商账户区域中的不同。

  • 如果共享一个安全视图,而视图引用的对象仅限于某个账户角色,例如只有 SECURITYADMIN 角色具有 SELECT 权限的表,那么当提供商账户中没有 SECURITYADMIN 角色的用户查询时,视图可能无法展开,但当使用者账户中没有 SECURITYADMIN 角色的用户查询时,视图会返回结果。

不要使用账户角色,而要使用数据库角色。有关更多信息,请参阅 共享受策略保护的数据IS_DATABASE_ROLE_IN_SESSION

为自动履行创建的内部 Snowflake 对象

Snowflake 创建以下内部对象来支持 Cross-Cloud Auto-Fulfillment:

对象类型

名称

角色

SNOWFLAKE$GDS_RL

AUTO_FULFILLMENT_EXECUTOR

数据库

SNOWFLAKE$GDS

复制组

前缀为 SNOWFLAKE$GDS

这些内部对象用于执行自动履行的任务,如在另一个区域创建安全共享区域,并创建一个数据库来存储自动履行所用的对象,如履行任务。

分别运行 SHOW DATABASESSHOW ROLESSHOW REPLICATION GROUPS 时,这些内部对象会显示出来。请勿修改这些对象或将其授予其他用户或角色。

对象级自动履行

当配置对象级自动履行时,将 SUBDB 用于支持的对象。还必须支持这些对象引用的对象。有关支持的对象的列表,请参阅此页上的 支持自动履行的对象 主题。

该图显示了列表自动履行到其他区域和云。
  1. 区域中的第一位使用者将获得列表。

  2. 自动履行将共享中的对象传输到安全共享区。

  3. 任何获得列表的使用者都可以从其 Snowflake 区域的安全共享区获取数据产品。

实施对象级自动履行功能的内容

当您对数据产品使用 SUBDB(对象级)自动履行功能时,只有直接授予共享或应用程序的对象或由共享或应用程序中的对象引用的对象才会实施自动履行功能。

例如:

数据产品中的对象

传输的内容

数据库中的表和架构

从同一数据库中的表创建的安全视图

安全视图和表

使用 FULL_DATABASE 自动履行功能的数据库中的表

整个数据库

使用 SUBDB 自动履行功能的数据库中的表

语言: 中文