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.
Der Schutz des ausgehenden Arbeitsbereichs ermöglicht eine präzise Kontrolle über die externe Kommunikation von Microsoft Fabric-Arbeitsbereichen. Wenn dieses Feature aktiviert ist, sind Datentechnik-Arbeitsbereichselemente wie Notizbücher, Spark-Auftragsdefinitionen und Lakehouses daran eingeschränkt, ausgehende Verbindungen mit öffentlichen Endpunkten herzustellen, es sei denn, der Zugriff wird explizit über genehmigte verwaltete private Endpunkte gewährt. Diese Funktion ist für Organisationen in sicheren oder regulierten Umgebungen von entscheidender Bedeutung, da sie dazu beiträgt, Datenexfiltration zu verhindern und Organisationsnetzwerkgrenzen durchzusetzen.
Grundlegendes zum Schutz vor ausgehenden Zugriffen mit Datentechnik
Wenn der Schutz für ausgehenden Zugriff aktiviert ist, werden standardmäßig alle ausgehenden Verbindungen aus dem Arbeitsbereich blockiert. Arbeitsbereichsadministratoren können dann Ausnahmen erstellen, um nur genehmigten Zielen Zugriff zu gewähren, indem verwaltete private Endpunkte konfiguriert werden:
Konfigurieren des Ausgehenden Zugriffsschutzes für Datentechnik
So konfigurieren Sie den Schutz vor ausgehenden Zugriffen für datentechnische Daten:
Führen Sie die Schritte aus, um den Schutz des ausgehenden Zugriffs zu aktivieren.
Nachdem Sie den Schutz vor ausgehendem Zugriff aktiviert haben, können Sie verwaltete private Endpunkte einrichten, um ausgehenden Zugriff auf andere Arbeitsbereiche oder externe Ressourcen nach Bedarf zuzulassen.
Nachdem die Konfiguration abgeschlossen ist, können Data-Engineering-Elemente nur eine Verbindung zu den freigegebenen, verwalteten Privatendpunkten herstellen, während alle anderen ausgehenden Verbindungen blockiert bleiben.
Unterstützte Elementtypen für die Datenverarbeitung
Die folgenden Elementtypen für Datenengineering werden mit dem Schutz vor ausgehendem Zugriff unterstützt:
- Seehäuser
- Notebooks
- Spark-Auftragsdefinitionen
- Environments
In den folgenden Abschnitten wird erläutert, wie sich der Schutz vor ausgehenden Zugriff auf bestimmte Datentypen in Ihrem Arbeitsbereich auf datentechnische Elemente auswirkt.
Notebooks
Wenn der Schutz vor ausgehendem Zugriff in einem Arbeitsbereich aktiviert ist, können Notizbücher nur dann auf ein Ziel verweisen, wenn ein verwalteter privater Endpunkt vom Arbeitsbereich bis zum Ziel eingerichtet ist.
| Quelle | Bestimmungsort | Ist ein verwalteter privater Endpunkt eingerichtet? | Kann das Notizbuch oder der Spark-Auftrag eine Verbindung mit dem Ziel herstellen? |
|---|---|---|---|
| Notizbuch (Arbeitsbereich A) | Lakehouse (Arbeitsbereich B) | Ja, ein arbeitsbereichübergreifender verwalteter privater Endpunkt von A bis B wird in A eingerichtet. | Yes |
| Notizbuch (Arbeitsbereich A) | Lakehouse (Arbeitsbereich B) | Nein | Nein |
| Notizbuch (Arbeitsbereich A) | Externe Azure Data Lake Storage (ADLS) G2/andere Datenquelle | Ja, ein verwalteter privater Endpunkt ist von A bis zur externen Datenquelle eingerichtet. | Yes |
| Notizbuch (Arbeitsbereich A) | Externe ADLS G2/andere Datenquelle | Nein | Nein |
Grundlegendes zum Dateipfadverhalten in Fabric-Notizbüchern
Beim Zugriff auf Daten in Ihrem Lakehouse aus einem Fabric-Notizbuch können Sie mithilfe relativer oder vollqualifizierter (absoluter) Pfade auf Dateien verweisen. Das Verständnis der Unterschiede ist wichtig für den erfolgreichen Datenzugriff, insbesondere beim Arbeiten über Arbeitsbereiche hinweg.
Relative Pfade
Relative Pfade sind die einfachste und am häufigsten verwendete Methode zum Verweisen auf Dateien in Ihrem aktuellen Lakehouse. Wenn Sie eine Datei aus dem Lakehouse-Explorer in eine Notizbuchzelle ziehen und ablegen, wird automatisch ein relativer Pfad verwendet.
Example:
Files/people.csv
Spark-Code:
df = spark.read.format("csv").option("header", "true").load("Files/people.csv")
Relative Pfade funktionieren sofort und erfordern keine weitere Konfiguration.
Vollqualifizierte (absolute) Pfade
Vollqualifizierte Pfade geben den vollständigen Speicherort einer Datei an, einschließlich Arbeitsbereichs- und Lakehouse-Informationen. Die Verwendung von Anzeigenamen in diesen Pfaden kann jedoch Fehler verursachen, wie beispielsweise Socket-Timeouts, da diese von der Spark-Sitzung standardmäßig nicht aufgelöst werden können.
Falsches Beispiel (schlägt fehl):
abfss://your_workspace@onelake.dfs.fabric.microsoft.com/your_lakehouse.Lakehouse/Files/people.csv
Zugreifen auf Daten über Arbeitsbereiche hinweg
Um auf Dateien in einem Lakehouse zuzugreifen, das sich in einem anderen Arbeitsbereich befindet, verwenden Sie einen vollqualifizierten Pfad, der die Arbeitsbereichs-ID und lakehouse-ID (nicht deren Anzeigenamen) enthält. Dadurch wird sichergestellt, dass Spark den Pfad auflösen und auf die Daten zugreifen kann.
Richtiges URI-Format:
abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<lakehouse_id>/Files/people.csv
Beispiel-Spark-Code:
df = spark.read.format("csv").option("header", "true").load("abfss://4c8efb42-7d2a-4a87-b1b1-e7e98bea053d@onelake.dfs.fabric.microsoft.com/5a0ffa3d-80b9-49ce-acd2-2c9302cce6b8/Files/people.csv")
So finden Sie Arbeitsbereichs- und Lakehouse-IDs
-
Arbeitsbereichs-ID: Die GUID in der URL Ihres Fabric-Arbeitsbereichs nach
/groups/. -
Lakehouse ID: Die GUID nach
/lakehouses/in der URL.
Beispiel-URL:
https://app.fabric.microsoft.com/groups/4c8efb42-7d2a-4a87-b1b1-e7e98bea053d/lakehouses/5a0ffa3d-80b9-49ce-acd2-2c9302cce6b8/...
Hinweis
Verwenden Sie immer die Arbeitsbereichs-ID und die Lakehouse-ID im URI, wenn Sie auf Daten über verschiedene Arbeitsbereiche zugreifen.
Spark-Aufträge
Wenn der Schutz für ausgehenden Zugriff des Arbeitsbereichs aktiviert ist, werden Spark-Cluster daran gehindert, ausgehende Verbindungen mit dem öffentlichen Internet herzustellen. Dazu gehören:
- Installieren von Python-Paketen direkt von PyPI mithilfe von
pip install - Zugreifen auf öffentliche Domänen wie z. B.
https://login.microsoftonline.com - Herstellen einer Verbindung mit externen APIs oder Websites
Microsoft Fabric erzwingt diese Einschränkung über verwaltete virtuelle Netzwerke (verwaltete VNETs), die Spark-Cluster von externen Netzwerken isolieren, es sei denn, der explizite Zugriff wird gewährt.
Sichere Konnektivität mit verwalteten privaten Endpunkten
Damit Spark-Cluster eine Verbindung mit externen Ressourcen herstellen können, während die Sicherheit beibehalten wird, müssen Sie verwaltete private Endpunkte verwenden. Diese Endpunkte ermöglichen sichere, genehmigte Verbindungen mit:
- Externe Dienste (z. B. Azure SQL-Datenbank, Azure Blob Storage)
- Andere Fabric-Arbeitsbereiche innerhalb desselben Mandanten
Es sind nur Verbindungen zulässig, die über genehmigte verwaltete private Endpunkte eingerichtet wurden. Alle anderen ausgehenden Zugriffsversuche werden standardmäßig blockiert.
Sicheres Installieren von Bibliotheken in geschützten Arbeitsbereichen mit ausgehenden Zugriffen
Da Fabric den öffentlichen Internetdatenverkehr blockiert, können Spark-Cluster pakete von PyPI nicht direkt mithilfe pip installvon PyPI installieren.
Sie haben zwei sichere Optionen zum Installieren von Bibliotheken in einem Arbeitsbereich mit aktiviertem Schutz vor ausgehendem Zugriff:
Raddateien hochladen und verwenden: Bereiten Sie die erforderlichen Python-Paketraddateien manuell auf einer vertrauenswürdigen Computeressource vor, und laden Sie sie dann in Ihre Fabric-Umgebung hoch. Mit dieser Methode wird sichergestellt, dass nur genehmigte Pakete installiert werden und der zugriff auf das öffentliche Internet verhindert wird.
Hosten Sie einen privaten PyPI-Spiegel: Richten Sie ein privates PyPI-Repository in Azure Storage ein und synchronisieren Sie es mit ausgewählten Paketen aus dem öffentlichen PyPI-Index. Konfigurieren Sie Ihre Fabric-Umgebung so, dass Pakete von diesem privaten Spiegel mithilfe verwalteter privater Endpunkte installiert werden, wobei die Einhaltung der Netzwerksicherheitsrichtlinien beibehalten wird.
Wählen Sie den Ansatz aus, der den Anforderungen Ihrer Organisation für die Paketverwaltung und -sicherheit am besten entspricht.
Option 1: Hochladen und Verwenden von Raddateien
Identifizieren Sie fehlende Pakete, die nicht in der Fabric Spark Runtime enthalten sind.
Führen Sie das folgende Skript für Ihre Computeressource aus, um eine lokale Python-Umgebung einzurichten, die mit der Microsoft Fabric Spark Runtime 1.3 identisch ist. Für dieses Skript ist eine YAML-Datei erforderlich, die eine Liste aller Bibliotheken enthält, die in der prebaked-Umgebung enthalten sind.
Stellen Sie sicher, dass von Microsoft gehostete private Bibliotheken aus diesem YAML entfernt werden.
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-x86_64.sh bash Miniconda3-py310_24.1.2-0-Linux-x86_64.sh chmod 755 -R /usr/lib/miniforge3/ export PATH="/usr/lib/miniforge3/bin:$PATH" sudo apt-get update sudo apt-get -yq install gcc g++ conda env create -n <custom-env-name> -f Python<version>-CPU.yml source activate <custom-env-name>Das Skript kann verwendet werden, um Ihre requirements.txt Datei zu übergeben, die alle Pakete und Versionen enthält, die Sie in der Spark-Runtime installieren möchten. Sie druckt die Namen der neuen Raddateien/Abhängigkeiten für Ihre Eingabebibliotheksanforderungen.
pip install -r <input-user-req.txt> > pip_output.txt cat pip_output.txt | grep "Using cached *"Dateien manuell herunterladen
.whl.Verwenden Sie das Umgebungsartefakt, um alle erforderlichen Räder hochzuladen.
Fügen Sie die Umgebung an Notizbücher oder Aufträge an.
Option 2: Hosten eines privaten PyPI-Spiegels in Azure Storage
Voraussetzungen
- Berechnen von Ressourcen, z. B. eines Linux-Entwicklungscomputers, des Windows-Subsystems für Linux (WSL) oder eines virtuellen Azure-Computers (VM).
- Azure Storage-Konto zum Speichern der gespiegelten Pakete.
- Versorgungswirtschaft:
- Bandersnatch: PyPI-Spiegelungstool für die Repositorysynchronisierung. Weitere Informationen finden Sie in der Dokumentation zu Bandersnatch.
- Azure CLI, Blobfuse2 oder AzCopy: Dienstprogramme zum Hochladen und Synchronisieren von Dateien mit Azure Storage.
Erste Synchronisierung des PyPI-Repositorys
Als ersten Schritt müssen Sie eine Synchronisierung des PyPI-Repositorys durchführen. Das vollständige PyPI-Repository enthält eine große Anzahl von Paketen und wird kontinuierlich erweitert, sodass der anfängliche Download je nach Hardware und Netzwerk von 8 bis 48 Stunden dauern kann. Aktuelle Repositorygröße und Paketanzahl finden Sie in Statistik · PyPI.
Maintenance
Regelmäßige Überwachung und Aktualisierungen sind erforderlich, um den Spiegel synchron zu halten. Die folgenden Faktoren wirken sich auf die Synchronisierungsgeschwindigkeit aus:
- Netzwerkgeschwindigkeit.
- Serverressourcen wie CPU, Arbeitsspeicher und Datenträger-E/A auf der Computeressource, die Bandersnatch ausführt.
- Die Datenträgergeschwindigkeit (SSD und HDD) wirkt sich auf das schnelle Schreiben von Daten durch Bandersnatch aus.
- Ersteinrichtung im Vergleich zur Wartungssynchronisierung: Die anfängliche Synchronisierung lädt das gesamte Repository herunter und kann von 8 bis 48 Stunden dauern, nachfolgende Synchronisierungen sind jedoch schneller, da sie nur neue oder geänderte Pakete aktualisieren.
Setupschritte
Richten Sie einen Linux-VM- oder Windows-Subsystem für Linux (WSL)-Entwicklungscomputer ein.
wget https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-x86_64.sh bash Miniconda3-py310_24.1.2-0-Linux-x86_64.sh chmod 755 -R /usr/lib/miniforge3/ # Add Python executable to PATH export PATH="/usr/lib/miniforge3/bin:$PATH"Installieren Sie Bandersnatch, um PyPI zu spiegeln. Bandersnatch ist ein PyPI-Spiegelungstool, das das gesamte PyPI-Repository und die zugehörigen Indexdateien auf das lokale Dateisystem herunterlädt.
# Install Bandersnatch pip install bandersnatchKonfigurieren von Bandersnatch: Erstellen Sie eine Datei "bandersnatch.conf" mit den konfigurationen, die im Beispiel auf GitHub unter "bandersnatch/src/bandersnatch/example.conf" angegeben sind.
Führen Sie einen Spiegelbefehl aus, um eine einmalige Synchronisierung mit dem primären PyPI-Server auszuführen.
bandersnatch --config <path-to-bandersnatch.conf> mirrorMit diesem Befehl werden die folgenden Unterverzeichnisse in Ihrem Spiegelverzeichnis im lokalen Dateisystem erstellt.
Hinweis
Die anfängliche Synchronisierung dauert die Ausführung (siehe Statistik · PyPI). Bandersnatch unterstützt auch die selektive Spiegelung mithilfe von Plugins für Erlaubnislisten und Sperrlisten und ermöglicht dadurch eine effizientere Verwaltung von Abhängigkeiten. Durch das Filtern unnötiger Pakete können Sie die Größe des Spiegels verringern und kosten- und Wartungsaufwand minimieren. Wenn der Spiegel beispielsweise ausschließlich für Fabric vorgesehen ist, können Sie Windows-Binärdateien ausschließen, um den Speicher zu optimieren. Wir empfehlen, diese Filteroptionen basierend auf Ihrem Anwendungsfall auszuwerten.
Siehe auch Spiegelfilterung – Bandersnatch-Dokumentation.
Um das Spiegelsetup zu überprüfen, können Sie einen HTTP-Server verwenden, um Ihren lokalen PyPI-Spiegel zu bedienen. Dieser Befehl startet einen einfachen HTTP-Server auf Port 8000, der den Inhalt des Spiegelverzeichnisses angibt:
cd <directory-to-mirror> python -m http.server 8000Konfigurieren Sie pip für die Verwendung der lokalen PyPI-Spiegelung:
pip install <package> -index-url http://localhost:8000/simpleLaden Sie "Spiegel" in das Speicherkonto hoch, und wählen Sie "Statische Website aktivieren" in Ihrem Azure-Speicherkonto aus. Mit dieser Einstellung können Sie statische Inhalte wie PyPI auf der Indexseite hosten. Durch aktivieren dieser Einstellung wird automatisch ein Container mit dem Namen $web generiert.
Sie können azure CLI oder AzCopy von blobfuse2 verwenden, um den lokalen Spiegel von Ihrem Entwicklungscomputer in Ihr Azure-Speicherkonto hochzuladen.
- Laden Sie den Ordner "Pakete" in Den ausgewählten Container auf den Container des Speicherkontos hoch.
- Laden Sie einfache, PyPI-, lokale Statistiken und JSON-Ordner in $web Container Ihres Speicherkontos hoch.
Um diesen Spiegel in Ihrem Fabric-Umgebungselement zu verwenden, erstellen Sie zwei verwaltete private Endpunkte in Fabric:
- Eine für den Blobcontainer (Pakete)
- Eine für die statische Website (Index)
Verwenden Sie das Umgebungsartefakt, um eine yml-Datei zum Installieren der Bibliotheksverwaltung in Fabric-Umgebungen anzugeben.
dependencies: - pip - pip: - pytest==8.2.2 - --index-url https://<storage-account-name>.z5.web.core.windows.net/simpleAlternativ können Sie Pakete direkt in einem Notizbuch mithilfe des
%pip installBefehls installieren:
%pip install pytest --index-url https://<storage-account-name>.z5.web.core.windows.net/simple
Lakehouse-Schemas und Schutz vor ausgehenden Zugriffen
Lakehouses, die Schemas verwenden, werden vollständig unterstützt, wenn auf Elemente innerhalb desselben Arbeitsbereichs zugegriffen wird, einschließlich, wenn der Schutz vor ausgehendem Zugriff aktiviert ist.
In Szenarien für den arbeitsbereichübergreifenden Zugriff unterscheidet sich das Verhalten je nachdem, wie auf das Lakehouse zugegriffen wird, wenn der Schutz vor ausgehenden Zugriffen für den verbrauchenden Arbeitsbereich aktiviert ist.
Unterstützte Szenarien
- Produzenten- und Konsumgüter befinden sich im gleichen Arbeitsbereich
- Das Lakehouse verwendet Schemas.
- Der Zugriff wird mithilfe von Spark DataFrame-basierten APIs ausgeführt.
In diesen Szenarien funktionieren Lakehouse-Schemavorgänge erwartungsgemäß.
Arbeitsbereichübergreifendes Verhalten mit aktivierter Schutz vor ausgehenden Zugriffen
Wenn der Schutz vor ausgehendem Zugriff in einem Arbeitsbereich aktiviert ist und auf ein schemafähiges Lakehouse über einen anderen Arbeitsbereich zugegriffen wird, gilt das folgende Verhalten:
- ✅ Access mithilfe von Spark DataFrame-APIs (z. B. Lesen von Tabellen in DataFrames) funktioniert weiterhin
- ❌ Access mithilfe von Spark SQL-Anweisungen schlägt möglicherweise fehl.
spark.read.table()ist beispielsweise erfolgreich, währendSELECT * FROM tablein arbeitsbereichsübergreifenden Szenarien fehlschlagen kann, wenn der Schutz vor ausgehendem Zugriff aktiviert ist.
Grundlegendes zum Verhalten von Dateipfaden
Beim Arbeiten mit Daten in Ihrem Lakehouse mithilfe eines Fabric-Notizbuchs können Sie auf zwei primäre Arten auf Dateien verweisen:
Wenn ihr Arbeitsbereich den Schutz für ausgehenden Zugriff aktiviert hat, verwendet er verwaltete virtuelle Netzwerke (VNETs) für Spark. In diesem Fall sind Starterpools deaktiviert, und Sie sollten erwarten, dass Spark-Sitzungen 3 bis 5 Minuten starten.
Mit dem Schutz des ausgehenden Zugriffs wird der gesamte öffentliche Zugriff von Spark blockiert. Diese Einschränkung verhindert, dass Benutzer Bibliotheken direkt aus öffentlichen Kanälen wie PyPI mithilfe von Pip herunterladen. Um Bibliotheken für ihre Data Engineering-Aufträge zu installieren, haben Benutzer zwei Optionen (ausführliche Informationen finden Sie unter "Sicheres Installieren von Bibliotheken in geschützten Arbeitsbereichen für ausgehenden Zugriff):"
Verweisen Sie auf Bibliothekspakete aus einer Datenquelle, die über einen verwalteten privaten Endpunkt mit dem Fabric-Arbeitsbereich verbunden ist.
Laden Sie Raddateien für ihre erforderlichen Bibliotheken und Abhängigkeiten hoch (die noch nicht in der vorgeblichen Laufzeit enthalten sind).
Durch aktivieren des Zugriffsschutzes für ausgehende Zugriffe wird der gesamte öffentliche Zugriff aus Ihrem Arbeitsbereich blockiert. Um ein Lakehouse aus einem anderen Arbeitsbereich abzufragen, müssen Sie daher einen arbeitsbereichübergreifenden verwalteten privaten Endpunkt erstellen, damit die Spark-Aufträge eine Verbindung herstellen können.
Die Verwendung vollqualifizierter Pfade mit Arbeitsbereichs- und Lakehouse-Namen kann zu einer Socket-Timeout-Ausnahme führen. Verwenden Sie für den Zugriff auf Dateien relative Pfade für das aktuelle Lakehouse oder einen vollqualifizierten Pfad, der die Arbeitsbereichs-ID und die Lakehouse-ID enthält (nicht deren Anzeigenamen). Mit diesem Ansatz wird sichergestellt, dass die Spark-Sitzung den Pfad korrekt auflösen kann und Socket-Timeout-Fehler vermieden werden. Erfahren Sie mehr.