Habilitar a federação de identidade de carga de trabalho para o pipeline Azure DevOps
A federação de tokens OAuth do Databricks, também conhecida como OpenID Connect (OIDC), permite que suas cargas de trabalho automatizadas executadas fora do Databricks acessem o Databricks com segurança sem a necessidade de segredos do Databricks. Consulte Autenticar o acesso ao Databricks usando a federação de tokens OAuth.
Para habilitar a federação de identidade de carga de trabalho para o pipeline Azure DevOps :
Depois que o senhor ativar a federação de identidade de carga de trabalho, os SDKs Databricks e o Databricks CLI buscarão automaticamente a identidade da carga de trabalho tokens do pipeline Azure DevOps e a trocarão pelo Databricks OAuth tokens.
Crie uma política de federação
Primeiro, crie uma política personalizada de federação de identidades de carga de trabalho. Para obter instruções, consulte Configurar uma política de federação de entidade de serviço. Para o Azure DevOps, defina os seguintes valores para a política:
- URL do emissor:
https://vstoken.dev.azure.com/<org_id>
, onde<org-id>
é o GUID de sua organização do Azure DevOps - Públicos:
api://AzureADTokenExchange
- Assunto:
p://<org-name>/<project-name>/<pipeline-name>
onde<org-name>
é o nome da organização do Azure DevOps,<project-name>
é o nome do projeto do Azure DevOps e<pipeline-name>
é o nome do pipeline do Azure DevOps
Por exemplo, o seguinte Databricks CLI comando cria uma política de federação para um ID de organização 7f1078d6-b20d-4a20-9d88-05a2f0d645a3
e um ID numérico de entidade de serviço Databricks de 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"
}
}
'
Configurar o YAML
Em seguida, modifique o arquivo de configuração. Além de definir o seguinte workspace variável de ambiente, use o Azure CLI para obter um tokens no Job e armazená-lo em DATABRICKS_OIDC_TOKEN
.
DATABRICKS_AUTH_TYPE
:env-oidc
DATABRICKS_HOST
: seu URL Databricks workspaceDATABRICKS_CLIENT_ID
ID da entidade de serviço (aplicativo)
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'