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

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

備考

プレビュー

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

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

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

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

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

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

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'