Databricks OAuth 令牌聯邦,也稱為 OpenID Connect (OIDC),可讓您在 Databricks 外部執行的自動化工作負載安全地存取 Databricks,而無需使用 Databricks 憑證。 請參閱 使用 OAuth 令牌同盟驗證 Azure Databricks 的存取權。
若要啟用 Azure DevOps Pipelines 的工作負載身分識別同盟:
啟用工作負載身分識別同盟之後,Databricks SDK 和 Databricks CLI 會自動從 Azure DevOps Pipelines 擷取工作負載身分識別令牌,並將其交換為 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 命令會為組織識別碼 7f1078d6-b20d-4a20-9d88-05a2f0d645a3 和 Databricks 服務主體數值識別碼 5581763342009999建立同盟原則:
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 工作區 URL -
DATABRICKS_CLIENT_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)