在 Azure Key Vault 支持的 Databricks 中创建秘密范围失败

Posted

技术标签:

【中文标题】在 Azure Key Vault 支持的 Databricks 中创建秘密范围失败【英文标题】:Creating a Secret Scope in Databricks backed by Azure Key Vault fails 【发布时间】:2019-10-25 11:49:59 【问题描述】:

您可以在由 Azure Keyvault 支持的 Databricks 中创建范围,而不是使用 Databricks CLI。但是,当您尝试创建 Scope 时,会显示一条晦涩的错误消息(有拼写错误!)。似乎没有多少人遇到此错误:

“向 KeyVault 的 Databricks 服务主体授予读取/列表权限时发生内部错误:XYZ”

在这种情况下,将管理主体设置为所有用户没有帮助。

【问题讨论】:

【参考方案1】:

我认为这是 Azure AD 中的服务主体问题。我登录 Databricks 时使用的这个特定用户不是 AD 贡献者,仅在 Databricks 和 Keyvault 服务上具有贡献者角色。我在 AD 中找不到 Databricks 的任何默认对象 ID,因此我假设它正在动态创建服务主体并将 Databricks 与 Keyvault 连接(我可能在这里错了 - 当您启用 Databricks 资源提供程序时它可能已经存在于 AD 中) .

以具有创建服务主体权限的管理员身份登录解决了该问题。之后,您可以在 Key Vault 中看到用于密钥检索的 DB 服务主体:

【讨论】:

“AzureDatabricks”服务主体已存在;它在 Azure Active Directory 中作为企业应用程序 (portal.azure.com/#blade/Microsoft_AAD_IAM/ManagedAppMenuBlade/…)。您不需要创建服务主体的权限即可使此过程正常工作,但您需要拥有 Key Vault 的所有者权限,以便它可以为“AzureDatabricks”创建访问策略。【参考方案2】:

正如@rcabr 在他的上述评论中提到的,Enterprize 应用程序中已经有一个名为“AzureDatabricks”的 SP,您需要获取对象 ID 详细信息并将其添加到密钥保管库的访问策略中。这样,Databricks 将能够访问 KeyVault

【讨论】:

我试图在广告企业应用程序菜单中搜索这个企业应用程序,但无法找到。于是我直接去 KV IAM 搜索 AzureDataBricks 它出现并分配了

以上是关于在 Azure Key Vault 支持的 Databricks 中创建秘密范围失败的主要内容,如果未能解决你的问题,请参考以下文章

如何保护 Azure Key Vault 中的 blob 存储访问密钥

Azure Key Vault 使用Azure Portal创建和查看Azure Key Vault

Angular - Azure Key Vault 管理 Vault 访问机密

使用 Azure Key Vault 轮换机密

Azure Key Vault 入门

Azure Key Vault 机密查询