次の方法で共有


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

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

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

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

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

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

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

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"
  }
}
'

Azure DevOps Pipeline YAML の構成

次に、Azure DevOps Pipeline YAML ファイルを構成します。 以下の環境変数を設定します。

  • DATABRICKS_AUTH_TYPE: azure-devops-oidc
  • DATABRICKS_HOST: Databricks ワークスペースの URL
  • DATABRICKS_CLIENT_ID: サービス プリンシパル (アプリケーション) ID
  • SYSTEM_ACCESSTOKEN: $(System.AccessToken) パイプライン変数をこの環境変数にマップします
trigger: none
pool: test # my self-hosted pool name

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

steps:
  - script: |
      databricks current-user me
    displayName: 'Display Databricks current user information'
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)