Azure DevOps パイプラインのワークロード ID フェデレーションを有効にする
Databricks OAuth トークン フェデレーション (OpenID Connect (OIDC) とも呼ばれます) を使用すると、Databricks の外部で実行されている自動化されたワークロードで、Databricks シークレットを必要とせずに Databricks に安全にアクセスできます。「OAuth トークン フェデレーションを使用して Databricks へのアクセスを認証する」を参照してください。
Azure DevOps パイプラインのワークロード ID フェデレーションを有効にするには:
ワークロード 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"
}
}
'
Azure DevOps パイプライン YAML を構成する
次に、Azure DevOps パイプライン YAML ファイルを構成します。次の環境変数を設定します。
DATABRICKS_AUTH_TYPE
:azure-devops-oidc
DATABRICKS_HOST
: DatabricksワークスペースのURLDATABRICKS_CLIENT_ID
: サービスプリンシパル(アプリケーション)IDSYSTEM_ACCESSTOKEN
:$(System.AccessToken)
パイプライン変数をこの環境変数にマップします
YAML
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)