本文介绍如何为无法访问已启用 Unity Catalog 的 Databricks 工作区的 Delta 共享接收者创建凭证,并通过持有者令牌安全地向这些接收者共享数据。 此身份验证流以及 OIDC 令牌联合身份验证身份验证流称为 开放共享。
以下是其工作原理:
数据提供者可以在 Unity Catalog 元存储中创建收件人对象。
创建收件人对象时,选择持有者令牌方法时,Azure Databricks 会生成一个令牌、一个包含令牌的凭据文件,以及一个与收件人共享的激活链接。
收件人对象具有身份验证
TOKEN
类型 。 可以根据需要刷新和撤销令牌。收件人访问激活链接,下载凭据文件,并使用凭据文件进行身份验证,从而获取对您授权访问的共享中包含的表的读取权限。
OIDC 联合流是本文中所述持有者令牌流的替代方法。 与持有者令牌流相比,它具有安全性和便利性方面的优势。 有关详细信息,请参阅使用 Open ID Connect (OIDC) 联合身份验证启用对 Delta Sharing 共享(开放共享)的身份验证。
若要创建用于开放共享的收件人,可以使用目录资源管理器、Databricks Unity Catalog CLI 或 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中的 SQL 命令。
所需的权限:元存储管理员,或对要共享的数据所注册的 Unity Catalog 元存储拥有 CREATE_RECIPIENT
特权的用户。
在 Azure Databricks 工作区中,单击
目录。
在“目录”窗格顶部,单击
齿轮图标,然后选择“Delta Sharing”。
或者,在 “快速访问 ”页中,单击“ 增量共享 > ”按钮。
在“ 我共享 ”选项卡上,单击“ 新建收件人”。
输入 收件人姓名
对于 收件人类型,请选择“ 打开”。
选择 令牌。
(可选)设置 令牌生存期的过期时间(以秒、分钟、小时或天为单位),并从收件人创建时间开始计算。
选择 “设置过期时间” 以设置过期时间。 清除所选内容以允许令牌无限期生存。
如果选择 “设置过期” 并将字段留空,则令牌生存期默认为元存储配置中设置的收件人令牌生存期值。 请参阅 “修改收件人令牌生存期”。 有关更改令牌生存期和轮换令牌的信息,请参阅 “管理收件人令牌”。
(可选)输入注释。
单击“ 创建”。
复制激活链接。
或者,稍后可以获取激活链接。 请参阅 “获取激活”链接。
(可选)创建自定义 收件人属性。
在“收件人概述”选项卡上,单击“收件人”属性旁边的
。 然后添加属性名称(键)和 值。 有关详细信息,请参阅 “管理收件人属性”。
在笔记本或 Databricks SQL 查询编辑器中运行以下命令:
CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
[COMMENT "<comment>"];
还可以为收件人添加自定义属性。 有关详细信息,请参阅 “管理收件人属性”。
使用 Databricks CLI 运行以下命令。
databricks recipients create <recipient-name>
还可以为收件人添加自定义属性。 有关详细信息,请参阅 “管理收件人属性”。
输出包括与收件人共享的 activation_url
。
收件人是使用 authentication_type
的 TOKEN
创建的。
备注
创建收件人时,可以选择限制收件人对一组受限 IP 地址的访问。 还可以将 IP 访问列表添加到现有收件人。 请参阅 使用 IP 访问列表(开放共享)限制 Delta Sharing 收件人访问权限。
若要获取新收件人的激活链接,可以使用目录资源管理器、Databricks Unity 目录 CLI 或 DESCRIBE RECIPIENT
Azure Databricks 笔记本或 Databricks SQL 查询编辑器中的 SQL 命令。
如果收件人已下载凭据文件,则不会返回或显示激活链接。
需要的权限:元存储管理员、具有 USE RECIPIENT
特权的用户或收件人对象所有者。
在 Azure Databricks 工作区中,单击
目录。
在“目录”窗格顶部,单击
齿轮图标,然后选择“Delta Sharing”。
或者,在 “快速访问 ”页中,单击“ 增量共享 > ”按钮。
在“ 我共享 ”选项卡上,单击“ 收件人”,然后选择收件人。
在收件人详细信息页上,复制 “激活”链接。
在笔记本或 Databricks SQL 查询编辑器中运行以下命令。
DESCRIBE RECIPIENT <recipient-name>;
输出包括 activation_link
:
使用 Databricks CLI 运行以下命令。
databricks recipients get <recipient-name>
输出包括 activation_url
:
创建收件人和 创建共享后,可以授予收件人对这些共享的访问权限。
若要向接收者授予共享访问权限,可以使用目录资源管理器、Databricks Unity Catalog CLI,或者 Azure Databricks 笔记本或 Databricks SQL 查询编辑器中的 GRANT ON SHARE
SQL 命令。
所需的权限:下列其中一项:
- Metastore 管理员。
- 对共享和接收者对象((
USE SHARE
+SET SHARE PERMISSION
) 或共享所有者)和(USE RECIPIENT
或接收者所有者)拥有委托权限或所有权。
有关说明,请参阅 管理对 Delta 共享数据(适用于供应商)的访问权限。
必须让收件人了解如何访问与他们共享的数据。 使用安全通道共享 激活链接 和指向 使用说明的链接。
只能下载凭据文件一次。 收件人应将下载的凭据视为机密,不得将其共享在其组织外部。 如果您有顾虑凭据可能被不安全地处理,您可以随时 更换收件人的凭据 。 有关管理凭据以确保安全收件人访问的详细信息,请参阅 令牌的安全注意事项。
如果使用开放共享持有者令牌流与收件人共享数据,则可能需要轮换该收件人的令牌。 轮换令牌包括将现有令牌设置为过期,并用新的令牌和激活 URL 替换它。
在以下情况下,应轮换收件人的令牌并生成新的激活 URL:
- 现有收件人令牌即将过期时。
- 如果收件人丢失其激活 URL 或遭到入侵。
- 如果凭据在收件人下载后损坏、丢失或泄露。
- 当你修改元存储的接收令牌有效期时。 请参阅 “修改收件人令牌生存期”。
在任何给定时间,收件人最多可以有两个令牌:活动令牌和轮换令牌。 被轮换的令牌已被设置为过期,并将由当前有效的令牌替换。 在轮换令牌过期之前,尝试再次轮换令牌将导致错误。
当轮换收件人令牌时,可以选择将 --existing-token-expire-in-seconds
设置为当前收件人令牌(即要轮换的令牌)在过期前的秒数。 如果将值 0
设置为,则现有收件人令牌将立即过期。
Databricks 建议你将 --existing-token-expire-in-seconds
设置为相对较短的时间段,以便收件人组织有时间访问新的激活 URL,同时尽量减少收件人有两个活跃令牌的时间。 如果怀疑现有收件人令牌遭到入侵,Databricks 建议强制其立即过期。
如果收件人的现有激活URL尚未被访问,轮换现有令牌会使该激活URL失效并用新的URL替换。
如果所有收件人令牌都已过期,轮换令牌会将现有激活 URL 替换为新的 URL。 Databricks 建议你立即轮换或删除令牌已过期的收件人。
如果收件人激活链接无意中发送给错误的人或通过不安全通道发送,Databricks 建议您:
轮换收件人并将
--existing-token-expire-in-seconds
设置为0
。通过安全通道与预期收件人共享新的激活 URL。
访问激活 URL 后,再次向收件人授予对共享的访问权限。
在极端情况下,可以删除并重新创建收件人,而不是轮换收件人的令牌。
若要轮换收件人的令牌,可以使用目录资源管理器或 Databricks Unity 目录 CLI。
所需的权限:收件人对象所有者。
在 Azure Databricks 工作区中,单击
目录。
在左窗格中,展开“Delta Sharing”菜单,然后选择“由我共享”。
在“目录”窗格顶部,单击
齿轮图标,然后选择“Delta Sharing”。
或者,在 “快速访问 ”页中,单击“ 增量共享 > ”按钮。
在“ 我共享 ”选项卡上,单击“ 收件人”,然后选择收件人。
在“ 详细信息 ”选项卡上的“ 令牌过期”下,单击“ 轮换”。
在“轮换令牌”对话框中,可以将令牌的有效期设置为立即过期或在一段时间后过期。 有关何时过期现有令牌的建议,请参阅 令牌的安全注意事项。
单击“ 旋转”。
在“ 详细信息 ”选项卡上,复制新的 “激活”链接 ,并通过安全通道与收件人共享。 请参阅 “获取激活”链接。
使用 Databricks CLI 运行以下命令。 替换占位符值:
<recipient-name>
:收件人的姓名。<expiration-seconds>
:现有收件人令牌到期前的秒数。 在此期间,现有令牌将继续发挥作用。0
值表示现有令牌会立即过期。 有关何时过期现有令牌的建议,请参阅 令牌的安全注意事项。
databricks recipients rotate-token \ <recipient-name> \ <expiration-seconds>
获取收件人的新激活链接,并通过安全通道与收件人共享它。 请参阅 “获取激活”链接。
如果需要修改 Unity Catalog 元存储的默认收件人令牌生存期,可以使用 Catalog Explorer 或 Databricks Unity Catalog CLI。
备注
更改元存储的默认收件人令牌生存期时,现有收件人的收件人令牌生存期不会自动更新。 若要将新的令牌生存期应用于给定收件人,必须轮换其令牌。 请参阅 “管理收件人令牌”。
所需的权限:帐户管理员。
登录到 帐户控制台。
在边栏中,单击“
目录。
单击元存储名称。
在“Delta Sharing 收件人令牌生存期”下,单击“编辑”。
启用 “设置过期”。
输入秒数、分钟数、小时数或天数,然后选择度量单位。
单击“ 保存”。
如果禁用 “设置过期”,则收件人令牌不会过期。 Databricks 建议为令牌配置有效期限。
使用 Databricks CLI 运行以下命令。 将 12a345b6-7890-1cd2-3456-e789f0a12b34
替换为元数据存储 UUID,并将 86400
替换为收件人令牌过期前的秒数。 如果将此值 0
设置为,则收件人令牌不会过期。 Databricks 建议为令牌配置有效期限。
databricks metastores update \
12a345b6-7890-1cd2-3456-e789f0a12b34 \
--delta-sharing-recipient-token-lifetime-in-seconds 86400