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租户IDAZURE_CLIENT_ID:服务主体的客户端IDAZURE_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
相关产品推荐
相关产品推荐

