使用Azure AD认证触发Databricks Notebook时Github Action报错
问题排查与解决方案建议
针对你遇到的GitHub Action切换Azure AD认证后触发Databricks单元测试时的权限错误,以下是具体的排查方向和解决建议:
1. 定位错误中的资源ID(83958068369529)
- 这个数字大概率是Databricks的资源ID,优先检查目标作业的ID是否匹配:在Databricks工作区的作业页面,通过搜索栏输入该ID,确认是否为你要触发的单元测试作业。
- 如果不是作业ID,可通过Databricks工作区的审计日志(路径:
工作区管理 > 审计日志)搜索该SPN的操作记录,找到对应权限错误的条目,查看resource_type字段明确资源类型(可能是集群、笔记本或其他)。
2. 补充SPN的基础权限
即使你已给SPN赋予作业的「Can manage run」权限,GitHub Action内部可能会先调用Get Job API验证作业存在,这需要SPN对该作业拥有View权限。操作步骤:
- 进入目标作业的详情页,点击右上角的「权限」按钮;
- 添加你的服务主体(SPN),并授予「View」权限;
- 重新运行GitHub Action测试。
3. 验证GitHub Action的令牌有效性
Postman调用API正常但Action失败,可能是Action获取的Azure AD令牌存在差异:
- 在工作流中开启调试日志:在工作流文件中添加环境变量
ACTIONS_STEP_DEBUG: true,重新运行后查看Action的详细日志,提取获取到的Bearer令牌; - 用JWT解析工具(如jwt.io)解析令牌,检查
aud字段是否为2ff814a6-3304-4ab8-85cb-cd0e6f879c1d(Databricks服务的固定受众ID); - 如果受众不符,需确认GitHub Action的Azure AD配置是否正确,确保令牌是针对Databricks服务请求的。
4. 模拟Action的API调用流程
直接在工作流中用curl模拟Action的操作,排查是否为Action自身的逻辑问题:
- name: Test Databricks API with Azure AD env: DATABRICKS_HOST: ${{ secrets.DATABRICKS_HOST }} AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} run: | # 获取Azure AD令牌 TOKEN=$(curl -X POST "https://login.microsoftonline.com/$AZURE_TENANT_ID/oauth2/token" \ -F "grant_type=client_credentials" \ -F "client_id=$AZURE_CLIENT_ID" \ -F "client_secret=$AZURE_CLIENT_SECRET" \ -F "resource=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d" | jq -r .access_token) # 先调用Get Job API(模拟Action的前置检查) curl -H "Authorization: Bearer $TOKEN" "$DATABRICKS_HOST/api/2.1/jobs/get?job_id=83958068369529" # 再调用run-now API curl -X POST -H "Authorization: Bearer $TOKEN" "$DATABRICKS_HOST/api/2.1/jobs/run-now" -d '{"job_id": 83958068369529}'
如果Get Job API返回权限错误,说明确实需要补充View权限;如果两个API都正常,那大概率是GitHub Action预览版的逻辑缺陷。
5. 已知预览版缺陷参考
由于该功能处于公开预览阶段,部分用户反馈过Action的权限检查逻辑存在冗余:
- Action可能会额外检查作业关联的集群、笔记本等资源的权限,即使这些资源不需要直接操作;
- 部分场景下,Action对Azure AD令牌的处理存在bug,导致权限验证失败。
若以上排查后仍无法解决,可在Databricks官方论坛提交反馈,附带Action的完整调试日志和审计日志信息,以便官方定位预览版的问题。
内容的提问来源于stack exchange,提问作者Anupam Chand
相关产品推荐
相关产品推荐

