Important
此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版。
外部机密将 Unity Catalog 架构连接到外部机密管理器。 与其让 Azure Databricks 存储秘密值,这些秘密会保留在你的云秘密管理器中,并以可保护的对象形式出现在 Unity 目录中,供你管理和引用。
- 关于 Unity 目录秘密以及 Azure Databricks 为你存储和管理的秘密的介绍,请参见 Unity 目录中的秘密。
- 要让架构使用外部密钥管理器作为后端支持,请参见 在 Unity Catalog 中配置外部密钥。
外部秘密的工作原理
你要根据模式配置秘密后端。 默认情况下,Azure Databricks 会存储和管理模式中的每个秘密,除非有外部秘密管理器支持。 图式不能混合两者。
当一个模式由外部秘密管理器支持时,Azure Databricks 会做以下操作:
-
显示连接可以列出的秘密:连接允许列出的每个秘密都作为 Unity 目录秘密出现在目录资源管理器和
dbutilsUnity 目录 REST API 中。 命名有限制。 参见 命名限制。 - 按需读取值:Azure Databricks 不会在 Unity 目录中存储秘密值。 每次检索都直接从外部秘密管理器读取当前值,这会增加延迟并可能产生云服务提供商的成本。 检索到的值可以像其他秘密一样缓存在请求它们的计算中。
-
通过 Unity Catalog 权限控制访问:
READ SECRET和REFERENCE SECRET以及权限继承,其适用方式与 Azure Databricks 管理的机密相同。 由于外部机密为只读,Unity Catalog 会拒绝CREATE SECRET、WRITE SECRET和删除操作。 请参阅限制。 所有对外部秘密管理器的访问都通过连接的服务凭证进行,因此云端审计日志将访问权限归属于该身份,而 Unity 目录的审计日志仍记录 Azure Databricks 用户。
列出架构的密钥会触发导入。 它不是连续的后台同步。导入是异步的,因此 Unity 目录只有在后续列表触发导入后,才会反映从外部秘密管理器中添加或移除的秘密,对于拥有大量秘密的存储,导入过程可能需要几分钟。 读取特定的秘密只导入或刷新该秘密,每次读取获取最新的值。 当你在外部秘密管理器中永久删除某个秘密时,Azure Databricks 会移除对应的 Unity 目录秘密,包括其元数据、权限和标签。
命名限制
外部秘密名称必须符合 Unity 目录的命名规范才能导入:
- Unity 目录不会导入超过248字符的名字。
- Unity Catalog 的机密名称不区分大小写。 如果两个外部密钥仅字母大小写不同,Unity Catalog 只会使用最先导入的那个,并忽略其余的密钥。
- Unity 目录替换其不支持的字符:
.变为:和/变|为 。 Azure Databricks 建议避免在外部秘密名称中使用这些字符。
管理秘密配额
Unity Catalog 限制架构和元存储可容纳的机密数量。 请参阅限制。 如果一个模式的秘密数量超过配额允许,Azure Databricks 会先在外部秘密管理器中按创建日期导入最早的秘密,直到配额为止,其余部分则不导入。 仅在 Azure Databricks 中公开所需的机密,以使架构保持在配额范围内:
将该连接指向一个专用的 密钥保管库,该保管库中仅存放你希望在 Azure Databricks 中可用的机密。
局限性
除了适用于所有 Unity Catalog 机密的限制外,由外部后端支持的机密还具有以下限制:
- Unity Catalog 中为只读:在 Azure Databricks 中,你无法在外部支持的架构中创建、更新、重命名或删除机密。 在外部秘密管理器中管理这些秘密。
- 每个模式一个后端:模式中的所有秘密都使用同一个后端。 架构不能混用 Azure Databricks 管理的机密和由外部后端提供支持的机密。
- 切换后端会移除已导入的机密信息:更改架构的后端或将其指向其他连接,会移除之前从外部导入到该架构中的机密信息,包括其 Unity Catalog 元数据、权限和标签。
- 不支持跨云访问:请使用工作区所在云平台原生的密钥管理器来为架构提供支持。
- 读取延迟和成本:每次读取都会从外部秘密管理器获取值,这会增加延迟并可能产生云服务提供商的成本。
- 最终一致性列表:在外部机密管理器中添加或删除的机密,可能需要几分钟才会显示在 Unity Catalog 中,尤其是在大型机密存储中。
- 无标签过滤:Azure 密钥保管库 不支持通过标签过滤导入的秘密。
- 已禁用和已删除的机密:已禁用的 密钥保管库 机密会显示在 Unity Catalog 中,但在重新启用之前无法读取其值。 Unity Catalog 不再显示已软删除的机密。 在 密钥保管库 中将其恢复,使其再次可用。
Note
数据所在地。 如果支持模式的外部秘密管理器与读取该模式的元存储或工作区处于不同区域,秘密值及其元数据会跨越区域。 Azure Databricks 不保证对外部机密进行区域内处理。
Note
秘密中的个人数据。 外部秘密名称和数值可能包含个人数据。 除非你的使用场景确有需要,否则你有责任确保其中不包含个人数据。
其他资源
| Feature | Description |
|---|---|
| 在 Unity 目录中配置外部秘密 | 将 AWS Secrets Manager 或 Azure 密钥保管库 用作架构后端,并读取导入的机密。 |
| Unity Catalog 中的机密 | 创建、治理和管理 Azure Databricks 存储在 Unity 目录中的秘密。 |