使用 Azure AD 身份验证触发 databricks 笔记本时出现 Github 操作错误

问题描述 投票:0回答:1

我正在遵循此链接中所述的软件最佳实践指南。

我目前陷入了第 6 步,我尝试使用 github 操作工作流程来触发 databricks 上的单元测试。该文档讨论了使用访问令牌,但也建议改用 Azure AD/Entra ID。

我使用访问令牌成功运行了 github 工作流程,并尝试将其更新为使用 Azure AD。我按照此处给出的步骤进行操作。

首先,我创建了一个带有秘密的应用程序注册,并为其提供了对我的工作区的访问权限。然后,我在工作区中添加了 SPN,并为其授予了特定 Databricks 作业的“可以管理运行”权限。 github操作工作流程如下。

name: Run pre-merge Databricks tests

on:
  pull_request:
  workflow_dispatch:

env:
  # Replace this value with your workspace instance name.
  DATABRICKS_HOST: https://adb-xxxxxxxxxxxxxxxxxxx.azuredatabricks.net

jobs:
  unit-test-notebook:
    runs-on: ubuntu-latest
    timeout-minutes: 15

    steps:
      - name: Generate AAD Token
        run: |
          echo "DATABRICKS_TOKEN1=$(curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
          https://login.microsoftonline.com/${{ secrets.AZURE_SP_TENANT_ID }}/oauth2/v2.0/token \
          -d 'client_id=${{ secrets.AZURE_SP_APPLICATION_ID }}' \
          -d 'grant_type=client_credentials' \
          -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
          -d 'client_secret=${{ secrets.AZURE_SP_CLIENT_SECRET }}' |  jq -r  '.access_token')" >> $GITHUB_ENV
      - name: Checkout repo
        uses: actions/checkout@v2
      - name: Run test notebook
        uses: databricks/run-notebook@main
        with:
          databricks-token: $DATABRICKS_TOKEN1
          local-notebook-path: notebooks/run_unit_tests.py
          existing-cluster-id: 1005-025142-oylnzzyy
          git-commit: "${{ github.event.pull_request.head.sha }}"

          # Grant all users view permission on the notebook's results, so that they can
          # see the result of the notebook, if they have related access permissions.
          access-control-list-json: >
            [
              {
                "group_name": "users",
                "permission_level": "CAN_VIEW"
              }
            ]
          run-name: "EDA transforms helper module unit tests"

当我运行此命令时,github 操作失败并出现以下错误。

Error: {"error_code":"PERMISSION_DENIED","message":"*** does not have View permissions on 83958068369529. Please contact the owner or an administrator for access."}

我无法找到有关此错误的任何信息,也无法判断 83958068369529 与什么相关。

为了进一步挖掘,在使用 AD 凭据从 Azure AD 获取不记名令牌后,我尝试通过 Postman 触发正在运行的 Databricks 作业 API,并且效果也很好。这告诉我 SPN 上的权限是正确的,并且 Databricks github 操作本身可能存在一些问题。

如果我查看此链接,它表示该功能处于公共预览状态。我想联系社区,检查是否有其他人遇到过类似的问题,或者这是否是此功能的测试版的记录问题。

github-actions azure-databricks cicd
1个回答
0
投票

您可以尝试根据您的要求将 Databricks 中的服务主体(您在 Entra 中创建)添加到用户组管理员或用户吗?

服务主体需要分配到一个组才能拥有工作区的权限

© www.soinside.com 2019 - 2024. All rights reserved.