Eseguire l'autenticazione con Azure DevOps in Databricks

Informazioni su come configurare le pipeline di Azure DevOps per fornire l'autenticazione per i comandi dell'interfaccia della riga di comando di Databricks e le chiamate API nell'automazione.

Autenticazione di Azure DevOps

La gestione dell'autenticazione (first-party e di terze parti) in Azure DevOps viene eseguita con le connessioni al servizio. Nel portale di Azure DevOps è possibile accedere alle connessioni al servizio in qualsiasi pagina del progetto in Impostazioni progetto.

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 . Per questo tipo, scegliere uno dei metodi di autenticazione seguenti:

  • Federazione dell'identità del carico di lavoro Microsoft Entra
    • Usa il protocollo OpenID Connect (OIDC) per acquisire i token per conto di un'entità servizio.
    • Richiede di configurare i problemi generati da Azure DevOps e l'identificatore del soggetto con l'entità servizio che si intende usare.
    • Meccanismo di autenticazione applicabile: interfaccia della riga di comando di Azure.
  • Entità servizio Microsoft Entra
    • Usa un ID client e un segreto client MS Entra per generare un token OAuth di breve durata.
    • Richiede di generare un segreto per l'entità servizio che si intende usare per la connessione al servizio.
    • Meccanismi di autenticazione applicabili: interfaccia della riga di comando di Azure, segreti client Microsoft Entra.
  • Identità gestita dell'ID Di Microsoft Entra

Dopo aver scelto il meccanismo di autenticazione più adatto alle esigenze del progetto, è necessario configurarlo nella definizione della pipeline di Azure DevOps (pipeline.yml) per usare l'interfaccia della riga di comando di Azure Databricks.

Configurare la pipeline di Azure DevOps per l'uso dell'interfaccia della riga di comando di Azure per l'autenticazione

Per impostazione predefinita, l'interfaccia della riga di comando di Azure Databricks userà l'interfaccia della riga di comando di Azure come meccanismo per l'autenticazione con Azure Databricks.

Si noti che l'uso dell'interfaccia della riga di comando di Azure per l'autenticazione richiede che tutte le chiamate all'interfaccia della riga di comando di Azure Databricks debbano essere effettuate in un AzureCLI@2 task, il che significa che non è possibile condividere una sessione autenticata nelle attività successive. Ogni attività esegue l'autenticazione indipendente, che introduce la latenza durante l'esecuzione.

La configurazione di esempio di Azure Pipelines seguente usa l'interfaccia della riga di comando di Azure per autenticare ed eseguire il comando dell'interfaccia della riga di comando di Azure Databricks 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

Quando si configura la pipeline di Azure DevOps per usare l'interfaccia della riga di comando di Azure per eseguire i comandi dell'interfaccia della riga di comando di Azure Databricks, eseguire le operazioni seguenti:

  • Usare azureSubscription per configurare la connessione al servizio da usare.
  • Configurare useGlobalConfig per usare l'impostazione predefinita AZURE_CONFIG_FILE perché i comandi usano il databricks bundle filtro delle variabili di ambiente per i sottoprocessi. Se non è impostato, questi subprocessi non saranno in grado di trovare i dettagli della sessione autenticata.
  • Se non è già esportato (ad esempio in un passaggio precedente o nella configurazione del bundle), esportare la DATABRICKS_HOST variabile di ambiente.

Configurare la pipeline di Azure DevOps per l'uso di un segreto client Microsoft Entra per l'autenticazione

Se non si vuole usare l'interfaccia della riga di comando di Azure per l'autenticazione perché aggiunge una latenza eccessiva o perché è necessario usare l'interfaccia della riga di comando di Azure in un tipo di attività diverso, usare un segreto client Microsoft Entra. I dettagli di autenticazione devono essere recuperati dalla connessione al servizio, pertanto è necessario usare l'attività AzureCLI@2 nella dichiarazione della pipeline.

Usare l'attività AzureCLI@2 per recuperare l'ID client e il segreto client dalla connessione al servizio e quindi esportarli come variabili di ambiente. Le attività successive possono usarle direttamente. Per un esempio, vedere Usare un'entità servizio Microsoft Entra per gestire le cartelle Git di Databricks.

La configurazione di esempio di Azure Pipelines seguente usa un segreto client Microsoft Entra per autenticare ed eseguire il comando dell'interfaccia della riga di comando di Azure Databricks 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

Quando si configura la pipeline di Azure DevOps per usare i segreti client di Microsoft Entra per eseguire i comandi dell'interfaccia della riga di comando di Azure Databricks, eseguire le operazioni seguenti:

  • Configurare addSpnToEnvironment per esportare le variabili di ambiente pertinenti nello script inline.
  • Lo script inline esporta le variabili di ambiente con ambito attività come variabili di ambiente con ambito processo con nomi che l'interfaccia della riga di comando di Azure Databricks preleva automaticamente.
  • Se non è già esportato (ad esempio in un passaggio precedente o nella configurazione del bundle), esportare la DATABRICKS_HOST variabile di ambiente.
  • Se si contrassegna la ARM_CLIENT_SECRET variabile di ambiente con issecret=true, è necessario aggiungerla in modo esplicito a ogni passaggio successivo necessario.
    • In caso contrario, la ARM_CLIENT_SECRET variabile di ambiente sarà accessibile a ogni passaggio successivo.
    • La ARM_CLIENT_SECRET variabile di ambiente viene mascherata nell'output indipendentemente dall'impostazione.

Configurare la pipeline di Azure DevOps per l'uso di un'identità gestita di Microsoft Entra per l'autenticazione

Poiché l'autenticazione dell'identità gestita di Azure dipende dalla configurazione della macchina virtuale o del contenitore per garantire che l'interfaccia della riga di comando di Azure Databricks venga eseguita con l'identità corretta, la configurazione della pipeline di Azure DevOps non richiede di specificare l'attività AzureCLI@2 .

La configurazione di esempio di Azure Pipelines seguente usa un'identità gestita di Microsoft Entra per autenticare ed eseguire il comando dell'interfaccia della riga di comando di Azure Databricks 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

Quando si configura la pipeline di Azure DevOps per usare le identità gestite di Microsoft Entra per eseguire i comandi dell'interfaccia della riga di comando di Azure Databricks, eseguire le operazioni seguenti:

  • All'identità gestita di Microsoft Entra deve essere assegnato il ruolo "Collaboratore" nell'area di lavoro databricks a cui accederà.
  • Il valore della DATABRICKS_AZURE_RESOURCE_ID variabile di ambiente è disponibile in Proprietà per l'istanza di Azure Databricks nel portale di Azure.
  • Il valore della ARM_CLIENT_ID variabile di ambiente è l'ID client dell'identità gestita.

Nota

Se la DATABRICKS_HOST variabile di ambiente non è specificata in questa configurazione, il valore verrà dedotto da DATABRICKS_AZURE_RESOURCE_ID.

Installare l'interfaccia della riga di comando di Azure Databricks dalla pipeline di Azure Pipelines

Dopo aver configurato i meccanismi di autenticazione preferiti, è necessario installare l'interfaccia della riga di comando di Azure Databricks nell'host o nell'agente che eseguirà i comandi dell'interfaccia della riga di comando di Azure Databricks.

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

Suggerimento

  • Se non si vuole installare automaticamente la versione più recente dell'interfaccia della riga di comando di Azure Databricks, sostituire main nell'URL del programma di installazione con una versione specifica , ad esempio v0.224.0.

Procedure consigliate

Vedi anche