GitHub Actions のワークロード ID フェデレーションを有効にする
プレビュー
Databricks OAuth トークン フェデレーションは パブリック プレビュー段階です。
Databricks OAuth トークン フェデレーション (OpenID Connect (OIDC) とも呼ばれます) を使用すると、Databricks の外部で実行されている自動化されたワークロードで、Databricks シークレットを必要とせずに Databricks に安全にアクセスできます。「OAuth トークン フェデレーションを使用して Databricks へのアクセスを認証する」を参照してください。
GitHub Actions のワークロード ID フェデレーションを有効にするには、次のようにします。
ワークロード ID フェデレーションを有効にすると、Databricks SDK と Databricks CLI は GitHub からワークロード ID トークンを自動的にフェッチし、Databricks OAuth トークンと交換します。
フェデレーション ポリシーを作成する
まず、Databricks CLI を使用して、 ワークロード ID フェデレーション ポリシーを作成します。GitHub の場合は、ポリシーに次の値を設定します。
issuer
:https://token.actions.githubusercontent.com
audiences
: リポジトリの URL。または、このフィールドを省略して、代わりに Databricks アカウント ID を使用することもできます。subject
: GitHub Actions ジョブ コンテキストから取得した値を連結したものです
GitHub Actionsの件名の一貫性を確保するために、Databricks では環境を指定することをお勧めします。デプロイメントのための環境の使用および特定の環境のフィルタリングを参照してください。
たとえば、my-org
という名前の GitHub 組織に属する my-repo
という名前の GitHub リポジトリがあり、Databricks サービスプリンシパルの数値 ID が 5581763342009999
の場合、次の Databricks CLI コマンドを使用してフェデレーション ポリシーを作成します。
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 ワークスペースの URLDATABRICKS_CLIENT_ID
: サービスプリンシパル (application) 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