メインコンテンツまでスキップ

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

Databricks OAuth トークン フェデレーション (OpenID Connect (OIDC) とも呼ばれます) を使用すると、Databricks の外部で実行されている自動化されたワークロードで、Databricks シークレットを必要とせずに Databricks に安全にアクセスできます。「OAuth トークン フェデレーションを使用して 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 エンティティの種類。デフォルトは [ブランチ] です。Databricks では、GitHub Actions YAML ファイルで environment 属性を設定することで有効にできる 環境 を使用することをお勧めします。「特定の環境へのデプロイ」を参照してください。
  • 発行者URL: https://token.actions.githubusercontent.com
  • 件名: GitHub Actions ジョブコンテキストの値を連結して形成される文字列。
  • 観客: リポジトリの URL。省略すると、 Databricks アカウント ID がデフォルトで使用されます。
  • サブジェクト要求: (省略可能) OIDC トークンのワークロード ID (sub) 値を含む JWT 要求。GitHub の場合は、ワークフローをトリガーしたリポジトリ、ブランチ、タグ、プル/マージ要求、または環境をエンコードするフィールドを subのままにします。

たとえば、次のDatabricks CLI コマンドは、my-org という名前の組織のフェデレーション ポリシーを作成し、Databricks サービスプリンシパルの数値 ID を 5581763342009999を作成します。

Bash
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://token.actions.githubusercontent.com",
"audiences": [
"https://github.com/my-org"
],
"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: サービスプリンシパル (application) ID
YAML
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