Partager via


S’authentifier auprès d’Azure DevOps sur Azure Databricks

Cette page explique comment configurer vos pipelines Azure DevOps pour authentifier l’interface CLI Databricks et passer des appels d’API à Azure Databricks.

Avant de commencer

Effectuez ces étapes avant de configurer l’authentification Azure DevOps :

  1. Créez le principal de service dans Azure et ajoutez-le à votre espace de travail Azure Databricks avec les autorisations appropriées. Sans cette étape, l’authentification échoue même si votre pipeline est configuré correctement.

    Pour les principaux de service managé Microsoft Entra ID, créez une application Microsoft Entra ID dans Azure, puis ajoutez-la à votre espace de travail. Consultez principaux de services et Gérer les principaux de services.

  2. Ajoutez une étape à votre pipeline pour installer l’interface CLI Databricks sur l’agent :

    - script: |
        curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
      displayName: 'Install Databricks CLI'
    

    Conseil / Astuce

    Pour épingler l’installation de l’interface CLI à une version spécifique au lieu d’utiliser la dernière version, remplacez main par une balise de version (par exemple). v0.224.0

Choisir une méthode d’authentification

Azure DevOps gère l’authentification par le biais de connexions de service. Accédez-y dans le portail Azure DevOps sousconnexions du service Paramètres >.

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 avec l’une des méthodes suivantes :

Méthode Descriptif Idéal pour
Fédération d'identité des charges de travail (recommandée) Utilise OpenID Connect (OIDC) pour acquérir des jetons. Nécessite la configuration de l’émetteur et de l’identificateur d’objet générés par Azure DevOps avec votre principal de service. Authentification sécurisée et sans secret
Principal de service avec secret client Utilise un ID client et un secret pour générer des jetons OAuth de courte durée. Nécessite la génération d’un secret pour le principal de service. Scénarios nécessitant des informations d’identification partagées entre les tâches
Identité managée Utilise l’identité affectée à la machine virtuelle ou au conteneur exécutant le pipeline. Applicable uniquement aux agents auto-hébergés. Consultez la documentation Azure. Agents hébergés localement avec des identités affectées

Remarque

Utilisez la fédération des identités de charge de travail lorsque cela est possible. Il ne s’appuie pas sur des secrets, il est donc plus sécurisé que d’autres méthodes. Elle fonctionne automatiquement avec la AzureCLI@2 tâche sans configuration manuelle. Consultez Créer une connexion de service qui utilise la fédération d’identité de charge de travail.

Configurer l’authentification Azure CLI

L’interface CLI Databricks utilise Azure CLI pour l’authentification par défaut. Toutes les commandes CLI Databricks doivent s’exécuter à l’intérieur d’une AzureCLI@2 tâche, ce qui signifie que chaque tâche s’authentifie indépendamment. Cela introduit une certaine latence, mais nécessite une configuration minimale.

- task: AzureCLI@2
  inputs:
    azureSubscription: <your-service-connection-name>
    useGlobalConfig: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
      databricks bundle deploy

Mettez à jour ces valeurs :

  • azureSubscription: nom de votre connexion de service Azure Resource Manager.
  • useGlobalConfig:Obligatoire. Garantit que les sous-processus générés par databricks bundle des commandes peuvent accéder à la session authentifiée.
  • DATABRICKS_HOST: définissez ce paramètre s’il n’est pas déjà défini dans votre configuration d’offre groupée ou dans une étape précédente.

Configurer l’authentification par clé secrète client

Utilisez une clé secrète client lorsque vous devez partager des informations d’identification sur plusieurs tâches ou lorsque l’authentification Azure CLI ajoute trop de latence.

Cette approche récupère les détails d’authentification de la connexion de service dans une tâche, puis les exporte en tant que variables d’environnement limitées au périmètre du travail pour les tâches suivantes.

- task: AzureCLI@2
  inputs:
    azureSubscription: <your-service-connection-name>
    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-<workspace-id>.<region>.azuredatabricks.net
    databricks bundle deploy

Remarque :

  • La addSpnToEnvironment clé expose servicePrincipalId, servicePrincipalKeyet tenantId au script inline.
  • Les ##vso commandes promeuvent les variables limitées aux tâches en variables limitées aux travaux que l'interface CLI de Databricks reconnaît automatiquement.
  • Par défaut, ARM_CLIENT_SECRET est accessible à toutes les étapes suivantes. Pour restreindre l’accès, ajoutez-y issecret=true la définition de variable, puis transmettez-la explicitement à chaque étape qui en a besoin. Le secret est masqué dans les journaux, quel que soit ce paramètre.

Pour obtenir un exemple complet, consultez Autoriser un principal de service Microsoft Entra à accéder aux dossiers Git.

Configurer l’authentification d’identité managée

L’authentification d’identité managée s’appuie sur la configuration de la machine virtuelle ou du conteneur plutôt que sur les tâches de pipeline. Cette méthode ne nécessite pas la AzureCLI@2 tâche.

- script: |
    export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/workspaces/<workspace-name>
    export ARM_CLIENT_ID=<managed-identity-client-id>
    export ARM_USE_MSI=true
    export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
    databricks current-user me

Mettez à jour ces valeurs :

  • DATABRICKS_AZURE_RESOURCE_ID: recherchez cette valeur sous Propriétés de votre espace de travail dans le portail Azure.
  • ARM_CLIENT_ID: ID client de l’identité managée.
  • DATABRICKS_HOST: facultatif. Si elle n’est pas définie, la valeur est déduite de DATABRICKS_AZURE_RESOURCE_ID.

L’identité managée doit avoir le rôle Contributeur sur l’espace de travail Azure Databricks.

Voir aussi