Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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:
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.
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
maincon 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.
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 daidatabricks bundlecomandi 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
addSpnToEnvironmentesponeservicePrincipalId,servicePrincipalKey, etenantIdallo 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, aggiungereissecret=truealla 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 daDATABRICKS_AZURE_RESOURCE_ID.
L'identità gestita deve avere il ruolo Collaboratore nell'area di lavoro di Azure Databricks.