Freigeben über


Authentifizieren mit Azure DevOps in Databricks

Erfahren Sie, wie Sie Ihre Azure DevOps-Pipelines so konfigurieren, dass sie die Authentifizierung für Databricks CLI-Befehle und API-Aufrufe in Ihrer Automatisierung bereitstellen.

Azure DevOps-Authentifizierung

Die Verwaltung der Authentifizierung (Erstanbieter und Drittanbieter) in Azure DevOps erfolgt mit Dienstverbindungen. Im Azure DevOps-Portal können Sie auf einer beliebigen Projektseite unter den Projekteinstellungen auf Dienstverbindungen zugreifen.

Auswählen von Dienstverbindungen unter

Verwenden Sie den Azure Resource Manager-Dienstverbindungstyp , um die Databricks CLI zu authentifizieren. Wählen Sie für diesen Typ eine der folgenden Authentifizierungsmethoden aus:

  • Identitätsverbund der Microsoft Entra-Workload
    • Verwendet das OpenID Connect (OIDC)-Protokoll, um Token im Namen eines Dienstprinzipals abzurufen.
    • Erfordert, dass Sie die von Azure DevOps generierten Probleme und den Betreffbezeichner mit dem Dienstprinzipal konfigurieren, den Sie verwenden möchten.
    • Anwendbarer Authentifizierungsmechanismus: Azure CLI.
  • Microsoft Entra-Dienstprinzipal
    • Verwendet eine Client-ID und einen geheimen MS Entra-Clientschlüssel, um ein kurzlebiges OAuth-Token zu generieren.
    • Erfordert, dass Sie einen geheimen Schlüssel für den Dienstprinzipal generieren, den Sie für die Dienstverbindung verwenden möchten.
    • Anwendbare Authentifizierungsmechanismen: Azure CLI, Geheime Clientschlüssel von Microsoft Entra.
  • Verwaltete Identität der Microsoft Entra-ID

Nachdem Sie den Authentifizierungsmechanismus ausgewählt haben, der den Anforderungen Ihres Projekts am besten entspricht, müssen Sie ihn in Ihrer Azure DevOps-Pipelinedefinition (pipeline.yml) für die Arbeit mit der Azure Databricks CLI konfigurieren.

Konfigurieren Ihrer Azure DevOps-Pipeline für die Verwendung der Azure CLI für die Authentifizierung

Standardmäßig verwendet die Azure Databricks CLI die Azure CLI als Mechanismus zum Authentifizieren mit Azure Databricks.

Beachten Sie, dass für die Verwendung der Azure CLI für die Authentifizierung alle Aufrufe der Azure Databricks CLI in einer AzureCLI@2 taskCli erfolgen müssen, was bedeutet, dass es keine Möglichkeit gibt, eine authentifizierte Sitzung in nachfolgenden Aufgaben freizugeben. Jede Aufgabe authentifiziert sich unabhängig, wodurch die Latenz bei der Ausführung eingeführt wird.

Die folgende Azure Pipelines-Beispielkonfiguration verwendet die Azure CLI zum Authentifizieren und Ausführen des Befehls Azure Databricks CLI 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

Führen Sie beim Konfigurieren Ihrer Azure DevOps-Pipeline die Azure CLI zum Ausführen von Azure Databricks CLI-Befehlen wie folgt aus:

  • Dient azureSubscription zum Konfigurieren der Dienstverbindung, die Sie verwenden möchten.
  • Konfigurieren Sie useGlobalConfig die Standardeinstellung AZURE_CONFIG_FILE , da die databricks bundle Befehle die Umgebungsvariablenfilterung für Unterverarbeitungen verwenden. Wenn dies nicht festgelegt ist, können diese Unterprozesse die Details der authentifizierten Sitzung nicht finden.
  • Wenn sie noch nicht exportiert wurde (z. B. in einem vorherigen Schritt oder in der Bundlekonfiguration), exportieren Sie die DATABRICKS_HOST Umgebungsvariable.

Konfigurieren Ihrer Azure DevOps-Pipeline für die Verwendung eines geheimen Microsoft Entra-Clientschlüssels für die Authentifizierung

Wenn Sie die Azure CLI nicht für die Authentifizierung verwenden möchten, da sie zu viel Latenz hinzufügt, oder weil Sie die Azure CLI in einem anderen Aufgabentyp verwenden müssen, verwenden Sie einen geheimen Microsoft Entra-Clientschlüssel. Die Authentifizierungsdetails müssen aus der Dienstverbindung abgerufen werden, daher müssen Sie die AzureCLI@2 Aufgabe in der Deklaration Ihrer Pipeline verwenden.

