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

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

備考

プレビュー

Databricks OAuth トークン フェデレーションは パブリック プレビュー段階です。

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

CircleCI のワークロード ID フェデレーションを有効にするには、以下の手順を実行します。

  1. フェデレーション ポリシーを作成する
  2. CircleCI YAML の設定

ワークロード ID のフェデレーションを有効にすると、Databricks SDK と Databricks CLI は CircleCI からワークロード ID トークンを自動的にフェッチし、Databricks OAuth トークンと交換します。

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

まず、Databricks CLI を使用して、 ワークロード ID フェデレーション ポリシーを作成します。CircleCI の場合は、ポリシーに次の値を設定します。

  • issuer: https://oidc.circleci.com/org/<org_id>( <org-id> は組織 ID に置き換えられます)
  • audiences: お客様の CircleCI 組織 ID
  • subject: CircleCI プロジェクト ID
  • subject_claim: oidc.circleci.com/project-id

たとえば、組織 ID が 1234 で、プロジェクト ID が 5678で、Databricks サービスプリンシパルの数値 ID が 5581763342009999の場合、次の Databricks CLI コマンドを使用してフェデレーション ポリシーを作成します。

Bash
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://oidc.circleci.com/org/1234",
"audiences": [
"1234"
],
"subject": "5678",
"subject_claim": "oidc.circleci.com/project-id"
}
}'

CircleCI YAML の設定

次に、CircleCI 設定ファイルを変更します。次の変数に加えて、CircleCI config.yml ファイルで DATABRICKS_OIDC_TOKEN_ENV を設定して、Databricks SDK または CLI に CIRCLE_OIDC_TOKEN_V2でトークンを検索するように指示します。(古い CIRCLE_OIDC_TOKEN 環境変数を使用することもできます。

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: Databricks ワークスペースの URL
  • DATABRICKS_CLIENT_ID: サービスプリンシパル (application) ID
YAML
version: 2.1

jobs:
build:
docker:
- image: cimg/base:current
environment:
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
DATABRICKS_OIDC_TOKEN_ENV: CIRCLE_OIDC_TOKEN
DATABRICKS_AUTH_TYPE: env-oidc
steps:
- checkout
- run:
name: Install Databricks CLI
command: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sudo sh
databricks --version
- run:
name: Run Databricks CLI commands
command: databricks current-user me