Freigeben über


Ausgehender Arbeitsbereichszugriffsschutz für Datenverarbeitungsworkloads

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:

Diagramm des Ausgehenden Zugriffsschutzes für Arbeitsbereiche in einem Datentechnikszenario.

Konfigurieren des Ausgehenden Zugriffsschutzes für Datentechnik

So konfigurieren Sie den Schutz vor ausgehenden Zugriffen für datentechnische Daten:

  1. Führen Sie die Schritte aus, um den Schutz des ausgehenden Zugriffs zu aktivieren.

  2. 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:

  1. 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.

  2. 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

  1. Identifizieren Sie fehlende Pakete, die nicht in der Fabric Spark Runtime enthalten sind.

  2. 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.

  3. 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> 
    
  4. 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 *" 
    
  5. Dateien manuell herunterladen .whl .

  6. Verwenden Sie das Umgebungsartefakt, um alle erforderlichen Räder hochzuladen.

  7. Fügen Sie die Umgebung an Notizbücher oder Aufträge an.

Option 2: Hosten eines privaten PyPI-Spiegels in Azure Storage

Voraussetzungen
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
  1. 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" 
    
  2. 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 bandersnatch
    
  3. Konfigurieren von Bandersnatch: Erstellen Sie eine Datei "bandersnatch.conf" mit den konfigurationen, die im Beispiel auf GitHub unter "bandersnatch/src/bandersnatch/example.conf" angegeben sind.

  4. Führen Sie einen Spiegelbefehl aus, um eine einmalige Synchronisierung mit dem primären PyPI-Server auszuführen.

    bandersnatch --config <path-to-bandersnatch.conf> mirror

    Mit 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.

  5. 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 8000
    
  6. Konfigurieren Sie pip für die Verwendung der lokalen PyPI-Spiegelung:

    pip install <package> -index-url http://localhost:8000/simple 
    
  7. Laden 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.
  8. 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)
  9. 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/simple 
    
  10. Alternativ können Sie Pakete direkt in einem Notizbuch mithilfe des %pip install Befehls 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ährend SELECT * FROM table in 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.