Dela via


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.

Välj Tjänstanslutningar under Projektinställningar i Azure DevOps

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

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ärdet AZURE_CONFIG_FILE eftersom databricks 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 med issecret=truemå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.

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 exempel v0.224.0).

Bästa praxis

Se även