CircleCI のワークロード ID フェデレーションを有効にする
Databricks OAuth トークン フェデレーション (OpenID Connect (OIDC) とも呼ばれます) を使用すると、Databricks の外部で実行されている自動化されたワークロードで、Databricks シークレットを必要とせずに Databricks に安全にアクセスできます。「OAuth トークン フェデレーションを使用して Databricks へのアクセスを認証する」を参照してください。
CircleCI のワークロード ID フェデレーションを有効にするには、以下の手順を実行します。
ワークロード 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
を作成します。
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 ワークスペースの URLDATABRICKS_CLIENT_ID
: サービスプリンシパル (application) ID
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