为 Azure DevOps Pipelines 启用工作负载身份联合

Databricks OAuth 令牌联合(也称为 OpenID Connect(OIDC))允许在 Databricks 外部运行的自动化工作负载安全地访问 Databricks,而无需 Databricks 密钥。 请参阅使用 OAuth 令牌联合身份验证对 Azure Databricks 进行身份验证。

若要为 Azure DevOps Pipelines 启用工作负载身份联合验证,请执行以下步骤:

  1. 创建联合策略
  2. 配置 Azure DevOps 管道 YAML

启用工作负荷标识联合后,Databricks SDK 和 Databricks CLI 会自动从 Azure DevOps Pipelines 提取工作负荷标识令牌,并将其交换为 Databricks OAuth 令牌。

创建联合策略

首先,创建自定义工作负荷标识联合策略。 有关说明,请参阅 配置服务主体联合策略。 对于 Azure DevOps,请为策略设置以下值:

  • 颁发者 URL:https://vstoken.dev.azure.com/<org_id>Azure <org-id> 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创建联合策略:

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 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)