Verwenden Sie die AzureCLI@2 Aufgabe, um die Client-ID und den geheimen Clientschlüssel aus Ihrer Dienstverbindung abzurufen, und exportieren Sie sie dann als Umgebungsvariablen. Nachfolgende Aufgaben können sie direkt verwenden. Ein Beispiel finden Sie unter Verwenden eines Microsoft Entra-Dienstprinzipals zum Verwalten von Git-Ordnern für Databricks.

Die folgende Azure Pipelines-Beispielkonfiguration verwendet einen geheimen Microsoft Entra-Clientschlüssel, um den Befehl Azure Databricks CLI bundle deploy zu authentifizieren und auszuführen:

- 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

Wenn Sie Ihre Azure DevOps-Pipeline so konfigurieren, dass die geheimen Microsoft Entra-Clientschlüssel zum Ausführen von Azure Databricks CLI-Befehlen verwendet werden, gehen Sie wie folgt vor:

  • Konfigurieren, addSpnToEnvironment um relevante Umgebungsvariablen in das Inlineskript zu exportieren.
  • Das Inlineskript exportiert die Umgebungsvariablen im Aufgabenbereich als Auftragsbereichsumgebungsvariablen unter Namen, die von der Azure Databricks CLI automatisch aufgenommen werden.
  • Wenn sie noch nicht exportiert wurde (z. B. in einem vorherigen Schritt oder in der Bundlekonfiguration), exportieren Sie die DATABRICKS_HOST Umgebungsvariable.
  • Wenn Sie die ARM_CLIENT_SECRET Umgebungsvariable mit issecret=truemarkieren, müssen Sie sie explizit jedem nachfolgenden Schritt hinzufügen, der sie benötigt.
    • Wenn Sie dies nicht tun, kann auf die ARM_CLIENT_SECRET Umgebungsvariable für jeden nachfolgenden Schritt zugegriffen werden.
    • Die ARM_CLIENT_SECRET Umgebungsvariable wird unabhängig von der Einstellung in der Ausgabe maskiert.

Konfigurieren Ihrer Azure DevOps-Pipeline für die Verwendung einer von Microsoft Entra verwalteten Identität für die Authentifizierung

Da die Azure Managed Identity Authentication von dem virtuellen Computer oder der Containerkonfiguration abhängt, um sicherzustellen, dass die Azure Databricks CLI unter der richtigen Identität ausgeführt wird, erfordert Ihre Azure DevOps-Pipelinekonfiguration nicht, dass Sie die AzureCLI@2 Aufgabe angeben.

Die folgende Azure Pipelines-Beispielkonfiguration verwendet eine von Microsoft Entra verwaltete Identität zum Authentifizieren und Ausführen des Befehls Azure Databricks CLI 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

Wenn Sie Ihre Azure DevOps-Pipeline so konfigurieren, dass die von Microsoft Entra verwalteten Identitäten zum Ausführen von Azure Databricks CLI-Befehlen verwendet werden, gehen Sie wie folgt vor:

  • Der von Microsoft Entra verwalteten Identität muss die Rolle "Mitwirkender" im Databricks-Arbeitsbereich zugewiesen werden, auf den sie zugreifen wird.
  • Der Wert der DATABRICKS_AZURE_RESOURCE_ID Umgebungsvariablen befindet sich unter "Eigenschaften" für die Azure Databricks-Instanz im Azure-Portal.
  • Der Wert der ARM_CLIENT_ID Umgebungsvariable ist die Client-ID der verwalteten Identität.

Hinweis

Wenn die DATABRICKS_HOST Umgebungsvariable in dieser Konfiguration nicht angegeben ist, wird der Wert von DATABRICKS_AZURE_RESOURCE_ID.

Installieren der Azure Databricks CLI aus der Azure Pipelines-Pipeline

Nachdem Sie Ihre bevorzugten Authentifizierungsmechanismen konfiguriert haben, müssen Sie die Azure Databricks CLI auf dem Host oder Agent installieren, der die Azure Databricks CLI-Befehle ausführt.

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

Tipp

  • Wenn Sie die neueste Version der Azure Databricks CLI nicht automatisch installieren möchten, ersetzen main Sie die Installationsprogramm-URL durch eine bestimmte Version (z. B v0.224.0. ).

Bewährte Methoden

Siehe auch