Freigeben über


Verwenden eines Microsoft Entra-Dienstprinzipals zum Authentifizieren des Zugriffs auf Azure Databricks Git-Ordner

Erfahren Sie, wie Sie den authentifizierten Zugriff auf Azure Databricks Git-Ordner, die von Azure DevOps (Azure Repos) gehostet werden, mit einem Microsoft Entra-Dienstprinzipal konfigurieren.

Wenn Ihr Databricks-Projekt Databricks Git-Ordner enthält, die von Azure Repos Git-Repositorys unterstützt werden, und Sie diese in Ihrer Automatisierung verwalten möchten, können Sie anhand der Informationen in diesem Artikel die Authentifizierung mit einem Microsoft Entra-Dienstprinzipal und Azure DevOps konfigurieren. Nachdem Sie diese Aufgabe durchgeführt haben, verfügen Sie über authentifizierte Databricks Git-Anmeldeinformationen, die Sie in Ihrer Automatisierung verwenden können.

Welche Vorteile bietet die Verwendung von Microsoft Entra im Vergleich zu persönlichen Zugriffstoken?

In der Vergangenheit waren PATs (Personal Access Tokens, persönliche Zugriffstoken) beim Aufrufen einer API, die spezifischen Zugriff und bestimmte Berechtigungen für Ressourcen erfordert, die bevorzugte Authentifizierungsmethode. Diese Bearertoken stellten einen Benutzernamen und ein Kennwort dar und erforderten eine regelmäßige Rotation, um das mit ihnen einhergehende Sicherheitsrisiko zu minimieren. Microsoft Entra ID-Zugriffstoken lösen dieses Problem, indem die Rotation der Token verwaltet und automatisch jede Stunde durchgeführt wird. Sie werden von Databricks als bewährte Methode für die Arbeit mit Azure-Ressourcen empfohlen. Durch das Erstellen eines Microsoft Entra-Dienstprinzipals können Sie die Berechtigungen, die für den Zugriff auf diese Ressourcen gewährt wurden, ohne ein Microsoft Azure-Benutzerkonto verwalten.

Anforderungen

Sie benötigen Folgendes:

  • Zugriff auf ein Azure DevOps-Projekt mit einem Azure Repos Git-Repository, das mit einem Databricks Git-Ordner verbunden ist
  • Berechtigungen für Ihr Azure-Konto zum Erstellen eines Microsoft Entra-Dienstprinzipals
  • Die Azure CLI muss installiert sein.
  • Installation der Databricks CLI (Command Line Interface, Befehlszeilenschnittstelle)

Schritt 1: Erstellen eines Microsoft Entra-Dienstprinzipals

Sie können diesen Schritt überspringen, wenn Sie bereits über einen konfigurierten Microsoft Entra-Dienstprinzipal verfügen.

Führen Sie zum Erstellen eines Microsoft Entra-Dienstprinzipals die Schritte in der Microsoft Azure-Dokumentation Registrieren einer Microsoft Entra-App und Erstellen eines Dienstprinzipals aus. Ignorieren Sie im Abschnitt „Einrichten der Authentifizierung“ dieses Artikels die ersten beiden Optionen, und führen Sie die Schritte unter „Option 3: Erstellen eines neuen geheimen Clientschlüssels” aus.

Nach der Einrichtung verfügen Sie über Folgendes:

  • Einen geheimen Clientschlüssel. Dies ist eine lange Zeichenfolge zufälliger Zeichen.
    • Eine Dienstprinzipal-ID. Dies ist der eindeutige Name, den Sie dem Microsoft Entra-Dienstprinzipal zugewiesen haben. Als bewährte Methode sollte der Name auch Informationen dazu enthalten, wie und wann der Dienstprinzipal verwendet werden soll (z. B. Databricks_CICD_SP).

(Sie können die optionale Benutzeroberfläche für die Umleitung im Konfigurationsdialogfeld von Microsoft Entra ignorieren, da sie in dieser Konfiguration nicht verwendet wird.)

Kopieren Sie diese Informationen zur Verwendung in späteren Schritten. Sie können sie sichern oder löschen, nachdem Sie die Schritte in dieser Dokumentation erfolgreich abgeschlossen haben.

Schritt 2: Konfigurieren der Azure DevOps-Berechtigungen für den Microsoft Entra-Dienstprinzipal

