S’authentifier auprès d’Azure DevOps sur Databricks
Découvrez comment configurer vos pipelines Azure DevOps pour fournir une authentification pour les commandes et les appels d’API Databricks dans votre automatisation.
Authentification Azure DevOps
La gestion de l’authentification (première partie et tierce) dans Azure DevOps est effectuée avec des connexions de service. Dans le portail Azure DevOps, vous pouvez accéder aux connexions de service sur n’importe quelle page de projet sous Paramètres du projet.
Pour authentifier l’interface CLI Databricks, utilisez le type de connexion de service Azure Resource Manager . Pour ce type, choisissez l’une des méthodes d’authentification suivantes :
- Fédération des identités de charge de travail Microsoft Entra
- Utilise le protocole OpenID Connect (OIDC) pour acquérir des jetons pour le compte d’un principal de service.
- Vous devez configurer les problèmes générés par Azure DevOps et l’identificateur d’objet avec le principal de service que vous envisagez d’utiliser.
- Mécanisme d’authentification applicable : Azure CLI.
- Principal de service Microsoft Entra
- Utilise un ID client et une clé secrète client MS Entra pour générer un jeton OAuth de courte durée.
- Vous devez générer un secret pour le principal de service que vous envisagez d’utiliser pour la connexion de service.
- Mécanismes d’authentification applicables : Azure CLI, secrets client Microsoft Entra.
- Identité managée microsoft Entra ID
- Utilise l’identité affectée à la ressource (par exemple, le calcul) sur laquelle l’interface CLI est exécutée. Dans le contexte d’Azure DevOps, cela s’applique uniquement si vous utilisez des exécuteurs auto-hébergés. Consultez Créer une connexion de service Azure Resource Manager à une machine virtuelle qui utilise une identité managée.
- Mécanismes d’authentification applicables : Azure CLI, identités managées Microsoft Entra (anciennement appelées « MSI »).
Une fois que vous avez choisi le mécanisme d’authentification qui correspond le mieux aux besoins de votre projet, vous devez le configurer dans votre définition de pipeline Azure DevOps (pipeline.yml
) pour qu’il fonctionne avec Azure Databricks CLI.
Configurer votre pipeline Azure DevOps pour utiliser Azure CLI pour l’authentification
Par défaut, l’interface CLI Azure Databricks utilise Azure CLI comme mécanisme pour s’authentifier auprès d’Azure Databricks.
Notez que l’utilisation d’Azure CLI pour l’authentification nécessite que tous les appels à l’interface CLI Azure Databricks soient effectués dans un AzureCLI@2 task
, ce qui signifie qu’il n’existe aucun moyen de partager une session authentifiée dans les tâches suivantes. Chaque tâche s’authentifie indépendamment, ce qui introduit la latence lors de leur exécution.
L’exemple de configuration Azure Pipelines suivant utilise Azure CLI pour authentifier et exécuter la commande Azure Databricks CLI bundle deploy
:
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
Lorsque vous configurez votre pipeline Azure DevOps pour utiliser Azure CLI pour exécuter des commandes Azure Databricks CLI, procédez comme suit :
- Permet
azureSubscription
de configurer la connexion de service que vous souhaitez utiliser. - Configurez
useGlobalConfig
pour utiliser la valeur par défautAZURE_CONFIG_FILE
, car lesdatabricks bundle
commandes utilisent le filtrage des variables d’environnement pour les sous-processus. S’il n’est pas défini, ces sous-processus ne pourront pas trouver les détails de la session authentifiée. - S’il n’est pas déjà exporté (par exemple dans une étape précédente ou dans la configuration de bundle), exportez la
DATABRICKS_HOST
variable d’environnement.
Configurer votre pipeline Azure DevOps pour utiliser une clé secrète client Microsoft Entra pour l’authentification
Si vous ne souhaitez pas utiliser Azure CLI pour l’authentification, car elle ajoute trop de latence, ou parce que vous devez utiliser Azure CLI dans un autre type de tâche, utilisez une clé secrète client Microsoft Entra. Les détails de l’authentification doivent être récupérés à partir de la connexion de service. Vous devez donc utiliser la AzureCLI@2
tâche dans la déclaration de votre pipeline.
Utilisez la AzureCLI@2
tâche pour récupérer l’ID client et la clé secrète client à partir de votre connexion de service, puis les exporter en tant que variables d’environnement. Les tâches suivantes peuvent les utiliser directement. Pour obtenir un exemple, consultez Utiliser un principal de service Microsoft Entra pour gérer les dossiers Git Databricks.
L’exemple de configuration Azure Pipelines suivant utilise une clé secrète client Microsoft Entra pour authentifier et exécuter la commande Azure Databricks CLI bundle deploy
:
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
addSpnToEnvironment: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"
- script: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
Lorsque vous configurez votre pipeline Azure DevOps pour utiliser les secrets client Microsoft Entra pour exécuter des commandes CLI Azure Databricks, procédez comme suit :
- Configurez
addSpnToEnvironment
pour exporter des variables d’environnement pertinentes vers le script inline. - Le script inline exporte les variables d’environnement délimitées à la tâche en tant que variables d’environnement étendues aux travaux sous les noms que l’interface CLI Azure Databricks récupère automatiquement.
- S’il n’est pas déjà exporté (par exemple dans une étape précédente ou dans la configuration de bundle), exportez la
DATABRICKS_HOST
variable d’environnement. - Si vous marquez la
ARM_CLIENT_SECRET
variable d’environnement avecissecret=true
, vous devez l’ajouter explicitement à chaque étape suivante qui en a besoin.- Si ce n’est pas le cas, la
ARM_CLIENT_SECRET
variable d’environnement est accessible à chaque étape suivante. - La
ARM_CLIENT_SECRET
variable d’environnement est masquée dans la sortie, quel que soit le paramètre.
- Si ce n’est pas le cas, la
Configurer votre pipeline Azure DevOps pour utiliser une identité managée Microsoft Entra pour l’authentification
Étant donné que l’authentification par identité managée Azure dépend de la machine virtuelle ou de la configuration de conteneur pour garantir que l’interface CLI Azure Databricks est exécutée sous l’identité appropriée, votre configuration de pipeline Azure DevOps ne nécessite pas que vous spécifiiez la AzureCLI@2
tâche.
L’exemple de configuration Azure Pipelines suivant utilise une identité managée Microsoft Entra pour authentifier et exécuter la commande Azure Databricks CLI bundle deploy
:
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb...
databricks current-user me --log-level trace
Lorsque vous configurez votre pipeline Azure DevOps pour utiliser les identités managées Microsoft Entra pour exécuter des commandes CLI Azure Databricks, procédez comme suit :
- L’identité managée Microsoft Entra doit être affectée au rôle « Contributeur » dans l’espace de travail Databricks auquel il accède.
- La valeur de la
DATABRICKS_AZURE_RESOURCE_ID
variable d’environnement se trouve sous Propriétés de l’instance Azure Databricks dans le Portail Azure. - La valeur de la
ARM_CLIENT_ID
variable d’environnement est l’ID client de l’identité managée.
Remarque
Si la DATABRICKS_HOST
variable d’environnement n’est pas spécifiée dans cette configuration, la valeur est déduite de DATABRICKS_AZURE_RESOURCE_ID
.
Installer Azure Databricks CLI à partir du pipeline Azure Pipelines
Une fois que vous avez configuré vos mécanismes d’authentification préférés, vous devez installer l’interface CLI Azure Databricks sur l’hôte ou l’agent qui exécutera les commandes CLI Azure Databricks.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
Conseil
- Si vous ne souhaitez pas installer automatiquement la dernière version d’Azure Databricks CLI, remplacez
main
l’URL du programme d’installation par une version spécifique (par exemple).v0.224.0
Bonnes pratiques
Databricks vous recommande d’utiliser la fédération des identités de charge de travail Microsoft Entra comme méthode d’authentification de votre choix. Elle ne s’appuie pas sur les secrets et est plus sécurisée que d’autres méthodes d’authentification. Elle fonctionne automatiquement avec la
AzureCLI@2
tâche sans configuration manuelle.Pour plus d’informations, consultez Créer une connexion de service Azure Resource Manager qui utilise la fédération des identités de charge de travail.