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

CI流水线中Databricks CLI令牌创建失败:无法配置默认凭据

问题根源

你的问题确实是Databricks CLI统一认证更新导致的——CLI v0.200.0及以上版本全面切换到了统一认证框架,彻底废弃了旧版中直接通过DATABRICKS_CLIENT_ID/DATABRICKS_CLIENT_SECRET环境变量进行服务主体认证的逻辑,所以原有脚本会触发默认认证链错误。

修复/迁移方案

方案1:临时降级到旧版CLI(快速恢复)

如果不想立刻调整认证逻辑,可以降级到v0.199.x版本,保留原有脚本逻辑:

  • 在CI流水线的bash脚本中先安装指定版本的CLI:
    pip install databricks-cli==0.199.0
    
  • 继续使用原来的环境变量设置和databricks tokens create命令即可。

方案2:迁移到统一认证框架(长期推荐)

针对服务主体认证,统一认证框架需要通过Azure AD令牌间接获取Databricks访问令牌,具体步骤如下:

步骤1:配置必要环境变量

在CI流水线中设置以下环境变量:

  • DATABRICKS_HOST:你的Databricks工作区URL(例如https://<workspace-id>.azuredatabricks.net)
  • AZURE_TENANT_ID:Azure租户ID
  • AZURE_CLIENT_ID:服务主体的客户端ID
  • AZURE_CLIENT_SECRET:服务主体的客户端密钥

步骤2:获取Azure AD访问令牌

在bash脚本中完成Azure服务主体登录,并获取Databricks资源的AD令牌:

# 登录Azure服务主体
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID

# 获取Databricks专用的AD令牌(资源ID为固定值,无需修改)
export DATABRICKS_AAD_TOKEN=$(az account get-access-token --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query accessToken -o tsv)

步骤3:执行Databricks令牌创建命令

通过DATABRICKS_AAD_TOKEN环境变量完成认证,调用令牌生成命令:

databricks tokens create --comment "CI-generated token" --lifetime-seconds 3600

替代配置方式:预配置CLI认证

也可以直接通过CLI命令完成认证配置,后续无需重复设置环境变量:

databricks configure set-host $DATABRICKS_HOST
databricks configure set-aad-token $(az account get-access-token --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query accessToken -o tsv)
# 之后直接执行令牌生成命令
databricks tokens create --comment "CI-generated token" --lifetime-seconds 3600
额外注意事项
  • 确保CI环境的Python版本兼容Databricks CLI v2.x(推荐3.8及以上)
  • 如果使用Azure DevOps/GitHub Actions等托管CI环境,优先使用官方Azure登录任务替代手动az login,更安全且无需手动安装Azure CLI
  • 生成的Databricks令牌建议设置最短必要生命周期(如1小时),降低安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 15:34:52