使用服务主体从DevOps Pipeline调用Databricks API的问题咨询
访问令牌自动刷新方案
不用手动实现令牌刷新逻辑,两种生产常用方案可直接使用:
- 如果你在Azure DevOps Pipeline中直接调用接口:使用Azure CLI内置命令动态生成令牌,每次调用Databricks API前执行一次以下命令获取最新有效令牌即可,Azure CLI会自动处理身份凭证的缓存和刷新,无需额外维护:
只需要提前在DevOps中配置好Azure资源管理器服务连接,关联到你这个服务主体即可。az account get-access-token --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d --query accessToken -o tsv - 如果你是用代码封装调用逻辑:使用对应开发语言的Azure Identity SDK,直接初始化
ClientSecretCredential对象传入服务主体的客户端ID、租户ID、客户端密钥,调用API时SDK会自动判断令牌有效期,过期后自动刷新,完全不需要自行实现刷新逻辑。
403未授权错误补充配置
你已经配置的Azure层面角色、API权限是必要前提,但还需要完成Databricks工作区层面的权限配置:
- 首先将服务主体添加到Databricks工作区:使用工作区管理员账号登录Databricks,进入「管理控制台」-「用户和组」,点击添加用户,输入服务主体的客户端ID(应用ID)完成添加,可根据需要授予普通用户或工作区管理员权限。
- 配置资源级权限:如果你调用的API涉及具体作业、集群、Notebook等资源,需要进入对应资源的权限配置页面,添加服务主体并授予对应操作权限(比如作业的运行权限、集群的使用权限)。
- 验证令牌请求参数:确认你请求AAD令牌时的
resource参数值为固定值2ff814a6-3304-4ab8-85cb-cd0e6f879c1d,参数错误也会导致令牌无效触发403。 - 统一目录权限配置:如果你的Databricks开启了统一目录(Unity Catalog),还需要给服务主体授予对应目录、Schema、表的访问权限,否则访问数据相关API也会返回403。
内容的提问来源于stack exchange,提问作者romanzdk
相关产品推荐
相关产品推荐

