如何基于Azure Databricks与Azure DevOps实现无PAT的CI-CD仓库更新
无需个人PAT实现Databricks仓库更新的CI/CD流程
核心思路
不用个人PAT的核心是通过Azure AD服务主体完成两层认证:一是服务主体与Databricks工作区的身份认证,二是服务主体与Azure DevOps Git仓库的SSH密钥认证,替代传统的PAT方式。
具体步骤
1. 配置Azure AD服务主体权限
- 在Azure AD注册服务主体,记录其应用ID和客户端密钥(或证书)。
- 在Azure DevOps目标仓库的「设置-存储库权限」中添加该服务主体,分配「Contributor」权限,确保能读写仓库内容。
- 在Databricks工作区中,给服务主体分配「Workspace Admin」或针对性的「Repos管理权限」,保证能执行仓库更新操作。
2. 为服务主体配置Git SSH凭证
- 为服务主体生成SSH密钥对(用
ssh-keygen命令生成,无需设置密码)。 - 在Azure DevOps仓库的「设置-SSH公钥」中添加服务主体的SSH公钥,关联到服务主体的应用ID。
- 用Terraform配置Databricks的Git凭证,替换原PAT为SSH密钥:
resource "databricks_git_credential" "ado_sp" { git_username = "<服务主体应用ID>" git_provider = "azureDevOpsServices" ssh_public_key = "<服务主体SSH公钥内容>" ssh_private_key = "<服务主体SSH私钥内容>" }
执行terraform apply后,Databricks工作区就会关联服务主体的SSH凭证,无需再用个人PAT。
3. CI/CD管道中用服务主体令牌认证Databricks
在Azure DevOps管道中执行以下步骤完成仓库更新:
- 用Azure CLI获取服务主体的Databricks访问令牌:
az login --service-principal -u <服务主体应用ID> -p <客户端密钥> --tenant <租户ID> DATABRICKS_TOKEN=$(az account get-access-token --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query accessToken -o tsv)
- 配置Databricks CLI使用该令牌:
databricks configure --aad-token --host <Databricks工作区URL>
- 执行仓库更新命令:
databricks repos update --path /Repos/<目标路径> --branch <分支名>
4. 权限验证
- 测试服务主体能否通过SSH方式克隆Azure DevOps仓库。
- 确认服务主体在Databricks中能查看、更新目标仓库。
内容的提问来源于stack exchange,提问作者pythonist
相关产品推荐
相关产品推荐

