重要
Databricks OAuth 令牌联合身份验证处于 公共预览版。
Databricks OAuth 令牌联合(也称为 OpenID Connect(OIDC))允许在 Databricks 外部运行的自动化工作负载安全地访问 Databricks,而无需 Databricks 密钥。 请参阅使用 OAuth 令牌联合身份验证对 Azure Databricks 进行身份验证。
若要为 Azure DevOps Pipelines 启用工作负载身份联合验证,请执行以下步骤:
启用工作负荷标识联合后,Databricks SDK 和 Databricks CLI 会自动从 Azure DevOps Pipelines 提取工作负荷标识令牌,并将其交换为 Databricks OAuth 令牌。
创建联合策略
首先使用 Databricks CLI 创建 工作负荷标识联合策略。 对于 Azure DevOps,请为策略设置以下值:
-
issuer
:https://vstoken.dev.azure.com/<org_id>
,其中<org-id>
是 Azure DevOps 组织的 GUID -
audiences
:api://AzureADTokenExchange
-
subject
:p://<org-name>/<project-name>/<pipeline-name>
其中<org-name>
是 Azure DevOps 组织名称,<project-name>
是 Azure DevOps 项目名称,是<pipeline-name>
Azure DevOps 管道的名称
例如,给定一个组织 ID 7f1078d6-b20d-4a20-9d88-05a2f0d645a3
和一个 Databricks 服务主体数字 ID 5581763342009999
,请使用以下 Databricks CLI 命令创建联合策略:
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"
}
}
'
配置 YAML
接下来,修改配置文件。 除了设置以下工作区环境变量外,使用 Azure CLI 获取作业中的令牌并将其存储在其中 DATABRICKS_OIDC_TOKEN
。
-
DATABRICKS_AUTH_TYPE
:env-oidc
-
DATABRICKS_HOST
:你的 Databricks 工作区网址 -
DATABRICKS_CLIENT_ID
:服务主体(应用程序)ID
trigger: none
pool: test # my self-hosted pool name
variables:
DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
DATABRICKS_AUTH_TYPE: env-oidc
DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
steps:
- script: |
OIDC_REQUEST_URL="${SYSTEM_OIDCREQUESTURI}?api-version=7.1"
export DATABRICKS_OIDC_TOKEN=$(curl -s -H "Content-Length: 0" -H "Content-Type: application/json" -H "Authorization: Bearer $(System.AccessToken)" -X POST $OIDC_REQUEST_URL | jq -r '.oidcToken')
databricks current-user me
displayName: 'Display Databricks current user information'