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.
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
- Usa l'identità assegnata alla risorsa , ad esempio il calcolo, in cui viene eseguita l'interfaccia della riga di comando. Nel contesto di Azure DevOps, questo è rilevante solo se si usano strumenti di esecuzione self-hosted. Vedere Creare una connessione al servizio Azure Resource Manager a una macchina virtuale che usa un'identità gestita.
- Meccanismi di autenticazione applicabili: interfaccia della riga di comando di Azure, identità gestite di Microsoft Entra (in precedenza denominate "MSI").
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 predefinitaAZURE_CONFIG_FILE
perché i comandi usano ildatabricks 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 conissecret=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.
- In caso contrario, la
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 esempiov0.224.0
.
Procedure consigliate
Databricks consiglia di usare la federazione dell'identità del carico di lavoro Di Microsoft Entra come metodo di autenticazione preferito. Non si basa sui segreti ed è più sicuro di altri metodi di autenticazione. Funziona automaticamente con l'attività
AzureCLI@2
senza alcuna configurazione manuale.Per altre informazioni, vedere Creare una connessione al servizio Azure Resource Manager che usa la federazione delle identità del carico di lavoro.