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

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 ジョブコンテキストの値を連結して形成される文字列。
  • 観客: Databricks では、これを Databricks アカウント ID に設定することをお勧めします。省略すると、アカウント 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": [
"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: サービスプリンシパル (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

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

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

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

対象クレームとしてjob_workflow_refを使用してフェデレーションポリシーを作成します。subject再利用可能なワークフローファイルの参照に設定してください。

Bash
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ファイルを設定する

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

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

YAML
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

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

YAML
on: workflow_dispatch

permissions:
id-token: write
contents: read

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

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