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

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

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 トークンと交換します。

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

まず、カスタム・ワークロード・アイデンティティ・フェデレーション・ポリシーを作成します。手順については、「 サービスプリンシパル フェデレーション ポリシーを構成する」を参照してください。 CircleCI の場合は、ポリシーに次の値を設定します。

  • 発行者 URL: https://oidc.circleci.com/org/<org_id>( <org-id> は組織 ID です)
  • 観客: CircleCI 組織 ID
  • 件名: CircleCI プロジェクト ID
  • 主題の主張: oidc.circleci.com/project-id

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

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