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 对象(数据库、架构、表、安全视图等)添加到共享:

  • 选项 1: 通过数据库角色向共享授予对象的权限。

  • 选项 2: 将对象的权限直接授予共享。

有关这些选项的更多信息,请参阅 选择如何共享数据库对象

您可以通过将账户添加到共享,来选择哪些账户可以使用共享中的数据。

(在使用者账户中)从共享创建数据库后,使用者账户中的用户即可访问所有共享对象:

数据库、数据库对象、共享和账户之间的关系

共享是安全、可配置的,并且完全由提供商账户控制:

  • 添加到共享的新对象立即可供全部使用者使用,从而提供对共享数据的实时访问。

  • 共享中对现有对象的更新会立即同步至所有使用者。

  • 可以随时撤销对共享(或共享中的任何对象)的访问权限。

Snowflake 中的共享选项

可使用以下选项之一在 Snowflake 中共享数据:

  • 列表,在其中将共享和附加元数据作为数据产品提供给一个或多个账户,

  • Direct Share,可直接将特定数据库对象(共享)共享给您所在区域的另一个账户,

  • 数据交换,可在其中设置和管理一组账户并向该组提供共享。

您还可以将 Direct Share 转换为列表。有关说明,请参阅 将 Direct Share 转换为列表

有关更多详细信息,请参阅 Snowflake 中的数据共享和 Collaboration 概述

数据提供商和使用者概述

在 Snowflake 中共享时,共享数据的账户称为提供商,而作为数据接收者的账户称为使用者。

关于提供商

数据提供商是任何创建共享并使其可供其他 Snowflake 账户使用的 Snowflake 账户。作为数据提供商,您与一个或多个 Snowflake 账户共享数据库。对于您共享的每个数据库,Snowflake 均支持使用授权,为数据库中选定的对象提供精细的访问控制(即,您授予对数据库中一个或多个特定对象的访问权限)。

您可以按需创建任意数量的共享,并向共享添加任意数量的账户。如果想向多个账户提供共享,可能需要使用 列表数据交换

有关以提供商身份共享数据的指南,请参阅 Secure Data Sharing 入门。有关更多详细信息,请参阅 使用共享

关于使用者

数据使用者是选择从数据提供商提供的共享创建数据库的任何账户。作为数据使用者,将共享数据库添加到您的账户后,即可像访问账户中的其他任何数据库一样,访问和查询数据库中的对象。

您可以使用数据提供商提供的任意多个共享,但每个共享只能创建一个数据库。

有关更多详细信息,请参阅 使用共享数据

与提供商共享的使用指标

如果您通过数据交换私密提供列表,或者在 Snowflake Marketplace 上提供列表,则可以访问有关使用者使用列表的各种指标,以及有关访问列表的使用者账户的指标。

有关列表使用情况数据的详细信息,请参阅 监控列表的使用情况。在数据交换中共享的列表使用情况数据仅在共享的 Snowflake 数据库的 数据共享使用情况 架构中包含的视图中提供。

用于第三方访问的阅读者账户

仅支持 Snowflake 账户之间的数据共享。作为数据提供商,您可能希望与还没有 Snowflake 账户或尚未准备好成为获得许可的 Snowflake 客户的使用者共享数据。

您可以创建阅读者账户,以便与这些使用者共享数据。阅读者账户(以前称为“只读账户”)提供了一种快捷、简单且经济高效的数据共享方式,而不要求使用者成为 Snowflake 客户。

每个阅读者账户都属于创建它的提供商账户。作为提供商,您可以使用 共享 与阅读者账户共享数据库;但阅读者账户只能使用创建它的提供商账户中的数据。请参考下图:

数据共享阅读者账户概览

阅读者账户中的用户可查询已与阅读者账户共享的数据,但不能执行完整账户中允许的任何 DML 任务,例如数据加载、插入、更新和类似的数据操纵操作。

有关更多详细信息,请参阅 管理阅读者账户

语言: 中文