Freigeben über


Tutorial: Herstellen einer Verbindung mit Azure Data Lake Storage Gen2

Hinweis

In diesem Artikel werden Legacy-Muster zum Konfigurieren des Zugriffs auf Azure Data Lake Storage Gen2 beschrieben. Databricks empfiehlt die Verwendung des Unity-Katalogs. Siehe Erstellen eines Unity-Katalog-Metastores und Herstellen einer Verbindung mit Cloudobjektspeicher und -diensten mithilfe des Unity-Katalogs.

In diesem Tutorial werden alle erforderlichen Schritte zum Herstellen einer Verbindung zwischen Azure Databricks und Azure Data Lake Storage Gen2 mithilfe von OAuth 2.0 mit einem Microsoft Entra ID-Dienstprinzipal erläutert.

Anforderungen

Schließen Sie diese Aufgaben ab, bevor Sie dieses Tutorial beginnen:

Schritt 1: Erstellen eines Microsoft Entra ID-Dienstprinzipals

Um Dienstprinzipale zum Herstellen einer Verbindung mit Azure Data Lake Storage Gen2 zu verwenden, muss ein Administratorbenutzer eine neue Microsoft Entra ID-Anwendung erstellen. Wenn Sie bereits über einen Microsoft Entra ID-Dienstprinzipal verfügen, fahren Sie mit Schritt 2: Erstellen eines geheimen Clientschlüssels für Ihren Dienstprinzipal fort.

Führen Sie die folgenden Anweisungen aus, um einen Microsoft Entra ID-Dienstprinzipal zu erstellen:

  1. Melden Sie sich beim Azure-Portal an.

    Hinweis

    Welches Portal Sie verwenden müssen, hängt davon ab, ob Ihre Microsoft Entra ID-Anwendung in der öffentlichen Cloud von Azure oder in einer nationalen oder Sovereign Cloud ausgeführt wird. Weitere Informationen finden Sie unter Nationale Clouds.

  2. Wenn Sie Zugriff auf mehrere Mandanten, Abonnements oder Verzeichnisse haben, klicken Sie im oberen Menü auf das Symbol Verzeichnisse und Abonnements (Verzeichnis mit Filter), um zu dem Verzeichnis zu wechseln, in dem Sie den Dienstprinzipal bereitstellen möchten.

  3. Suchen Sie nach <Microsoft Entra ID und wählen Sie sie aus.

  4. Klicken Sie unter Verwalten auf App-Registrierungen > Neue Registrierung.

  5. Geben Sie für Name einen Namen für die Anwendung ein.

  6. Wählen Sie im Abschnitt Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis (einzelner Mandant) aus.

  7. Klicken Sie auf Registrieren.

Schritt 2: Erstellen eines geheimen Clientschlüssels für Ihren Dienstprinzipal

  1. Klicken Sie unter Verwalten auf Zertifikate & Geheimnisse.

  2. Klicken Sie auf der Registerkarte Geheime Clientschlüssel auf Neuer geheimer Clientschlüssel.

    Neuer geheimer Clientschlüssel

  3. Geben Sie im Bereich Geheimen Clientschlüssel hinzufügen unter Beschreibung eine Beschreibung für den geheimen Clientschlüssel ein.

  4. Wählen Sie unter Ablauf einen Ablaufzeitzeitraum für den geheimen Clientschlüssel aus, und klicken Sie dann auf Hinzufügen.

  5. Kopieren Sie den Wert des geheimen Clientschlüssels, und speichern Sie ihn an einem sicheren Ort, da dieser geheime Clientschlüssel das Kennwort für Ihre Anwendung ist.

  6. Kopieren Sie auf der Seite Übersicht der Anwendungsseite im Abschnitt Zusammenfassung die folgenden Werte:

    • Anwendungs-ID (Client)
    • Verzeichnis-ID (Mandant)

Schritt 3: Gewähren des Zugriffs auf Azure Data Lake Storage Gen2 für den Dienstprinzipal

