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.
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
- Verwendet die der Ressource zugewiesene Identität (z. B. Compute), für die die CLI ausgeführt wird. Im Kontext von Azure DevOps ist dies nur dann relevant, wenn Sie selbst gehostete Läufer verwenden. Siehe Erstellen einer Azure Resource Manager-Dienstverbindung zu einer VM, die eine verwaltete Identität verwendet.
- Anwendbare Authentifizierungsmechanismen: Azure CLI, von Microsoft Entra verwaltete Identitäten (früher als "MSI" bezeichnet).
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 task
Cli 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 StandardeinstellungAZURE_CONFIG_FILE
, da diedatabricks 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 mitissecret=true
markieren, 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.
- Wenn Sie dies nicht tun, kann auf die
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. Bv0.224.0
. ).
Bewährte Methoden
Databricks empfiehlt die Verwendung des Identitätsverbunds von Microsoft Entra-Workload als Authentifizierungsmethode. Es basiert nicht auf geheimen Schlüsseln und ist sicherer als andere Authentifizierungsmethoden. Sie funktioniert automatisch mit der
AzureCLI@2
Aufgabe ohne manuelle Konfiguration.Weitere Informationen finden Sie unter Erstellen einer Azure Resource Manager-Dienstverbindung, die den Workload-Identitätsverbund verwendet.