Povolení federace identit úloh pro GitHub Actions

Federace tokenů OAuth Databricks, označovaná také jako OpenID Connect (OIDC), umožňuje automatizovaným úlohám spuštěným mimo Databricks zabezpečený přístup k Databricks bez tajných kódů Databricks. Viz Ověřování přístupu k Azure Databricks pomocí federace tokenů OAuth.

Pro umožnění federace pracovních identit pro GitHub Actions:

  1. Vytvořit politiku federace
  2. Konfigurace souboru YAML gitHub Actions

Jakmile povolíte federaci identit úloh, sady SDK Databricks a rozhraní příkazového řádku Databricks automaticky načítají tokeny identity úloh z GitHubu a vyměňují je za tokeny OAuth Databricks.

Vytvořit zásady federace

Nejprve vytvořte zásady federace identit úloh. Pokyny najdete v tématu Konfigurace zásad federace pro hlavní službu. Pro GitHub nastavte pro zásadu následující hodnoty:

  • Organizace: Název vaší organizace na GitHubu Pokud je například adresa URL vašeho úložiště https://github.com/databricks-inc/data-platform, pak je organizace databricks-inc.
  • Skladiště: Název jednoho úložiště, které se má povolit, například data-platform.
  • Typ entity: Druh entity GitHubu reprezentovaný v sub deklaraci (předmětu) vašeho tokenu. Výchozí hodnota je Branch. Databricks doporučuje používat Environment, které můžete povolit nastavením atributu environment v souboru YAML GitHub Actions. Viz Nasazení do konkrétního prostředí.
  • Adresa URL vystavitele:https://token.actions.githubusercontent.com
  • Předmět: Řetězec vytvořený zřetězením hodnot z kontextu úlohy GitHub Actions
  • Publika: Databricks doporučuje toto nastavení na ID vašeho účtu Azure Databricks. Pokud ho vynecháte, použije se ve výchozím nastavení ID účtu.
  • Deklarace identity subjektu: (Volitelné) Deklarace identity JWT, která obsahuje hodnotu identity (sub) úlohy z tokenu OIDC. U GitHubu ponechte pole jako sub, které kóduje úložiště, větev, značku, žádost o přijetí změn nebo sloučení nebo prostředí, které aktivovalo pracovní postup. Pokud chcete provést ověření jako opakovaně použitelný pracovní postup místo volajícího úložiště, přečtěte si téma Ověření pomocí opakovaně použitelného pracovního postupu.

Například následující příkaz Databricks CLI vytvoří zásadu federace pro organizaci, která má název my-org a numerické ID servisního principálu 5581763342009999 služby Databricks:

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

Konfigurujte soubor YAML GitHub Actions

Dále nakonfigurujte soubor YAML GitHub Actions. Nastavte následující proměnné prostředí:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: Adresa URL pracovního prostoru Databricks
  • DATABRICKS_CLIENT_ID: ID servisního principálu (aplikace)
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

Ověření pomocí opakovaně použitelného pracovního postupu

Ve výchozím nastavení sub deklarace identifikuje volající úložiště. Pokud chcete provést ověření jako opakovaně použitelný pracovní postup místo volajícího úložiště, nastavte subject_claim na job_workflow_ref v zásadách federace. Každý tým může vyvolat opakovaně použitelný pracovní postup, ale pouze opakovaně použitelný pracovní postup se ověřuje pomocí Databricks.

Vytvořit zásady federace

Vytvořte zásadu federace, která se používá job_workflow_ref jako deklarace identity subjektu. Nastavte subject jako referenci na opakovaně použitelný soubor pracovního postupu:

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

Konfigurujte soubory YAML GitHub Actions

Vytvořte opakovaně použitelný pracovní postup, který se ověřuje pomocí Azure Databricks, a volající pracovní postup v libovolném úložišti, které ho vyvolá.

Následující příklad ukazuje opakovaně použitelný soubor pracovního postupu (.github/workflows/deploy.yml v úložišti sdílených pracovních postupů):

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

Následující příklad ukazuje volající pracovní postup v libovolném úložišti, které používá opakovaně použitelný pracovní postup:

on: workflow_dispatch

permissions:
  id-token: write
  contents: read

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

Note

Nastavte permissions: id-token: write pro volající pracovní postup, nikoli opakovaně použitelný pracovní postup. GitHub do tokenu OIDC zahrne pouze deklaraci identity job_workflow_ref při udělení id-token: write volajícího pracovního postupu.