跨订阅场景下,如何通过Azure发布管道使用AZ Cli创建Key Vault托管的Databricks密钥范围
跨订阅场景下,如何通过Azure发布管道使用AZ Cli创建Key Vault托管的Databricks密钥范围
我来帮你梳理这个跨订阅场景下的实现细节,结合你给出的现有配置和命令,咱们一步步来优化和验证:
你的当前配置梳理
先确认下你提到的现有环境设置,确保咱们的分析是基于正确的前提:
- Azure DevOps服务连接仅拥有目标Key Vault的Key Vault Contributor权限
- Key Vault与Databricks集群处于不同的Azure订阅
- 已将服务连接的对象ID加入Databricks管理员组
- 限制条件:无法给其他主体分配Key Vault Contributor权限
修正后的完整命令示例
你当前的命令存在换行截断的问题,我帮你整理成可直接执行的完整命令,同时补充跨订阅场景下的关键参数:
# 安装databricks-cli工具 pip install databricks-cli # 获取针对Databricks资源的访问令牌(指定Key Vault所在的订阅ID,确保服务连接能访问该订阅) ACCESS_TOKEN=$(az account get-access-token --subscription <替换为KeyVault的订阅ID> --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query accessToken --output tsv) # 设置Databricks环境变量(确保Host地址正确) export DATABRICKS_HOST=https://xxxxx123445.12.azuredatabricks.net export DATABRICKS_TOKEN=$ACCESS_TOKEN # 创建Key Vault托管的密钥范围(修正参数换行,确保资源ID和DNS名称完整) databricks secrets create-scope --scope 'nexussecret' \ --scope-backend-type 'AZURE_KEYVAULT' \ --resource-id '/subscriptions/xxxxxxxxxxbe5f-xxxxx/resourceGroups/rg-tst-we-test-keyvault/providers/Microsoft.KeyVault/vaults/eu-test--1xy' \ --dns-name 'https://eu-test--1xy.vault.azure.net'
跨订阅场景下的关键注意事项
订阅权限验证:
虽然服务连接有Key Vault的Contributor权限,但要确保它同时拥有Key Vault所在订阅的Reader权限(至少),否则az account get-access-token无法获取到有效的令牌来访问跨订阅的资源。Databricks权限确认:
请再次验证服务连接的对象ID确实已经被添加到Databricks的管理员组中,默认管理员组拥有创建密钥范围的权限,但如果有自定义权限设置,需要确保该组的权限未被限制。管道任务执行逻辑:
在Azure发布管道中,建议将所有命令放在同一个Bash任务中执行,避免环境变量在不同任务间失效;如果是使用PowerShell任务,需要调整环境变量的设置方式(比如用$env:DATABRICKS_HOST代替export)。Key Vault防火墙配置:
如果你的Key Vault启用了防火墙,需要做以下任一配置:- 允许Azure DevOps代理的IP地址访问Key Vault
- 开启Key Vault的“允许受信任的Microsoft服务访问此密钥保管库”选项(Databricks属于受信任服务)
备注:内容来源于stack exchange,提问作者ramesh reddy
相关产品推荐
相关产品推荐

