Számítási feladatok identitás-összevonásának engedélyezése a GitHub Actionshez

A Databricks OAuth-jogkivonat-összevonás, más néven OpenID Connect (OIDC) lehetővé teszi, hogy a Databricksen kívül futó automatizált számítási feladatok biztonságosan hozzáférjenek a Databrickshez Databricks-titkos kódok nélkül. Lásd : Az Azure Databricks hozzáférésének hitelesítése OAuth-jogkivonat-összevonással.

A számítási feladatok identitás-összevonásának engedélyezése a GitHub Actionshez:

  1. Szövetségi szabályzat létrehozása
  2. A GitHub Actions YAML-fájljának konfigurálása

A számítási feladatok identitás-összevonásának engedélyezése után a Databricks SDK-k és a Databricks CLI automatikusan lekéri a számítási feladatok identitási jogkivonatait a GitHubról, és kicserélik őket Databricks OAuth-jogkivonatokra.

Szövetségi politika létrehozása

Először hozzon létre egy számítási feladat identitás-összevonási szabályzatát. Útmutatásért tekintse meg a szolgáltatásnév összevonási szabályzatának konfigurálását. A GitHub esetében állítsa be a következő értékeket a szabályzathoz:

  • Szervezet: A Github-szervezet neve. Ha például az adattár URL-címe https://github.com/databricks-inc/data-platform, akkor a szervezet az databricks-inc.
  • Raktár: Az engedélyezendő egyetlen adattár neve, például data-platform.
  • Entitás típusa: A jogkivonat (tárgy) jogcímében sub képviselt GitHub-entitás típusa. Az alapértelmezett érték az Ág. A Databricks a Környezet használatát javasolja, amelyet a environment GitHub Actions YAML-fájljában lévő attribútum beállításával engedélyezheti. Lásd : Üzembe helyezés egy adott környezetben.
  • Kiállító URL-címe:https://token.actions.githubusercontent.com
  • Tárgy: A GitHub Actions munka kontextus értékeinek összefűzésével létrehozott karakterlánc.
  • Közönség: A Databricks azt javasolja, hogy állítsa be ezt az Azure Databricks-fiókazonosítóra. Ha nincs megadva, a rendszer alapértelmezés szerint a fiókazonosítót használja.
  • Tulajdonosi jogcím: (Nem kötelező) Az OIDC-jogkivonat számítási feladatidentitását (sub) tartalmazó JWT-jogcím. A GitHub esetében hagyja meg a mezőt a munkafolyamatot aktiváló adattárat, ágat, címkét, lekéréses/egyesítési kérelmet vagy környezetet kódoló mezőként sub. Ha a hívó adattár helyett újrahasználható munkafolyamatként szeretne hitelesíteni, olvassa el a Hitelesítés újrafelhasználható munkafolyamat használatával című témakört.

A következő Databricks CLI-parancs például egy összevonási szabályzatot hoz létre egy nevű my-org szervezet számára, és egy Databricks szolgáltatás felelősének numerikus azonosítójával 5581763342009999.

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
	"issuer": "https://token.actions.githubusercontent.com",
	"audiences": [
  	  "a2222dd9-33f6-455z-8888-999fbbd77900"
	],
	"subject": "repo:my-github-org/my-repo:environment:prod"
  }
}'

A GitHub Actions YAML-fájljának konfigurálása

Ezután konfigurálja a GitHub Actions YAML-fájlt. Állítsa be a következő környezeti változókat:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: A Databricks-munkaterület URL-címe
  • DATABRICKS_CLIENT_ID: A szolgáltatási főszereplő (alkalmazás) azonosítója
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: workflow_dispatch

permissions:
  id-token: write
  contents: read

jobs:
  my_script_using_wif:
    runs-on: ubuntu-latest
    environment: prod
    env:
      DATABRICKS_AUTH_TYPE: github-oidc
      DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
      DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Databricks CLI
        uses: databricks/setup-cli@main

      - name: Run Databricks CLI commands
        run: databricks current-user me

Hitelesítés újrafelhasználható munkafolyamat használatával

Alapértelmezés szerint a sub jogcím azonosítja a hívási adattárat. Ha a hívó adattár helyett újrahasználható munkafolyamatként szeretne hitelesíteni, állítsa subject_claimjob_workflow_ref be az összevonási szabályzatban. Bármely csapat meghívhatja az újrahasználható munkafolyamatot, de csak maga az újrahasználható munkafolyamat hitelesít a Databricks használatával.

Szövetségi politika létrehozása

Föderációs szabályzat létrehozása job_workflow_ref mint témakör állítás. Állítsa be az subject értékét az újrahasználható munkafolyamat-fájl referencia értékére:

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
    "issuer": "https://token.actions.githubusercontent.com",
    "audiences": [
      "a2222dd9-33f6-455z-8888-999fbbd77900"
    ],
    "subject": "my-github-org/shared-workflows/.github/workflows/deploy.yml@refs/heads/main",
    "subject_claim": "job_workflow_ref"
  }
}'

Konfigurálja a GitHub Actions YAML-fájlokat

Hozzon létre egy újrafelhasználható munkafolyamatot, amely hitelesít az Azure Databricks-szel, és egy hívási munkafolyamatot bármely adattárban, amely meghívja azt.

Az alábbi példa egy újrafelhasználható munkafolyamatfájlt mutat be (.github/workflows/deploy.yml a megosztott munkafolyamatok adattárában):

on:
  workflow_call:

jobs:
  deploy:
    runs-on: ubuntu-latest
    env:
      DATABRICKS_AUTH_TYPE: github-oidc
      DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
      DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Databricks CLI
        uses: databricks/setup-cli@main

      - name: Run Databricks CLI commands
        run: databricks current-user me

Az alábbi példa egy hívó munkafolyamatot mutat be az újrahasználható munkafolyamatot használó adattárakban:

on: workflow_dispatch

permissions:
  id-token: write
  contents: read

jobs:
  call-deploy:
    uses: my-github-org/shared-workflows/.github/workflows/deploy.yml@main

Megjegyzés:

Állítsa be permissions: id-token: write a hívási folyamatnál, nem az újrafelhasználható folyamatnál. GitHub csak akkor tartalmazza a job_workflow_ref jogcímet az OIDC-jogkivonatban, ha a id-token: write meg van adva a hívó munkafolyamatban.