Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
In diesem Artikel werden Legacymuster zum Konfigurieren des Zugriffs auf Azure Data Lake Storage beschrieben. Databricks empfiehlt die Verwendung des Unity-Katalogs. Siehe Erstellen eines Unity-Katalog-Metastores und Herstellen einer Verbindung mit Cloudobjektspeicher mit Unity Catalog.
In diesem Tutorial werden alle erforderlichen Schritte zum Herstellen einer Verbindung zwischen Azure Databricks und Azure Data Lake Storage 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:
- Erstellen eines Azure Databricks-Arbeitsbereichs Siehe Schnellstart: Erstellen eines Azure Databricks-Arbeitsbereichs
- Erstellen Sie ein Azure Data Lake Storage-Speicherkonto. Siehe Schnellstart: Erstellen eines Azure Data Lake Storage-Speicherkontos.
- Erstellen Sie eine Azure Key Vault-Instanz. Schnellstart: Erstellen eines Azure Key Vault
Schritt 1: Erstellen eines Microsoft Entra ID-Dienstprinzipals
Um Dienstprinzipale für die Verbindung mit Azure Data Lake Storage zu verwenden, muss ein Administratorbenutzer eine neue Microsoft Entra ID-Anwendung erstellen. Wenn Sie bereits über einen Microsoft Entra ID-Diensthauptbenutzer verfügen, fahren Sie mit Schritt 2 fort: Erstellen eines Clientgeheimnisses für Ihren Diensthauptbenutzer.
Führen Sie die folgenden Anweisungen aus, um einen Microsoft Entra ID-Dienstprinzipal zu erstellen:
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".
Wenn Sie Zugriff auf mehrere Mandanten, Abonnements oder Verzeichnisse haben, wählen Sie im oberen Menü das Symbol Verzeichnisse und Abonnements (Verzeichnis mit Filter) aus, um zu dem Verzeichnis zu wechseln, in dem Sie den Dienstprinzipal bereitstellen möchten.
Suchen Sie nach <Microsoft Entra ID und wählen Sie sie aus.
Klicken Sie unter "Verwalten" auf "App-Registrierungen Neue Registrierung">.
Geben Sie für "Name" einen Namen für die Anwendung ein.
Wählen Sie im Abschnitt "Unterstützte Kontotypen" nur "Konten" in diesem Organisationsverzeichnis (nur einzelner Mandant) aus.
Klicken Sie auf "Registrieren".
Schritt 2: Erstellen eines geheimen Clientschlüssels für Ihren Dienstprinzipal
Klicken Sie unter "Verwalten" auf "Zertifikate und Geheime Schlüssel".
Klicken Sie auf der Registerkarte "Geheime Clientschlüssel " auf "Neuer geheimer Clientschlüssel".
Geben Sie im Bereich "Geheimen Clientschlüssel hinzufügen " für "Beschreibung" eine Beschreibung für den geheimen Clientschlüssel ein.
Wählen Sie für "Läuft ab" einen Ablaufzeitraum für den geheimen Clientschlüssel aus, und klicken Sie dann auf "Hinzufügen".
Kopieren Und speichern Sie den Wert des geheimen Clientschlüssels an einem sicheren Ort, da dieser geheime Clientschlüssel das Kennwort für Ihre Anwendung ist.
Kopieren Sie auf der Seite "Übersicht" der Anwendung im Abschnitt "Essentials " die folgenden Werte:
- Anwendungs-ID (Client)
- Verzeichnis-ID (Mandant)
Schritt 3: Gewähren des Dienstprinzipalzugriffs auf Azure Data Lake Storage
Sie gewähren Zugriff auf Speicherressourcen, indem Sie Ihrem Dienstprinzipal Rollen zuweisen. In diesem Tutorial weisen Sie dem oder den Dienstprinzipalen in Ihrem Azure Data Lake Storage-Konto die Rolle Mitwirkender an Speicherblobdaten zu. Je nach den spezifischen Anforderungen müssen Sie möglicherweise andere Rollen zuweisen.
- Wechseln Sie im Azure-Portal zum Speicherkontendienst .
- Wählen Sie ein zu verwendendes Azure-Speicherkonto aus.
- Klicken Sie auf Access Control (IAM).
- Klicken Sie auf +Hinzufügen , und wählen Sie im Dropdownmenü " Rollenzuweisung hinzufügen " aus.
- Legen Sie das Feld "Auswählen " auf den Namen der Microsoft Entra-ID-Anwendung fest, den Sie in Schritt 1 erstellt haben, und legen Sie "Rolle " auf " Storage Blob Data Contributor" fest.
- 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.
- Wechseln Sie im Azure-Portal zum Key Vault-Dienst .
- Wählen Sie einen zu verwendenden Azure Key Vault aus.
- Wählen Sie auf den Seiten "Key Vault-Einstellungen" die Option "Geheime Schlüssel" aus.
- Klicken Sie auf +Generieren/Importieren.
- Wählen Sie unter Uploadoptionen die Option Manuell aus.
- Geben Sie für "Name" einen Namen für den geheimen Schlüssel ein. Der Geheimnisname muss innerhalb einer Key Vault-Instanz eindeutig sein.
- Fügen Sie für "Wert" den geheimen Clientschlüssel ein, den Sie in Schritt 1 gespeichert haben.
- Klicken Sie auf "Erstellen".
Schritt 5: Konfigurieren Ihrer Azure Key Vault-Instanz für Azure Databricks
Wechseln Sie im Azure-Portal zur Azure Key Vault-Instanz.
Wählen Sie unter "Einstellungen" die Registerkarte " Access-Konfiguration " aus.
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.
Wählen Sie unter "Einstellungen" die Option "Netzwerk" aus.
In Firewalls und virtuelle Netzwerke setzen Sie Zugriff erlauben von: auf Öffentlichen Zugriff von bestimmten virtuellen Netzwerken und IP-Adressen erlauben.
Aktivieren Sie unter Ausnahme die Option Zulassen, dass vertrauenswürdige Microsoft-Dienste diese Firewall umgehen.
Hinweis
Sie können auch "Zugriff zulassen von" festlegen: um den öffentlichen Zugriff von allen Netzwerken aus zuzulassen.
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.
Wechseln Sie zur Adresse
https://<databricks-instance>#secrets/createScope
. Bei dieser URL wird die Groß-/Kleinschreibung beachtet. Der Bereich increateScope
muss in Großbuchstaben geschrieben werden.Geben Sie den Namen des Geheimnisbereichs ein. Bei Namen von Geheimnisbereichen wird Groß- und Kleinschreibung beachtet.
Verwenden Sie das Dropdownmenü "Prinzipal verwalten ", um anzugeben, ob alle Benutzer
MANAGE
über die Berechtigung für diesen geheimen Bereich oder nur den Ersteller des geheimen Bereichs verfügen (d. b. Sie).Geben Sie den DNS-Namen (zum Beispiel
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 > " eines Azure Key Vault in Ihrem Azure-Portal verfügbar.
Klicken Sie auf die Schaltfläche " Erstellen ".
Schritt 7: Herstellen einer Verbindung mit Azure Data Lake Storage 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.
Wechseln Sie zu Ihrem Azure Databricks-Arbeitsbereich, und erstellen Sie ein neues Python-Notebook.
Führen Sie den folgenden Python-Code mit den unten aufgeführten Ersetzungen aus, um eine Verbindung mit Azure Data Lake Storage 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")
Ersetzen
-
<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 jetzt erfolgreich mit Ihrem Azure Data Lake Storage-Konto verbunden.
-
Gewähren Sie Ihrem Azure Databricks-Arbeitsbereich Zugriff auf Azure Data Lake Storage
Wenn Sie eine Firewall in Azure Data Lake Storage konfigurieren, müssen Sie Netzwerkeinstellungen konfigurieren, damit Ihr Azure Databricks-Arbeitsbereich eine Verbindung mit Azure Data Lake Storage herstellen kann. Stellen Sie zunächst sicher, dass Ihr Azure Databricks-Arbeitsbereich in Ihrem eigenen virtuellen Netzwerk bereitgestellt wird, nachdem Sie Azure Databricks in Ihrem virtuellen Azure-Netzwerk (VNet Injection) bereitstellen. Anschließend können Sie private Endpunkte oder den Zugriff über Ihr virtuelles Netzwerk konfigurieren, um Verbindungen von Ihren Subnetzen mit Ihrem Azure Data Lake Storage-Konto zuzulassen.
Wenn Sie serverlose Berechnung wie serverlose SQL-Lagerhäuser verwenden, müssen Sie Zugriff von der serverlosen Berechnungsebene auf Azure Data Lake Storage gewähren. Siehe Serverless Compute Plane Networking.
Gewähren des Zugriffs mithilfe privater Endpunkte
Sie können private Endpunkte für Ihr Azure Data Lake Storage-Konto verwenden, um Ihrem Azure Databricks-Arbeitsbereich den sicheren Zugriff auf Daten über einen privaten Link zu ermöglichen.
Informationen zum Erstellen eines privaten Endpunkts mithilfe des Azure-Portals finden Sie im Lernprogramm: 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
Mithilfe von Endpunkten des virtuellen Netzwerks können Sie den Zugriff auf Ihre kritischen Azure-Dienstressourcen auf nur Ihre virtuellen Netzwerke beschränken. 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 Azure CLI- und PowerShell-Anweisungen, finden Sie unter Gewähren des Zugriffs über ein virtuelles Netzwerk.
- Melden Sie sich beim Azure-Portal als Benutzer mit der Rolle "Mitwirkender des Speicherkontos" in Ihrem Azure Data Lake Storage-Konto an.
- Navigieren Sie zu Ihrem Azure Storage-Konto, und wechseln Sie zur Registerkarte "Netzwerk ".
- Überprüfen Sie, ob Sie den Zugriff von ausgewählten virtuellen Netzwerken und IP-Adressen zulassen möchten.
- Wählen Sie unter "Virtuelle Netzwerke" die Option "Vorhandenes virtuelles Netzwerk hinzufügen" aus.
- Wählen Sie im seitlichen Bereich unter "Abonnement" das Abonnement aus, in dem Sich Ihr virtuelles Netzwerk befindet.
- Wählen Sie unter "Virtuelle Netzwerke" das virtuelle Netzwerk aus, in dem Ihr Azure Databricks-Arbeitsbereich bereitgestellt wird.
- Wählen Sie unter "Subnetze" die Option "Alle auswählen" aus.
- Klicken Sie auf "Aktivieren".
- Wählen Sie "Speichern" aus, um Ihre Änderungen anzuwenden.
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.