Activer la fédération d'identité de charge de travail pour les pipelines Azure DevOps
La fédération de jetons OAuth Databricks, également connue sous le nom d'OpenID Connect (OIDC), permet à vos workloads automatisés exécutés en dehors de Databricks d'accéder en toute sécurité à Databricks sans nécessiter de secrets Databricks. Voir Authentifier l'accès à Databricks à l'aide de la fédération de jetons OAuth.
Pour activer la fédération d'identité de charge de travail pour les pipelines Azure DevOps :
Après avoir activé la fédération des identités de workload, les SDK Databricks et la CLI Databricks récupèrent automatiquement les jetons d'identité de workload d'Azure DevOps Pipelines et les échangent contre des jetons OAuth Databricks.
Créer une politique de fédération
Tout d'abord, créez une politique de fédération d'identités de charge de travail personnalisée. Pour obtenir des instructions, consultez Configurer une stratégie de fédération de Service Principal. Pour Azure DevOps, définissez les valeurs suivantes pour la politique :
- URL de l'émetteur :
https://vstoken.dev.azure.com/<org_id>, où<org-id>est le GUID de votre organisation Azure DevOps - Audiences :
api://AzureADTokenExchange - **Objet** :
p://<org-name>/<project-name>/<pipeline-name>où<org-name><project-name>est<pipeline-name>le nom de votre organisation Azure DevOps, est le nom de votre projet Azure DevOps et est le nom de votre pipeline Azure DevOps.
Par exemple, la commande Databricks CLI suivante crée une politique de fédération pour un ID d’organisation 7f1078d6-b20d-4a20-9d88-05a2f0d645a3 et un ID numérique de Service Principal 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"
}
}
'
Configurer le pipeline YAML Azure DevOps
Ensuite, configurez le fichier YAML du Pipeline Azure DevOps. Définissez les variables d'environnement suivantes :
DATABRICKS_AUTH_TYPE:azure-devops-oidcDATABRICKS_HOST: Votre URL de workspace DatabricksDATABRICKS_CLIENT_ID: L’ID de l’application du service principalSYSTEM_ACCESSTOKEN: Mappez la variable de pipeline$(System.AccessToken)à cette variable d'environnement
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)