Zunächst müssen Sie dem Microsoft Entra-Dienstprinzipal die Berechtigung für den Zugriff auf Ihre Azure DevOps-Ressourcen erteilen. Dazu müssen Sie das Azure DevOps-Portal verwenden.

  1. Melden Sie sich bei Ihrem Azure DevOps-Konto an, und navigieren Sie zu Ihrem Projekt.

  2. Klicken Sie unter Projekteinstellungen>Berechtigungen auf Leser.

    Inhalt des Bereichs „Mitglieder“ unter „Berechtigungen“ in den Projekteinstellungen von Azure DevOps

  3. Klicken Sie auf die Registerkarte Mitglieder und dann auf Hinzufügen, und fügen Sie den Namen des von Ihnen erstellten Microsoft Entra-Dienstprinzipals hinzu.

  4. Wechseln Sie in der Konsole zurück zur Organisationsebene Ihrer Azure DevOps-Organisation, und klicken Sie unten im linken Bereich auf Organisationseinstellungen.

  5. Klicken Sie auf Benutzer>Benutzer hinzufügen, und konfigurieren Sie dann wie folgt den Zugriff für Ihren Dienstprinzipal:

    • Fügen Sie Ihren Microsoft Entra-Dienstprinzipal mithilfe der zuvor erstellten ID hinzu.
    • Konfigurieren Sie den Zugriff für den Dienstprinzipal mit der Mindestebene, die zum Ausführen von Vorgängen in Azure Repos erforderlich ist. In der Regel sind Berechtigungen der Ebene Standard ausreichend. Wenden Sie sich an Ihren Azure DevOps-Organisationsadministrator, falls Sie nicht sicher sind, welche Ebene Sie verwenden sollten.
    • Fügen Sie Ihrem Azure DevOps-Projekt den Dienstprinzipal hinzu.
    • Weisen Sie den Dienstprinzipal der Gruppe Projektmitwirkende zu.

    Inhalt des Bereichs „Benutzer“ in den Organisationseinstellungen von Azure DevOps

Schritt 3: Zuweisen von Berechtigungen zum Dienstprinzipal in Azure Databricks

Sie müssen Ihrem Microsoft Entra-Dienstprinzipal auch Berechtigungen in Azure Databricks zuweisen.

  1. Melden Sie sich bei der Azure Databricks-Verwaltungskonsole für Ihr Konto an.
  2. Klicken Sie auf Benutzer und Gruppen.
  3. Klicken Sie auf die Registerkarte Dienstprinzipale und dann auf Dienstprinzipal hinzufügen. Registerkarte „Dienstprinzipale“ unter „Benutzer und Gruppen“ in der Databricks-Kontoverwaltungskonsole
  4. Klicken Sie auf der Seite Dienstprinzipal hinzufügen auf Von Microsoft Entra ID verwaltet, und fügen Sie dann Ihre Microsoft Entra-Anwendungs-ID und den Dienstprinzipalnamen aus „Schritt 1: Erstellen eines Microsoft Entra-Dienstprinzipals“ hinzu. Klicken Sie anschließend auf Hinzufügen. Dialogfeld „Dienstprinzipal hinzufügen“ in der Databricks-Kontoverwaltungskonsole
  5. Klicken Sie auf den hinzugefügten Microsoft Entra-Dienstprinzipal, um die Registerkarte Prinzipalinformationen anzuzeigen.
  6. Klicken Sie unten links auf der Seite auf Geheimnis generieren, um ein OAuth-Geheimnis zu generieren. Mit diesem Geheimnis können Sie Azure Databricks-API-Aufrufe mithilfe der Databricks CLI (Command Line Interface, Befehlszeilenschnittstelle) authentifizieren.
  7. Kopieren Sie die Geheimniszeichenfolge und die Client-ID, und klicken Sie dann auf Fertig. Sie benötigen diese beiden Werte im nächsten Schritt. Wählen Sie Fertig aus. Dialogfeld „Geheimnis generieren“ in der Databricks-Kontoverwaltungskonsole
  8. Klicken Sie in der linken Randleiste auf Arbeitsbereiche, wählen Sie Ihren Arbeitsbereich aus, und klicken Sie dann auf die Registerkarte Berechtigungen.
  9. Erteilen Sie Ihrem Dienstprinzipal Berechtigungen vom Typ „Benutzer“, und klicken Sie dann auf Berechtigungen hinzufügen.

Wichtig

Wenn die Registerkarte Berechtigungen abgeblendet ist, ist Ihr Azure Databricks-Arbeitsbereich keinem Unity Catalog-Metastore zugewiesen. Wenden Sie sich an Ihren Databricks-Administrator.

