如何使用服务主体/托管标识启用RBAC模式Azure密钥保管库的Databricks机密范围?
基于RBAC权限模型的Azure密钥保管库与Databricks机密范围配置流程
以下分别介绍服务主体和托管标识两种认证方式的具体操作步骤:
一、使用服务主体配置
1. 创建并记录服务主体信息
如果没有现成的服务主体,可通过Azure CLI或门户创建:
- CLI方式执行:
记录输出中的az ad sp create-for-rbac --name "databricks-kv-sp" --skip-assignmentappId(客户端ID)、password(客户端密钥)、tenantId(租户ID)。 - 门户方式:在Azure AD中创建“应用注册”,生成客户端密钥后记录上述信息。
2. 为服务主体分配Key Vault RBAC权限
需授予服务主体**机密用户(Secret User)**角色以读取密钥保管库中的机密:
- 登录Azure门户,进入目标KeyVault的「访问控制(IAM)」页
- 点击「添加角色分配」,选择「机密用户」角色
- 在「成员」选项中选择刚才创建的服务主体,完成分配
3. 在Databricks中创建密钥保管库机密范围
- 打开Azure Databricks工作区,在URL末尾追加
#secrets/createScope并访问(直接通过UI入口可能无法找到此页) - 填写机密范围名称(仅允许小写字母、数字、连字符),勾选「Azure Key Vault」选项
- 输入Key Vault的DNS名称(如
https://your-keyvault.vault.azure.net/)和资源ID(可从KeyVault的「属性」页复制) - 选择「服务主体」作为认证方式,填入之前记录的
appId、password、tenantId - 点击「创建」完成配置
二、使用托管标识配置
托管标识分为系统分配和用户分配两种,以下分别说明:
方式1:系统分配托管标识
1. 启用Databricks工作区的系统分配标识
- 登录Azure门户,进入目标Databricks工作区的「标识」页
- 切换到「系统分配」标签,开启状态并保存,记录生成的对象ID
2. 为系统分配标识分配Key Vault RBAC权限
同服务主体步骤2,在KeyVault的IAM中添加「机密用户」角色,指定此系统分配标识
3. 创建Databricks机密范围
- 访问Databricks工作区的
#secrets/createScope页面 - 填写范围名称,勾选「Azure Key Vault」选项
- 输入Key Vault的DNS名称和资源ID
- 选择「托管标识」作为认证方式,选择「系统分配」选项
- 点击「创建」完成配置
方式2:用户分配托管标识
1. 创建用户分配托管标识
- 在Azure门户中搜索「托管标识」,新建用户分配标识,记录其资源ID和客户端ID
2. 为用户分配标识分配Key Vault RBAC权限
同前,在KeyVault的IAM中添加「机密用户」角色到该标识
3. 将用户分配标识关联到Databricks工作区
- 进入Databricks工作区的「标识」页,切换到「用户分配」标签
- 点击「添加」,选择刚才创建的用户分配标识并保存
4. 创建Databricks机密范围
- 访问
#secrets/createScope页面,填写范围名称并勾选Azure Key Vault选项 - 输入Key Vault的DNS名称和资源ID
- 选择「托管标识」作为认证方式,选择对应的用户分配标识
- 点击「创建」完成配置
额外说明
- 权限变更可能需要5-10分钟生效,若测试时出现权限错误请稍后重试
- 若使用Databricks CLI创建范围,可参考以下命令:
- 服务主体方式:
databricks secrets create-scope --scope <scope-name> \ --scope-backend-type AZURE_KEYVAULT \ --backend-config "vault_uri=https://your-keyvault.vault.azure.net/" \ --backend-config "service_principal_client_id=<app-id>" \ --backend-config "service_principal_client_secret=<password>" \ --backend-config "service_principal_tenant_id=<tenant-id>" - 系统分配托管标识方式:
databricks secrets create-scope --scope <scope-name> \ --scope-backend-type AZURE_KEYVAULT \ --backend-config "vault_uri=https://your-keyvault.vault.azure.net/" \ --backend-config "managed_identity_id=system" - 用户分配托管标识方式:
databricks secrets create-scope --scope <scope-name> \ --scope-backend-type AZURE_KEYVAULT \ --backend-config "vault_uri=https://your-keyvault.vault.azure.net/" \ --backend-config "managed_identity_id=<user-assigned-identity-resource-id>"
- 服务主体方式:
内容的提问来源于stack exchange,提问作者John Kiragu
相关产品推荐
相关产品推荐

