Aktivera arbetsbelastnings-identitetsfederering för GitHub Actions

Databricks OAuth-tokenfederation, även kallat OpenID Connect (OIDC), gör att dina automatiserade arbetsbelastningar som körs utanför Databricks på ett säkert sätt kan komma åt Databricks utan Databricks-hemligheter. Se Autentisera åtkomst till Azure Databricks med hjälp av OAuth-tokenfederation.

Så här aktiverar du arbetsbelastningsidentitetsfederation för GitHub Actions:

  1. Skapa en federationsprincip
  2. Konfigurera YAML-filen för GitHub Actions

När du har aktiverat arbetsbelastningsidentitetsfederation hämtar Databricks SDK:er och Databricks CLI automatiskt arbetsbelastningsidentitetstoken från GitHub och utbyter dem mot Databricks OAuth-token.

Skapa en federationsprincip

Skapa först en princip för arbetsbelastningsidentitetsfederation. Anvisningar finns i Konfigurera en federationsprincip för tjänstens huvudnamn. För GitHub anger du följande värden för principen:

  • Organisation: Namnet på din GitHub-organisation. Om din lagringsplats-URL till exempel är https://github.com/databricks-inc/data-platform, då är organisationen databricks-inc.
  • Databasen: Namnet på den enda lagringsplats som ska tillåtas, till exempel data-platform.
  • Entitetstyp: Den typ av GitHub-entitet som representeras i anspråket sub (ämne) för din token. Standardvärdet är Branch. Databricks rekommenderar att du använder Miljö, som du kan aktivera genom att ange environment attributet i YAML-filen för GitHub Actions. Se Distribuera till en specifik miljö.
  • Utfärdar-URL:https://token.actions.githubusercontent.com
  • Subjekt: En sträng som bildas genom att sammanfoga värden från GitHub Actions-jobbkontexten. Det nödvändiga formatet beror på ditt arkivs GitHub-anspråksub. Se följande anteckning.
  • Publik: Databricks rekommenderar att du ställer in detta på ditt Azure Databricks-konto-ID. Om det utelämnas används konto-ID:t som standard.
  • Ämnesanspråk: (valfritt) JWT-anspråket som innehåller värdet för arbetsbelastningsidentiteten (sub) från OIDC-token. För GitHub lämnar du fältet som sub, som kodar lagringsplatsen, grenen, taggen, pull/merge-begäran eller miljön som utlöste arbetsflödet. Information om hur du autentiserar som ett återanvändbart arbetsflöde i stället för den anropande lagringsplatsen finns i Autentisera med ett återanvändbart arbetsflöde.

Note

Azure Databricks matchar Subject exakt mot tokens sub claim, och GitHub:s sub format beror på när arkivet skapades. Repositorier som skapats, bytt namn eller överförts den 15 juli 2026 eller därefter inkluderar numeriska organisations- och arkiv-ID:n, såsom repo:octo-org@123456/octo-repo@456789:environment:prod. Tidigare arkiv använder repo:<org>/<repo>:environment:prod, såvida de inte väljer att använda det oföränderliga formatet.

För att hitta din repositories exakta sub, se Om säkerhetshärdning med OpenID Connect. Det immutabla formatet finns inte tillgängligt på GitHub Enterprise Server.

Till exempel skapar följande Databricks CLI-kommando en federationspolicy för en organisation med namnet my-org och ett Databricks-tjänsteprincipal-numeriskt ID på 5581763342009999. Exempelämnet använder endast namnformat för ett repo som skapades före den 15 juli 2026:

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"
  }
}'

Konfigurera YAML-filen för GitHub Actions

Konfigurera sedan YAML-filen GitHub Actions. Ange följande miljövariabler:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: Url för Din Databricks-arbetsyta
  • DATABRICKS_CLIENT_ID: Tjänstens huvudnamn (program)-ID
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

Autentisera med ett återanvändbart arbetsflöde

Som standard identifierar anspråket sub den anropande lagringsplatsen. Om du vill autentisera som ett återanvändbart arbetsflöde i stället för den anropande lagringsplatsen anger du subject_claim till job_workflow_ref i federationsprincipen. Alla team kan anropa det återanvändbara arbetsflödet, men endast själva återanvändningsbara arbetsflödet autentiserar med Databricks.

Skapa en federationsprincip

Skapa en federationsprincip som ämnesanspråk med job_workflow_ref. Ange subject som referens för den återanvändbara arbetsflödesfilen:

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"
  }
}'

Konfigurera GitHub Actions YAML-filer

Skapa ett återanvändbart arbetsflöde som autentiserar med Azure Databricks och ett anropande arbetsflöde på alla lagringsplatser som anropar det.

I följande exempel visas en återanvändbar arbetsflödesfil (.github/workflows/deploy.yml i lagringsplatsen för delade arbetsflöden):

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

I följande exempel visas ett anropsarbetsflöde på alla lagringsplatser som använder det återanvändbara arbetsflödet:

on: workflow_dispatch

permissions:
  id-token: write
  contents: read

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

Note

Ställ in permissions: id-token: write på det anropande arbetsflödet, inte det återanvändbara arbetsflödet. GitHub innehåller endast anspråket job_workflow_ref i OIDC-token när id-token: write beviljas i det anropande arbetsflödet.