Als Nächstes erstellen Sie Ihre Git-Anmeldeinformationen für Azure Databricks.

Schritt 4: Erstellen eines Microsoft Entra ID-Zugriffstokens und Speichern des Tokens als Git-Anmeldeinformationen für Azure Databricks

Hinweis

Für diesen Schritt müssen Sie sowohl die Azure CLI als auch die Databricks CLI verwenden.

Um sich bei Azure Databricks zu authentifizieren, benötigen Sie ein Konfigurationsprofil (.databrickscfg), das mit dem im vorherigen Schritt erstellten OAuth-Geheimnis konfiguriert ist. Um diese Konfiguration einzurichten, öffnen Sie die .databrickscfg-Datei im Editor, und fügen Sie ihr Folgendes hinzu:

[DEFAULT]
host = https://<workspace-url>.azuredatabricks.net/
client_id = <service principal ID>
client_secret = <Databricks OAuth token value>

Dabei ist host die URL zu Ihrem Databricks-Arbeitsbereich, client_id die Microsoft Entra-Dienstprinzipal-ID und client_secret der in „Schritt 3: Zuweisen von Berechtigungen zum Dienstprinzipal in Azure Databricks“ erstellte geheime OAuth-Clientschlüssel.

Sie sollten jetzt über die folgenden Werte für CLI-Aufrufe in diesem Prozess verfügen:

  • Die Client-ID des Dienstprinzipals aus Schritt 1 oder 3 (diese sollten identisch sein) (sp_id in den folgenden CLI-Beispielen)
  • Den Dienstprinzipalnamen aus Schritt 1 (sp_name)
  • Den geheimen Clientschlüssel des Dienstprinzipals aus Schritt 1 (sp_secret)
  • Den Namen Ihrer Azure DevOps-Organisation (devops_org)
  • Den Namen Ihres Azure DevOps-Projekts (devops_project)
  • Den Namen Ihres Azure Repos-Repositorys (devops_repo)

Außerdem benötigen Sie die Azure-Mandanten-ID (tenant_id in den folgenden Beispielen) für Ihr Azure-Abonnement. Befolgen Sie diese Anweisungen zum Abrufen der Mandanten-ID im Azure-Portal.

Jetzt können Sie über die Azure CLI Git-Anmeldeinformationen erstellen.

  1. Öffnen Sie ein Befehlszeilenfenster mit Zugriff auf die Azure CLI und die Databricks CLI.
  2. Führen Sie den folgenden Azure CLI-Befehl aus, um sich als Microsoft Entra-Dienstprinzipal anzumelden: az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
  3. Fordern Sie als Microsoft Entra-Dienstprinzipal ein Microsoft Entra ID-Zugriffstoken an, und weisen Sie es einer Variablen zu: ENTRA_ID_TOKEN=$(az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv)
  4. Verwenden Sie das Zugriffstoken, um Git-Anmeldeinformationen für den Azure Databricks-Zugriff mit den dafür konfigurierten Berechtigungsebenen zu erstellen: databricks git-credentials create azureDevOpsServices --personal-access-token $ENTRA_ID_TOKEN --git-username $sp_name
  5. Erstellen Sie zum Schluss einen neuen Git-Ordner mit dem Microsoft Entra-Dienstprinzipal: databricks repos create \https://$sp_name@dev.azure.com/$devops_org/$devops_project/_git/$devops_repo

Der entsprechende Git-Ordner für dieses Azure DevOps-Repository ist jetzt in Ihrem Azure Databricks-Arbeitsbereich verfügbar. Sie können die Git-Anmeldeinformationen bereitstellen, um sie mithilfe der Databricks Repos-REST-APIs oder der Databricks CLI über Ihren Code zu verwalten.

Sie haben erfahren, wie Sie ein Microsoft Entra ID-Zugriffstoken für Azure DevOps generieren und als Git-Anmeldeinformationen für Azure Databricks speichern.

Bewährte Methoden

Das Entra ID-Zugriffstoken ist kurzlebig. Ihre Pipeline muss die Git-Anmeldeinformationen für Databricks daher mithilfe von git-credentials update aktualisieren. Anschließend können Sie damit mithilfe von databricks repos update einen Pull Request auslösen.

Wichtig

In einer Produktionsumgebung sind zusätzliche Sicherheitsmaßnahmen erforderlich. Der geheime Clientschlüssel des Dienstprinzipals und das OAuth-Token für Databricks sollten in einer Produktionsumgebung in einem sicheren Geheimnisspeicher wie Azure Key Vault gespeichert werden.

Siehe auch