Databricks OAuth トークン フェデレーション (OpenID Connect (OIDC) とも呼ばれます) を使用すると、Databricks の外部で実行されている自動化されたワークロードは、Databricks シークレットを必要とせずに Databricks に安全にアクセスできます。 OAuth トークン フェデレーションを使用した Azure Databricks へのアクセスの認証に関するページを参照してください。
GitHub Actions のワークロード ID フェデレーションを有効にするには:
ワークロード 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 ジョブ コンテキストの値を連結して形成された文字列。
- 観客: Databricks では、これを Azure Databricks アカウント ID に設定することをお勧めします。 省略すると、アカウント ID が既定で使用されます。
-
サブジェクト要求: (省略可能) OIDC トークンのワークロード ID (
sub) 値を含む JWT 要求。 GitHub の場合は、このフィールドをsubのままにします。このフィールドは、ワークフローをトリガーしたリポジトリ、ブランチ、タグ、プル/マージ要求、または環境をエンコードします。
たとえば、次の Databricks CLI コマンドは、 my-org という名前の組織のフェデレーション ポリシーと、 5581763342009999の Databricks サービス プリンシパルの数値 ID を作成します。
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