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

Azure DevOps パイプラインのワークロード ID フェデレーションを有効にする

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

Azure DevOps パイプラインのワークロード ID フェデレーションを有効にするには:

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

ワークロード ID フェデレーションを有効にすると、 Databricks SDK と Databricks CLI は Azure DevOps パイプラインからワークロード ID トークンを自動的にフェッチし、それらを Databricks OAuth トークンと交換します。

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

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

  • 発行者 URL: https://vstoken.dev.azure.com/<org_id>、ここで、 <org-id> は Azure DevOps 組織の GUID です
  • 観客: api://AzureADTokenExchange
  • 件名: p://<org-name>/<project-name>/<pipeline-name> ここで、 <org-name> は Azure DevOps 組織名、 <project-name> は Azure DevOps プロジェクト名、 <pipeline-name> は Azure DevOps パイプラインの名前です。

たとえば、次のDatabricks CLI コマンドは、組織 ID 7f1078d6-b20d-4a20-9d88-05a2f0d645a3のフェデレーション ポリシーを作成し、Databricks サービスプリンシパルの数値 ID を 5581763342009999を作成します。

Bash
databricks account service-principal-federation-policy create 5581763342009999 --json '{
"oidc_policy": {
"issuer": "https://vstoken.dev.azure.com/7f1078d6-b20d-4a20-9d88-05a2f0d645a3",
"audiences": [
"api://AzureADTokenExchange"
],
"subject": "p://my-org/my-project/my-pipeline"
}
}
'

YAML を構成する

次に、設定ファイルを変更します。次のワークスペース環境変数を設定するだけでなく、Azure CLI を使用してジョブでトークンを取得し、それを DATABRICKS_OIDC_TOKEN.

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: Databricks ワークスペースの URL
  • DATABRICKS_CLIENT_ID: サービスプリンシパル (application) ID
YAML
trigger: none
pool: test # my self-hosted pool name

variables:
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_AUTH_TYPE: env-oidc
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

steps:
- script: |
OIDC_REQUEST_URL="${SYSTEM_OIDCREQUESTURI}?api-version=7.1"
export DATABRICKS_OIDC_TOKEN=$(curl -s -H "Content-Length: 0" -H "Content-Type: application/json" -H "Authorization: Bearer $(System.AccessToken)" -X POST $OIDC_REQUEST_URL | jq -r '.oidcToken')
databricks current-user me
displayName: 'Display Databricks current user information'