Condividi tramite


Eseguire l'autenticazione con Azure DevOps in Azure Databricks

Questa pagina illustra come configurare le pipeline di Azure DevOps per autenticare l'interfaccia della riga di comando di Databricks e effettuare chiamate API ad Azure Databricks.

Prima di iniziare

Completare questi passaggi prima di configurare l'autenticazione di Azure DevOps:

  1. Creare l'entità servizio in Azure e aggiungerla all'area di lavoro di Azure Databricks con le autorizzazioni appropriate. Senza questo passaggio, l'autenticazione ha esito negativo anche se la pipeline è configurata correttamente.

    Per le entità servizio gestite da Microsoft Entra ID, creare un'applicazione Microsoft Entra ID in Azure e quindi aggiungerla all'area di lavoro. Vedere Principali del servizio e Gestire i principali del servizio.

  2. Aggiungere un passaggio alla pipeline per installare la CLI di Databricks nell'agente:

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

    Suggerimento

    Per aggiungere l'installazione dell'interfaccia della riga di comando a una versione specifica anziché usare la versione più recente, sostituire main con un tag di versione (ad esempio, v0.224.0).

Scegliere un metodo di autenticazione

Azure DevOps gestisce l'autenticazione tramite connessioni al servizio. Accedervi nel portale di Azure DevOps in impostazioni progetto>connessioni al servizio.

Selezionare connessioni al servizio in Impostazioni progetto in Azure DevOps

Per autenticare l'interfaccia della riga di comando di Databricks, usare il tipo di connessione del servizio Azure Resource Manager con uno dei metodi seguenti:

Metodo Descrzione Ideale per
Federazione delle identità dei carichi di lavoro (scelta consigliata) Usa OpenID Connect (OIDC) per acquisire i token. Richiede la configurazione dell'autorità emittente generata da Azure DevOps e dell'identificatore del soggetto con il principale del servizio. Autenticazione sicura senza segreto
Principale del servizio con segreto cliente Usa un ID client e un segreto per generare token OAuth di breve durata. Richiede la generazione di un segreto per il principale del servizio. Scenari che richiedono credenziali condivise tra le attività
Identità gestita Usa l'identità assegnata alla macchina virtuale o al contenitore che esegue la pipeline. Applicabile solo per gli agenti self-hosted. Vedere la documentazione di Azure. Esecutori self-hosted con identità assegnate

Annotazioni

Utilizzare la federazione delle identità dei carichi di lavoro quando possibile. Non si basa sui segreti, quindi è più sicuro di altri metodi. Funziona automaticamente con l'attività AzureCLI@2 senza configurazione manuale. Vedere Creare una connessione al servizio che usa la federazione dell'identità del carico di lavoro.

Configurare l'autenticazione della CLI di Azure

L'interfaccia della riga di comando di Databricks usa l'interfaccia della riga di comando di Azure per l'autenticazione per impostazione predefinita. Tutti i comandi dell'interfaccia della riga di comando di Databricks devono essere eseguiti all'interno di un'attività AzureCLI@2 , ovvero ogni attività esegue l'autenticazione indipendentemente. Ciò introduce una latenza, ma richiede una configurazione minima.

- 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

Aggiornare questi valori:

  • azureSubscription: nome della connessione al servizio Azure Resource Manager.
  • useGlobalConfig:Obbligatorio. Assicura che i sottoprocessi generati dai databricks bundle comandi possano accedere alla sessione autenticata.
  • DATABRICKS_HOST: impostare questa opzione se non è già definita nella configurazione del bundle o in un passaggio precedente.

Configurare l'autenticazione del segreto del client

Usare un segreto client quando è necessario condividere le credenziali tra più attività o quando l'autenticazione dell'interfaccia della riga di comando di Azure aggiunge una latenza eccessiva.

Questo approccio recupera i dettagli di autenticazione dalla connessione al servizio in un'attività, quindi li esporta come variabili di ambiente con ambito processo per le attività successive.

- 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

Nota:

  • La chiave addSpnToEnvironment espone servicePrincipalId, servicePrincipalKey, e tenantId allo script inline.
  • I comandi promuovono le variabili da ambito attività ad ambito processo, riconosciute automaticamente dal CLI di Databricks.
  • Per impostazione predefinita, ARM_CLIENT_SECRET è accessibile a tutti i passaggi successivi. Per limitare l'accesso, aggiungere issecret=true alla definizione della variabile e quindi passarlo in modo esplicito a ogni passaggio necessario. Il segreto viene mascherato nei log indipendentemente da questa impostazione.

Per un esempio completo, vedere Autorizzare un servizio principale Microsoft Entra ad accedere alle cartelle Git.

Configurare l'autenticazione dell'identità gestita

L'autenticazione dell'identità gestita si basa sulla configurazione della macchina virtuale o del contenitore anziché sulle attività della pipeline. Questo metodo non richiede l'attività AzureCLI@2 .

- 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

Aggiornare questi valori:

  • DATABRICKS_AZURE_RESOURCE_ID: trovare questo valore in Proprietà per l'area di lavoro nel portale di Azure.
  • ARM_CLIENT_ID: ID client dell'identità gestita.
  • DATABRICKS_HOST: facoltativo. Se non è impostato, il valore viene dedotto da DATABRICKS_AZURE_RESOURCE_ID.

L'identità gestita deve avere il ruolo Collaboratore nell'area di lavoro di Azure Databricks.

Vedere anche