本文介绍如何为无法访问已启用 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 >”按钮。
在“ 我共享 ”选项卡上,单击“ 新建收件人”。
输入 收件人姓名
对于 收件人类型,请选择“ 打开”。
选择令牌。
(可选)设置 令牌生存期 的过期时间(以秒、分钟、小时或天为单位),自收件人创建时间起。 选择 “设置过期时间” 以设置过期时间。 清除所选内容以允许令牌无限期生存。
如果选择 “设置过期” 并将字段留空,则令牌生存期默认为元存储配置中设置的收件人令牌生存期值。 请参阅 “修改收件人令牌生存期”。 有关更改令牌生存期和轮换令牌的信息,请参阅 “管理收件人令牌”。
(可选)输入注释。
单击 “创建” 。
复制激活链接。
或者,稍后可以获取激活链接。 请参阅 “获取激活”链接。
(可选)创建自定义 收件人属性。
在“收件人概述”选项卡上,单击
Edit icon“收件人”属性旁边的。 然后添加属性名称(键)和 值。 有关详细信息,请参阅 “管理收件人属性”。
SQL
在笔记本或 Databricks SQL 查询编辑器中运行以下命令:
CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
[COMMENT "<comment>"];
还可以为收件人添加自定义属性。 有关详细信息,请参阅 “管理收件人属性”。
命令行界面 (CLI)
使用 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 >”按钮。
在“ 我共享 ”选项卡上,单击“ 收件人”,然后选择收件人。
在收件人详细信息页上,复制 “激活”链接。
SQL
在笔记本或 Databricks SQL 查询编辑器中运行以下命令。
DESCRIBE RECIPIENT <recipient-name>;
输出包括 activation_link
:
命令行界面 (CLI)
使用 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 Sharing 数据共享的访问权限(适用于提供者)。
向收件人发送其连接信息
必须让收件人了解如何访问与他们共享的数据。 使用安全通道共享 激活链接 和指向 使用说明的链接。
只能下载凭据文件一次。 收件人应将下载的凭据视为机密,不得将其共享在其组织外部。 如果您担心凭据可能处理得不安全,您可以随时更换收件人的凭据。 有关管理凭据以确保安全收件人访问的详细信息,请参阅 令牌的安全注意事项。
管理收件人令牌
如果使用开放共享持有者令牌流与收件人共享数据,则可能需要轮换该收件人的令牌。 轮换令牌包括将现有令牌设置为过期,并用新的令牌和激活 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 >”按钮。
在“ 我共享 ”选项卡上,单击“ 收件人”,然后选择收件人。
在“ 详细信息 ”选项卡上的“ 令牌过期”下,单击“ 轮换”。
在“轮换令牌”对话框中,可以将令牌的有效期设置为立即过期或在一段时间后过期。 有关何时过期现有令牌的建议,请参阅 令牌的安全注意事项。
单击“ 旋转”。
在“ 详细信息 ”选项卡上,复制新的 “激活”链接 ,并通过安全通道与收件人共享。 请参阅 “获取激活”链接。
命令行界面 (CLI)
使用 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 建议为令牌配置有效期限。
命令行界面 (CLI)
使用 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