Partager via


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.

Sélectionner les connexions de service sous Paramètres de projet dans Azure DevOps

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

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éfaut AZURE_CONFIG_FILE , car les databricks 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 avec issecret=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.

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.

Voir aussi