Autentisera med Azure DevOps på Databricks
Lär dig hur du konfigurerar dina Azure DevOps-pipelines för att tillhandahålla autentisering för Databricks CLI-kommandon och API-anrop i din automatisering.
Azure DevOps-autentisering
Hantering av autentisering (första part och tredje part) i Azure DevOps görs med tjänstanslutningar. I Azure DevOps-portalen kan du komma åt tjänstanslutningar på valfri projektsida under Projektinställningar.
Om du vill autentisera Databricks CLI använder du anslutningstypen för Azure Resource Manager-tjänsten . För den här typen väljer du någon av följande autentiseringsmetoder:
- Identitetsfederation för Microsoft Entra-arbetsbelastning
- Använder OIDC-protokollet (OpenID Connect) för att hämta token för tjänstens huvudnamn.
- Kräver att du konfigurerar azure DevOps-genererade problem och ämnesidentifierare med tjänstens huvudnamn som du tänker använda.
- Tillämplig autentiseringsmekanism: Azure CLI.
- Microsoft Entra-tjänstens huvudnamn
- Använder ett klient-ID och en MS Entra-klienthemlighet för att generera en kortlivad OAuth-token.
- Kräver att du genererar en hemlighet för tjänstens huvudnamn som du tänker använda för tjänstanslutningen.
- Tillämpliga autentiseringsmekanismer: Azure CLI, Microsoft Entra-klienthemligheter.
- Hanterad identitet för Microsoft Entra-ID
- Använder den identitet som tilldelats resursen (till exempel beräkning) som CLI körs på. När det gäller Azure DevOps är detta bara relevant om du använder lokalt installerade löpare. Se Skapa en Azure Resource Manager-tjänstanslutning till en virtuell dator som använder en hanterad identitet.
- Tillämpliga autentiseringsmekanismer: Azure CLI, Microsoft Entra-hanterade identiteter (kallades tidigare "MSI").
När du har valt den autentiseringsmekanism som bäst matchar projektets behov måste du konfigurera den i din Azure DevOps-pipelinedefinition (pipeline.yml
) för att fungera med Azure Databricks CLI.
Konfigurera din Azure DevOps-pipeline så att den använder Azure CLI för autentisering
Som standard använder Azure Databricks CLI Azure CLI som mekanism för att autentisera med Azure Databricks.
Observera att användning av Azure CLI för autentisering kräver att alla anrop till Azure Databricks CLI måste göras i en AzureCLI@2 task
, vilket innebär att det inte finns något sätt att dela en autentiserad session i efterföljande uppgifter. Varje uppgift autentiseras separat, vilket introducerar svarstid när de körs.
Följande Azure Pipelines-exempelkonfiguration använder Azure CLI för att autentisera och köra Azure Databricks CLI-kommandot 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
När du konfigurerar din Azure DevOps-pipeline för att använda Azure CLI för att köra Azure Databricks CLI-kommandon gör du följande:
- Använd
azureSubscription
för att konfigurera den tjänstanslutning som du vill använda. - Konfigurera
useGlobalConfig
för att använda standardvärdetAZURE_CONFIG_FILE
eftersomdatabricks bundle
kommandona använder miljövariabelfiltrering för underprocesser. Om detta inte har angetts kan dessa underprocesser inte hitta information om den autentiserade sessionen. - Om den inte redan har exporterats (till exempel i ett tidigare steg eller i paketkonfigurationen) exporterar du
DATABRICKS_HOST
miljövariabeln.
Konfigurera din Azure DevOps-pipeline så att den använder en Microsoft Entra-klienthemlighet för autentisering
Om du inte vill använda Azure CLI för autentisering eftersom det ger för mycket svarstid, eller om du behöver använda Azure CLI i en annan aktivitetstyp, använder du en Microsoft Entra-klienthemlighet. Autentiseringsinformationen måste hämtas från tjänstanslutningen, så du måste använda AzureCLI@2
uppgiften i deklarationen för din pipeline.
Använd uppgiften AzureCLI@2
för att hämta klient-ID och klienthemlighet från tjänstanslutningen och exportera dem sedan som miljövariabler. Efterföljande aktiviteter kan använda dem direkt. Ett exempel finns i Använda tjänstens huvudnamn för Microsoft Entra för att hantera Databricks Git-mappar.
I följande Azure Pipelines-exempelkonfiguration används en Microsoft Entra-klienthemlighet för att autentisera och köra Azure Databricks CLI-kommandot 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
Gör följande när du konfigurerar din Azure DevOps-pipeline för att använda Microsoft Entra-klienthemligheter för att köra Azure Databricks CLI-kommandon:
- Konfigurera
addSpnToEnvironment
för att exportera relevanta miljövariabler till det infogade skriptet. - Det infogade skriptet exporterar miljövariablerna med aktivitetsomfång som miljövariabler med jobbomfattning under namn som Azure Databricks CLI automatiskt plockar upp.
- Om den inte redan har exporterats (till exempel i ett tidigare steg eller i paketkonfigurationen) exporterar du
DATABRICKS_HOST
miljövariabeln. - Om du markerar
ARM_CLIENT_SECRET
miljövariabeln medissecret=true
måste du uttryckligen lägga till den i varje efterföljande steg som behöver den.- Om du inte gör det kommer
ARM_CLIENT_SECRET
miljövariabeln att vara tillgänglig för varje efterföljande steg. - Miljövariabeln
ARM_CLIENT_SECRET
maskeras i utdata oavsett inställning.
- Om du inte gör det kommer
Konfigurera din Azure DevOps-pipeline så att den använder en Microsoft Entra-hanterad identitet för autentisering
Eftersom Azure-hanterad identitetsautentisering är beroende av den virtuella datorn eller containerkonfigurationen för att garantera att Azure Databricks CLI körs under rätt identitet, kräver inte din Azure DevOps-pipelinekonfiguration att du anger AzureCLI@2
uppgiften.
Följande Azure Pipelines-exempelkonfiguration använder en Microsoft Entra-hanterad identitet för att autentisera och köra Azure Databricks CLI-kommandot 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
Gör följande när du konfigurerar din Azure DevOps-pipeline för att använda Microsoft Entra-hanterade identiteter för att köra Azure Databricks CLI-kommandon:
- Den hanterade Microsoft Entra-identiteten måste tilldelas rollen "Deltagare" i databricks-arbetsytan som den kommer åt.
- Värdet för
DATABRICKS_AZURE_RESOURCE_ID
miljövariabeln finns under Egenskaper för Azure Databricks-instansen i Azure Portal. - Värdet för
ARM_CLIENT_ID
miljövariabeln är klient-ID för den hanterade identiteten.
Kommentar
DATABRICKS_HOST
Om miljövariabeln inte anges i den här konfigurationen kommer värdet att härledas från DATABRICKS_AZURE_RESOURCE_ID
.
Installera Azure Databricks CLI från Azure Pipelines-pipelinen
När du har konfigurerat de autentiseringsmekanismer du föredrar måste du installera Azure Databricks CLI på värden eller agenten som ska köra Azure Databricks CLI-kommandona.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
Dricks
- Om du inte vill installera den senaste versionen av Azure Databricks CLI automatiskt ersätter
main
du i installations-URL:en med en specifik version (till exempelv0.224.0
).
Bästa praxis
Databricks rekommenderar att du använder Microsoft Entra-arbetsbelastningsidentitetsfederation som valfritt autentiseringsmetod. Den förlitar sig inte på hemligheter och är säkrare än andra autentiseringsmetoder. Det fungerar automatiskt med
AzureCLI@2
uppgiften utan någon manuell konfiguration.Mer information finns i Skapa en Azure Resource Manager-tjänstanslutning som använder arbetsbelastningsidentitetsfederation.