次の方法で共有


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

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

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

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

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

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

まず、カスタム ワークロード ID フェデレーション ポリシーを作成します。 手順については、「 サービス プリンシパルのフェデレーション ポリシーを構成する」を参照してください。 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 のフェデレーション ポリシーと、 5581763342009999の Databricks サービス プリンシパルの数値 ID を作成します。

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 DATABRICKS_OIDC_TOKEN_ENV ファイルにconfig.ymlを設定して、databricks SDK または CLI にCIRCLE_OIDC_TOKEN_V2でトークンを検索するように指示します。 (以前の CIRCLE_OIDC_TOKEN 環境変数を使用することもできます)。

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: Databricks ワークスペースの URL
  • DATABRICKS_CLIENT_ID: サービス プリンシパル (アプリケーション) 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