Mengaktifkan federasi identitas beban kerja untuk GitHub Actions

Federasi token OAuth Databricks, juga dikenal sebagai OpenID Connect (OIDC), memungkinkan beban kerja otomatis Anda yang berjalan di luar Databricks untuk mengakses Databricks dengan aman tanpa rahasia Databricks. Lihat Mengautentikasi akses ke Azure Databricks menggunakan federasi token OAuth.

Untuk mengaktifkan federasi identitas beban kerja untuk GitHub Actions:

  1. Membuat kebijakan federasi
  2. Konfigurasikan file YAML GitHub Actions

Setelah Anda mengaktifkan federasi identitas beban kerja, Databricks SDK dan Databricks CLI secara otomatis mengambil token identitas beban kerja dari GitHub dan menukarnya dengan token OAuth Databricks.

Membuat kebijakan federasi

Pertama, buat kebijakan federasi identitas beban kerja. Untuk petunjuknya, lihat Mengonfigurasi kebijakan federasi perwakilan layanan. Untuk GitHub, atur nilai berikut untuk kebijakan:

  • Organisasi: Nama organisasi Github Anda. Misalnya, jika URL repositori Anda adalah https://github.com/databricks-inc/data-platform, maka organisasinya adalah databricks-inc.
  • Repositori: Nama repositori tunggal yang diizinkan, seperti data-platform.
  • Jenis entitas: Jenis entitas GitHub yang diwakili dalam sub klaim (subjek) token Anda. Defaultnya adalah Cabang. Databricks merekomendasikan penggunaan Environment, yang dapat Anda aktifkan dengan mengatur environment atribut dalam file YAML GitHub Actions Anda. Lihat Menyebarkan ke lingkungan tertentu.
  • URL Pengeluar Sertifikat:https://token.actions.githubusercontent.com
  • Subyek: String yang dibentuk dengan menggabungkan nilai dari konteks pekerjaan GitHub Actions.
  • Khalayak: Databricks merekomendasikan untuk mengatur ini ke ID akun Azure Databricks Anda. Jika dihilangkan, ID akun digunakan secara default.
  • Klaim subjek: (Opsional) Klaim JWT yang berisi nilai identitas beban kerja (sub) dari token OIDC. Untuk GitHub, biarkan bidang sebagai sub, yang mengodekan repositori, cabang, tag, permintaan pull/merge, atau lingkungan yang memicu alur kerja. Untuk mengautentikasi sebagai alur kerja yang dapat digunakan kembali daripada repositori panggilan, lihat Mengautentikasi menggunakan alur kerja yang dapat digunakan kembali.

Misalnya, perintah Databricks CLI berikut membuat kebijakan federasi untuk organisasi bernama my-org dan ID numerik perwakilan layanan Databricks dari 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"
  }
}'

File YAML GitHub Actions dikonfigurasi

Selanjutnya, konfigurasikan file YAML GitHub Actions. Atur variabel lingkungan berikut:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: URL ruang kerja Databricks Anda
  • DATABRICKS_CLIENT_ID: ID prinsipal layanan (aplikasi)
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

Mengautentikasi menggunakan alur kerja yang dapat digunakan kembali

Secara default, sub klaim mengidentifikasi repositori panggilan. Untuk mengautentikasi sebagai alur kerja yang dapat digunakan kembali daripada repositori panggilan, atur subject_claim ke job_workflow_ref dalam kebijakan federasi. Setiap tim dapat memanggil alur kerja yang dapat digunakan kembali, tetapi hanya alur kerja yang dapat digunakan kembali yang diautentikasi dengan Databricks.

Membuat kebijakan federasi

Buat kebijakan federasi menggunakan job_workflow_ref sebagai klaim subjek. Atur subject ke ref file alur kerja yang dapat digunakan kembali:

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

Mengonfigurasi file YAML GitHub Actions

Buat alur kerja yang dapat digunakan kembali yang mengautentikasi dengan Azure Databricks, dan alur kerja panggilan di repositori apa pun yang memanggilnya.

Contoh berikut menunjukkan file alur kerja yang dapat digunakan kembali (.github/workflows/deploy.yml di repositori alur kerja bersama):

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

Contoh berikut menunjukkan alur kerja panggilan di repositori apa pun yang menggunakan alur kerja yang dapat digunakan kembali:

on: workflow_dispatch

permissions:
  id-token: write
  contents: read

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

Nota

Atur permissions: id-token: write pada alur kerja panggilan, bukan alur kerja yang dapat digunakan kembali. GitHub hanya menyertakan klaim job_workflow_ref dalam token OIDC saat id-token: write diberikan pada alur kerja panggilan.