Sie gewähren Zugriff auf Speicherressourcen, indem Sie Ihrem Dienstprinzipal Rollen zuweisen. In diesem Tutorial weisen Sie dem Dienstprinzipal in Ihrem Azure Data Lake Storage Gen2-Konto die Rolle Mitwirkender an Storage-Blobdaten zu. Je nach den spezifischen Anforderungen müssen Sie möglicherweise andere Rollen zuweisen.

  1. Navigieren Sie im Azure-Portal zum Speicherkonten-Dienst.
  2. Wählen Sie ein zu verwendendes Azure-Speicherkonto aus.
  3. Klicken Sie auf Zugriffssteuerung (IAM).
  4. Klicken Sie auf + Hinzufügen, und wählen Sie dann im Dropdownmenü die Option Rollenzuweisung hinzufügen aus.
  5. Legen Sie das Feld Auswählen auf den in Schritt 1 erstellten Microsoft Entra ID-Anwendungsnamen und die Rolle auf Mitwirkender an Storage-Blobdaten fest.
  6. Klicken Sie auf Speichern.

Schritt 4: Hinzufügen des geheimen Clientschlüssels zu Azure Key Vault

Sie können den geheimen Clientschlüssel aus Schritt 1 in Azure Key Vault speichern.

  1. Navigieren Sie im Azure-Portal zum Dienst Key Vault.
  2. Wählen Sie einen zu verwendenden Azure Key Vault aus.
  3. Wählen Sie auf den Seiten mit den Key Vault-Einstellungen Geheimnisse aus.
  4. Klicken Sie auf + Generieren/importieren.
  5. Wählen Sie unter Uploadoptionen die Option Manuell aus.
  6. Geben Sie für Name einen Namen für das Geheimnis ein. Der Geheimnisname muss innerhalb einer Key Vault-Instanz eindeutig sein.
  7. Fügen Sie unter Wert den geheimen Clientschlüssel ein, den Sie in Schritt 1 gespeichert haben.
  8. Klicken Sie auf Erstellen.

Schritt 5: Konfigurieren Ihrer Azure Key Vault-Instanz für Azure Databricks

  1. Wechseln Sie im Azure-Portal zur Azure Key Vault-Instanz.
    1. Wählen Sie unter "Einstellungen" die Registerkarte "Access-Konfiguration " aus.

    2. Legen Sie das Berechtigungsmodell auf Tresorzugriffsrichtlinie fest.

      Hinweis

      Das Erstellen einer von Azure Key Vault unterstützten Geheimnisbereichsrolle gewährt die Berechtigungen Abrufen (Get) und Auflisten (List) der Anwendungs-ID für den Azure Databricks-Dienst mithilfe von Schlüsseltresor-Zugriffsrichtlinien. Das rollenbasierte Zugriffssteuerungsberechtigungsmodell in Azure wird mit Azure Databricks nicht unterstützt.

    3. Wählen Sie unter Einstellungen die Option Netzwerk aus.

    4. Legen Sie unter Firewalls und virtuelle Netzwerke die Option Zugriff zulassen von: fest, um den öffentlichen Zugriff von bestimmten virtuellen Netzwerken und IP-Adressen zuzulassen.

      Wählen Sie unter Ausnahme die Option Vertrauenswürdigen Microsoft-Diensten die Umgehung dieser Firewall erlauben aus.

      Hinweis

      Sie können auch für Zugriff erlauben von: die Option Öffentlichen Zugriff aus allen Netzwerken zulassen auswählen.

Schritt 6: Erstellen eines geheimen Azure Key Vault-gesicherten geheimen Bereichs in Ihrem Azure Databricks-Arbeitsbereich

