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