You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Databricks Asset Bundle时如何从密钥库/机密范围获取机密?

解决Databricks Asset Bundle部署时从密钥库获取机密的问题

核心问题分析

从错误日志可以看出,部署验证阶段${var.workspace_host}未被正确替换为实际的Workspace主机名,导致Databricks CLI无法完成认证。这是因为:

  • Bundle部署/验证操作需要在CI环境中先获取合法的Workspace地址,才能建立连接完成后续操作
  • 混淆了DAB部署阶段的变量语法与任务运行时的机密引用语法

解决方案

方案1:通过Azure CI/CD管道从Key Vault传递变量(推荐用于部署阶段的Workspace配置)

1. 修正Bundle YAML的变量引用语法

DAB部署阶段的变量引用使用${var.variable_name}语法,而非任务运行时的$(...)。更新你的prod目标配置:

prod:
    workspace:
      host: ${var.workspace_host}
      root_path: /Workspace/a/b/.bundle/${bundle.name}/${bundle.target}
    variables:
      DEST_CATALOG: "schema"
      workspace_host: "" # 由CI管道注入实际值
      job_compute_policy_id: "" # 由CI管道注入实际值

2. 确保CI管道正确拉取Key Vault秘密

检查AzureKeyVault@2任务的配置,确认密钥库中存在db-workspace-host和db-compute-policy-id这两个秘密,且SecretsFilter已包含它们(或用*拉取所有):

- task: AzureKeyVault@2
  displayName: Azure Key Vault
  inputs:
    azureSubscription: service-connection
    KeyVaultName: 'kv-name'
    SecretsFilter: 'db-workspace-host,db-compute-policy-id' # 明确指定需要的秘密,比*更安全
    RunAsPreJob: true

3. 修正验证/部署脚本的变量传递格式

确保--var参数的格式正确,避免变量替换失败:

# 验证脚本
databricks bundle validate -t dev --var workspace_host=$(db-workspace-host) --var job_compute_policy_id=$(db-compute-policy-id)

# 部署脚本
databricks bundle deploy -t dev --var workspace_host=$(db-workspace-host) --var job_compute_policy_id=$(db-compute-policy-id)

若秘密值包含特殊字符,可使用双引号包裹参数:--var "workspace_host=$(db-workspace-host)"

4. 补充认证环境变量

确保CI管道中已注入ARM_CLIENT_ID、ARM_TENANT_ID这两个环境变量(与ARM_CLIENT_SECRET一起),用于完成Azure AD认证。


方案2:任务运行时引用Databricks机密范围(用于任务执行阶段的变量)

如果job_compute_policy_id是任务运行时需要的参数,而非部署阶段的配置,可以直接在Job任务中引用Databricks机密范围,无需通过CI管道传递:

jobs:
  your_job_name:
    tasks:
      - task_key: your_task
        spark_python_task:
          python_file: tasks/your_task.py
        parameters:
          - "--compute-policy-id"
          - "{{secrets/your_secret_scope/job_compute_policy_id}}"

注意:这种方式仅适用于任务执行阶段,部署阶段的workspace.host仍需通过CI管道从Key Vault获取。

验证调试步骤

  1. 本地测试:手动运行databricks bundle validate -t dev --var workspace_host=https://your-workspace-url,确认变量替换和认证正常
  2. 检查CI管道日志:确认AzureKeyVault@2任务已成功拉取目标秘密,且环境变量db-workspace-host存在正确值
  3. 检查DAB版本:确保使用的Databricks CLI版本≥0.200.0,避免旧版本的变量解析bug

内容的提问来源于stack exchange,提问作者Antony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 13:54:52