Um auf den in einem Azure Key Vault gespeicherten geheimen Clientschlüssel zu verweisen, können Sie einen Geheimnisbereich erstellen, der von Azure Key Vault in Azure Databricks unterstützt wird.

  1. Wechseln Sie zur Adresse https://<databricks-instance>#secrets/createScope. Bei dieser URL wird die Groß-/Kleinschreibung beachtet. Der Bereich in createScope muss in Großbuchstaben geschrieben werden.

    Bereich erstellen

  2. Geben Sie den Namen des Geheimnisbereichs ein. Bei Namen von Geheimnisbereichen wird Groß- und Kleinschreibung beachtet.

  3. Verwenden Sie das Dropdownmenü Prinzipal verwalten, um anzugeben, ob Alle Benutzer über die MANAGE-Berechtigung für diesen Geheimnisbereich verfügen oder ob nur der Ersteller des Geheimnisbereichs (d. h. Sie) über diese Berechtigung verfügt.

  4. Geben Sie den DNS-Namen (z. B. https://databrickskv.vault.azure.net/) und die Ressourcen-ID ein, z. B.:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Diese Eigenschaften sind auf der Registerkarte *Einstellungen > Eigenschaften einer Azure Key Vault-Instanz in Ihrem Azure-Portal verfügbar.

  5. Klicken Sie auf die Schaltfläche Erstellen .

Schritt 7: Herstellen einer Verbindung mit Azure Data Lake Storage Gen2 mithilfe von Python

Sie können jetzt sicher auf Daten im Azure-Speicherkonto zugreifen, indem Sie OAuth 2.0 mit Ihrem Microsoft Entra ID-Anwendungsdienstprinzipal für die Authentifizierung über ein Azure Databricks-Notebook verwenden.

  1. Wechseln Sie zu Ihrem Azure Databricks-Arbeitsbereich, und erstellen Sie ein neues Python-Notebook.

  2. Führen Sie den folgenden Python-Code mit den folgenden Ersetzungen aus, um eine Verbindung mit Azure Data Lake Storage Gen2 herzustellen:

    service_credential = dbutils.secrets.get(scope="<scope>",key="<service-credential-key>")
    
    spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
    spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
    spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
    

    Replace

    • <scope> durch den Namen des Geheimnisbereichs aus Schritt 5.
    • <service-credential-key> durch den Namen des Schlüssels, der den geheimen Clientschlüssel enthält.
    • <storage-account>durch den Namen des Azure-Speicherkontos.
    • <application-id> mit der Anwendungs-ID (Client-ID) für die Microsoft Entra-ID-Anwendung.
    • <directory-id> mit der Verzeichnis-ID (Mandant-ID) für die Microsoft Entra-ID-Anwendung.

    Sie haben Ihren Azure Databricks-Arbeitsbereich nun erfolgreich mit Ihrem Azure Data Lake Storage Gen2-Konto verbunden.

Gewähren des Zugriffs für Ihren Azure Databricks-Arbeitsbereich auf Azure Data Lake Storage Gen2

Wenn Sie eine Firewall auf Azure Data Lake Storage Gen2 konfigurieren, müssen Sie Netzwerkeinstellungen konfigurieren, damit Ihr Azure Databricks-Arbeitsbereich eine Verbindung mit Azure Data Lake Storage Gen2 herstellen kann. Stellen Sie zunächst sicher, dass Ihr Azure Databricks-Arbeitsbereich in Ihrem eigenen virtuellen Netzwerk bereitgestellt wurde. Befolgen Sie dazu die Anleitung unter Bereitstellen von Azure Databricks in Ihrem virtuellen Azure-Netzwerk (VNet-Injektion). Sie können entweder private Endpunkte oder den Zugriff über Ihr VNet auf Azure Data Lake Storage Gen2 konfigurieren, um Verbindungen von Ihren Subnetzen mit Ihrem Azure Data Lake Storage Gen2-Konto zuzulassen.

Wenn Sie serverlose Compute wie serverlose SQL-Lagerhäuser verwenden, müssen Sie Zugriff von der serverlosen Computeebene auf Azure Data Lake Storage Gen2 gewähren. Weitere Informationen unter Serverless Compute Plane-Netztechnologie.

Gewähren des Zugriffs mithilfe privater Endpunkte

Sie können private Endpunkte für Ihr Azure Data Lake Storage Gen2-Konto verwenden, um Ihrem Azure Databricks-Arbeitsbereich den sicheren Zugriff auf Daten über eine private Verbindung zu ermöglichen.

Informationen zum Erstellen eines privaten Endpunkts über das Azure-Portal finden Sie unter Tutorial: Herstellen einer Verbindung mit einem Speicherkonto mithilfe eines privaten Azure-Endpunkts. Stellen Sie sicher, dass Sie den privaten Endpunkt in demselben VNet erstellen, in dem Ihr Azure Databricks-Arbeitsbereich bereitgestellt ist.

Gewähren des Zugriffs aus ihrem VNet

VNET-Dienstendpunkte ermöglichen es Ihnen, Ihre kritischen Azure-Dienstressourcen auf Ihre virtuellen Netzwerke zu beschränken und so zu schützen. Sie können einen Dienstendpunkt für Azure Storage innerhalb des VNet aktivieren, das Sie für Ihren Azure Databricks-Arbeitsbereich verwendet haben.

Weitere Informationen, einschließlich Anweisungen für Azure CLI und PowerShell, finden Sie unter Gewähren des Zugriffs über ein VNet.

  1. Melden Sie sich beim Azure-Portal als Benutzer mit der Rolle „Speicherkontomitwirkender“ für Ihr Azure Data Lake Storage Gen2-Konto an.
  2. Navigieren Sie zu Ihrem Azure Storage-Konto, und wechseln Sie zur Registerkarte Netzwerk .
  3. Vergewissern Sie sich, dass Sie „Zugriff von ausgewählten virtuellen Netzwerken und IP-Adressen zulassen“ ausgewählt haben.
  4. Wählen Sie unter Virtuelle Netzwerke die Option Vorhandenes virtuelles Netzwerk hinzufügen aus.
  5. Wählen Sie im Seitenbereich unter Abonnement das Abonnement aus, in dem sich Ihr virtuelles Netzwerk befindet.
  6. Wählen Sie unter Virtuelle Netzwerke das virtuelle Netzwerk aus, in dem Ihr Azure Databricks-Arbeitsbereich bereitgestellt ist.
  7. Wählen Sie unter Subnetze die Option Alle auswählen aus.
  8. Klicken Sie auf Aktivieren.
  9. Klicken Sie zum Übernehmen der Änderungen auf Speichern.

Problembehandlung

Fehler: IllegalArgumentException: Es ist kein Geheimnis mit dem Bereich „KeyVaultScope“ und dem Schlüssel vorhanden.

Dieser Fehler bedeutet wahrscheinlich:

  • Der von Databricks unterstützte Bereich, auf den im Code verwiesen wird, ist ungültig.

Überprüfen Sie den Namen Ihres Geheimnisses aus Schritt 4 in diesem Artikel.

Fehler: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks konnte nicht auf keyvault zugreifen.

Dieser Fehler bedeutet wahrscheinlich:

  • Der von Databricks unterstützte Bereich, auf den im Code verwiesen wird, ist ungültig. oder das im Key Vault gespeicherte Geheimnis ist abgelaufen.

Überprüfen Sie Schritt 3, um sicherzustellen, dass das Geheimnis im Azure Key Vault gültig ist. Überprüfen Sie den Namen Ihres Geheimnisses aus Schritt 4 in diesem Artikel.

Fehler: ADAuthenticator$HttpException: HTTP-Fehler 401: Tokenfehler beim Abrufen des Tokens aus der AzureAD-Antwort

Dieser Fehler bedeutet wahrscheinlich:

  • Der geheime Clientschlüssel des Dienstprinzipals ist abgelaufen.

Erstellen Sie gemäß Schritt 2 in diesem Artikel einen neuen geheimen Clientschlüssel, und aktualisieren Sie das Geheimnis in Ihrem Azure Key Vault.

Ressourcen