Secure Data Sharing 简介¶
Secure Data Sharing 允许您与其他 Snowflake 账户共享您账户下数据库内的选定对象。您可以共享以下 Snowflake 对象:
数据库
表
动态表
外部表
Iceberg 表
安全视图
安全的物化视图
安全的用户定义函数 (UDFs)
Snowflake 支持通过 共享 来共享数据库,共享由数据提供商创建,并由数据使用者“导入”。
重要
账户之间共享的所有数据库对象均为 只读 (即不能修改或删除对象,包括添加或修改表数据)。
本主题内容:
Secure Data Sharing 的工作原理是怎样的?¶
使用 Secure Data Sharing 时, 不会有 账户之间的实际数据复制或传输。所有共享均使用 Snowflake 的服务层和元数据存储。共享数据不会占用使用者账户中的任何存储空间,因此不会给使用者造成每月数据存储费用。使用者 唯一 要支付的费用就是用于查询共享数据的计算资源(即虚拟仓库)费用。
由于不复制或交换任何数据,提供商可以快速轻松地设置 Secure Data Sharing,使用者则几乎可以即时访问共享数据:
提供商在其账户中创建数据库共享,并授予数据库中特定对象的访问权限。提供商还可共享多个数据库的数据,只要这些数据库属于同一个账户即可。随后,一个或多个账户会添加到共享中,其中可以包括您自己的账户(如果您有多个 Snowflake 账户)。
有关详细信息,请参阅 什么是共享? (本主题内容)。
使用者会基于共享创建 只读 数据库。要配置对此数据库的访问权限,可以使用 Snowflake 为系统中所有对象提供的、基于标准角色的相同访问控制。
通过这种架构,Snowflake 就实现了一个提供商网络,允许与多个使用者(包括其自己的组织内部的使用者)共享数据,且使用者可访问来自多个提供商的共享数据:
备注
任何完整的 Snowflake 账户均可提供和使用共享数据。Snowflake 还支持第三方账户,这是一种特殊类型的账户,使用来自单个提供商账户的共享数据。有关详细信息,请参阅 用于第三方访问的阅读者账户 (本主题内容)。
Snowflake 中的共享选项¶
可使用以下选项之一在 Snowflake 中共享数据:
列表,在其中将共享和附加元数据作为数据产品提供给一个或多个账户,
Direct Share,可直接将特定数据库对象(共享)共享给您所在区域的另一个账户,
数据交换,可在其中设置和管理一组账户并向该组提供共享。
您还可以将 Direct Share 转换为列表。有关说明,请参阅 将 Direct Share 转换为列表。
有关更多详细信息,请参阅 Snowflake 中的数据共享和 Collaboration 概述。
数据提供商和使用者概述¶
在 Snowflake 中共享时,共享数据的账户称为提供商,而作为数据接收者的账户称为使用者。
关于提供商¶
数据提供商是任何创建共享并使其可供其他 Snowflake 账户使用的 Snowflake 账户。作为数据提供商,您与一个或多个 Snowflake 账户共享数据库。对于您共享的每个数据库,Snowflake 均支持使用授权,为数据库中选定的对象提供精细的访问控制(即,您授予对数据库中一个或多个特定对象的访问权限)。
您可以按需创建任意数量的共享,并向共享添加任意数量的账户。如果想向多个账户提供共享,可能需要使用 列表 或 数据交换。
有关以提供商身份共享数据的指南,请参阅 Secure Data Sharing 入门。有关更多详细信息,请参阅 使用共享。
关于使用者¶
数据使用者是选择从数据提供商提供的共享创建数据库的任何账户。作为数据使用者,将共享数据库添加到您的账户后,即可像访问账户中的其他任何数据库一样,访问和查询数据库中的对象。
您可以使用数据提供商提供的任意多个共享,但每个共享只能创建一个数据库。
有关更多详细信息,请参阅 使用共享数据。
用于第三方访问的阅读者账户¶
仅支持 Snowflake 账户之间的数据共享。作为数据提供商,您可能希望与还没有 Snowflake 账户或尚未准备好成为获得许可的 Snowflake 客户的使用者共享数据。
您可以创建阅读者账户,以便与这些使用者共享数据。阅读者账户(以前称为“只读账户”)提供了一种快捷、简单且经济高效的数据共享方式,而不要求使用者成为 Snowflake 客户。
每个阅读者账户都属于创建它的提供商账户。作为提供商,您可以使用 共享 与阅读者账户共享数据库;但阅读者账户只能使用创建它的提供商账户中的数据。请参考下图:
阅读者账户中的用户可查询已与阅读者账户共享的数据,但不能执行完整账户中允许的任何 DML 任务,例如数据加载、插入、更新和类似的数据操纵操作。
有关更多详细信息,请参阅 管理阅读者账户。