GitHub Actions のワークロード ID フェデレーションを有効にする

Databricks OAuth トークン フェデレーション (OpenID Connect (OIDC) とも呼ばれます) を使用すると、Databricks の外部で実行されている自動化されたワークロードは、Databricks シークレットなしで Databricks に安全にアクセスできます。 OAuth トークン フェデレーションを使用した Azure Databricks へのアクセスの認証に関するページを参照してください。

GitHub Actions のワークロード ID フェデレーションを有効にするには:

  1. フェデレーション ポリシーを作成する
  2. GitHub Actions YAML ファイルを構成する

ワークロード ID フェデレーションを有効にすると、Databricks SDK と Databricks CLI によって、GitHub からワークロード ID トークンが自動的にフェッチされ、Databricks OAuth トークンと交換されます。

フェデレーション ポリシーを作成する

まず、ワークロード ID フェデレーション ポリシーを作成します。 手順については、「 サービス プリンシパルのフェデレーション ポリシーを構成する」を参照してください。 GitHub の場合は、ポリシーに次の値を設定します。

  • 組織:あなたの GitHub 組織の名前。 たとえば、リポジトリの URL が https://github.com/databricks-inc/data-platformされている場合、組織は databricks-inc。
  • リポジトリ: 許可する単一リポジトリの名前 ( data-platformなど)。
  • エンティティの種類: トークンの sub (サブジェクト) 要求で表される GitHub エンティティの種類。 既定値は Branch です。 Databricks では 、環境を使用することをお勧めします。これを有効にするには、GitHub Actions YAML ファイルで environment 属性を設定します。 特定の環境へのデプロイを参照してください。
  • 発行者 URL:https://token.actions.githubusercontent.com
  • 件名: GitHub Actions ジョブ コンテキストの値を連結して形成された文字列。 必要なフォーマットはリポジトリの GitHub sub claim によって異なります。 以下の注意を参照してください。
  • 観客: Databricks では、これを Azure Databricks アカウント ID に設定することをお勧めします。 省略すると、アカウント ID が既定で使用されます。
  • サブジェクト要求: (省略可能) OIDC トークンのワークロード ID (sub) 値を含む JWT 要求。 GitHub の場合は、このフィールドを sub のままにします。このフィールドは、ワークフローをトリガーしたリポジトリ、ブランチ、タグ、プル/マージ要求、または環境をエンコードします。 呼び出し元リポジトリではなく再利用可能なワークフローとして認証するには、「 再利用可能なワークフローを使用した認証」を参照してください。

Note

Azure Databricks は Subject をトークンの subクレームと正確に一致させ、GitHub の sub形式はリポジトリが作成された時期に依存します。 2026年7月15日以降に作成、名前変更、または移管されたリポジトリには、repo:octo-org@123456/octo-repo@456789:environment:prodなどの数値組織IDやリポジトリIDが含まれます。 以前のリポジトリは repo:<org>/<repo>:environment:prodを使用していましたが、不変形式にオプトインした場合は別です。

リポジトリの正確な sub の値を調べるには、「OpenID Connectによるセキュリティ強化について」をご覧ください。 GitHub Enterprise Serverでは、不変形式は利用できません。

例えば、以下の DatabricksのCLI コマンドは、my-org という名前の組織と、数値 ID が 5581763342009999 の Databricks サービスプリンシパルに対するフェデレーションポリシーを作成します。 例の件名は、2026年7月15日以前に作成されたリポジトリでは名前のみ形式を使用しています。

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

GitHub Actions YAML ファイルを構成する

次に、GitHub Actions YAML ファイルを構成します。 以下の環境変数を設定します。

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: Databricks ワークスペースの URL
  • DATABRICKS_CLIENT_ID: サービス プリンシパル (アプリケーション) 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

再利用可能なワークフローを使用して認証する

既定では、 sub 要求は呼び出し元のリポジトリを識別します。 呼び出し元のリポジトリではなく再利用可能なワークフローとして認証するには、フェデレーション ポリシーで subject_claim を job_workflow_ref に設定します。 どのチームでも再利用可能なワークフローを呼び出すことができますが、再利用可能なワークフロー自体のみが Databricks で認証されます。

フェデレーション ポリシーを作成する

job_workflow_refをサブジェクト要求として使用してフェデレーション ポリシーを作成します。 subjectを再利用可能なワークフロー ファイルの ref に設定します。

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

GitHub Actions YAML ファイルを構成する

Azure Databricksで認証する再利用可能なワークフローと、それを呼び出す任意のリポジトリ内の呼び出し元ワークフローを作成します。

次の例は、再利用可能なワークフロー ファイル (共有ワークフロー リポジトリ内の.github/workflows/deploy.yml ) を示しています。

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

次の例は、再利用可能なワークフローを使用するリポジトリ内の呼び出し元ワークフローを示しています。

on: workflow_dispatch

permissions:
  id-token: write
  contents: read

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

Note

再利用可能なワークフローではなく、呼び出し元のワークフローに permissions: id-token: write を設定します。 GitHubは、呼び出し元のワークフローでjob_workflow_refが付与されている場合にのみ、OIDCトークンにid-token: write要求を含めます。