Dieses Dokument erläutert, wie Sie folgende Aufgaben ausführen:
- Dataflow-VM-Instanzen für den Internetzugriff konfigurieren
- Verwenden Sie Tags, um die Netzwerkkommunikation von Worker-VMs zu schützen.
- Firewallregeln für das Netzwerk definieren, das mit Ihren Dataflow-Jobs verknüpft ist
Für dieses Dokument sind Grundkenntnisse über Google Cloud Netzwerke erforderlich. Informationen zum Definieren eines Netzwerks für Ihren Dataflow-Job finden Sie unter Netzwerk und Subnetzwerk angeben. Weitere Informationen zur Fehlerbehebung bei Netzwerkproblemen finden Sie unter Fehlerbehebung bei Dataflow-Netzwerkproblemen.
Zugriff auf Google Cloud APIs für Dataflow
Virtuelle Maschinen (VMs) von Dataflow-Workern müssenGoogle Cloud -APIs und ‑Dienste erreichen. Die Menge der abhängigen Google Cloud Endpunkte kann sich im Laufe der Zeit ändern, aber sie alle unterstützen VPC Service Controls. Verwenden Sie eine der folgenden Methoden, um den Zugriff auf Google Cloud APIs zu konfigurieren:
Konfigurieren Sie den privaten Google-Zugriff. Mit privater Google-Zugriff können VMs, die nur interne IP-Adressen haben, auf IP-Adressen für Google Cloud und Dienste zugreifen.
Konfigurieren Sie eine Private Service Connect-Endpunkt-IP-Adresse für den Zugriff auf Google Cloud APIs und -Dienste.
Konfigurieren Sie Worker-VMs mit externen IP-Adressen.
Standardmäßig lassen Firewallregeln und DNS-Konfigurationen den Zugriff aufGoogle Cloud -APIs zu. Möglicherweise schränken Sie den Zugriff auf eine Teilmenge von Google Cloud APIs jedoch aktiv ein, z. B. wenn Sie VPC Service Controls verwenden.
In diesem Fall müssen Sie mindestens Zugriff auf restricted.googleapis.com
gewähren. Wenn Sie Private Service Connect verwenden, gewähren Sie Zugriff auf das vpc-sc
-Bundle.
Wenn Sie Zugriff auf Domains mit weniger restriktiven Berechtigungen wie private.googleapis.com
gewähren, wird die erforderliche Funktionalität ebenfalls bereitgestellt.
Damit über eine bestimmte Domain auf die erforderlichen Google Cloud APIs zugegriffen werden kann, muss Ihre Umgebung die folgenden Anforderungen erfüllen:
Firewallregeln müssen ausgehenden Traffic zu allen Adressbereichen unter der ausgewählten Domain zulassen.
DNS muss
*.googleapis.com
in die von Ihnen ausgewählte Domain auflösen.
Wenn Ihre Firewallregeln beispielsweise den ausgehenden Traffic auf den Adressbereich restricted.googleapis.com
beschränken, muss *.googleapis.com
in Adressen innerhalb dieses Bereichs aufgelöst werden.
Weitere Informationen finden Sie unter DNS für googleapis.com konfigurieren.
Wenn Sie Private Service Connect verwenden, müssen Sie DNS-Einträge für die Standarddomain googleapis.com
erstellen, um den Zugriff auf mindestens alle Dienste im vpc-sc
-Bundle zu gewährleisten.
Internetzugang für Dataflow
Je nach Anwendungsfall benötigen Ihre VMs möglicherweise auch Zugriff auf Ressourcen außerhalb vonGoogle Cloud. Verwenden Sie eine der folgenden Methoden, um den Internetzugriff für Dataflow zu konfigurieren:
Konfigurieren Sie Worker-VMs mit einer externen IP-Adresse, damit sie den Anforderungen für den Internetzugriff entsprechen.
Konfigurieren Sie eine NAT-Lösung, z. B. Cloud NAT. Diese Option dient zum Ausführen von Jobs, die auf APIs und Dienste außerhalb von Google Cloud zugreifen, die Internetzugriff benötigen. Beispielsweise benötigen Python SDK-Jobs möglicherweise Zugriff auf den Python-Paketindex (PyPI), um Pipelineabhängigkeiten herunterzuladen. In diesem Fall müssen Sie entweder Worker-VMs mit externen IP-Adressen konfigurieren oder Cloud NAT verwenden. Sie können auch Python-Pipelineabhängigkeiten während der Jobübermittlung angeben. Sie können beispielsweise benutzerdefinierte Container verwenden, um Python-Pipelineabhängigkeiten bereitzustellen. Dadurch ist es nicht mehr erforderlich, auf PyPI zur Laufzeit zuzugreifen.
Weitere Informationen finden Sie unter Python-Pipelineabhängigkeiten verwalten in der Apache Beam-Dokumentation.
Externe IP-Adresse deaktivieren
Standardmäßig weist Dataflow Workern sowohl externe als auch interne IP-Adressen zu. Wenn Sie externe IP-Adressen deaktivieren, kann der Dataflow-Job nur auf Ressourcen an folgenden Orten zugreifen:
- Weitere Instanz im selben VPC-Netzwerk
- Freigegebenes VPC-Netzwerk
- Netzwerk mit aktiviertem VPC Network-Peering
Auch ohne externe IP-Adressen können Sie Verwaltungs- und Monitoringaufgaben ausführen. Wenn Sie auf Ihre Worker zugreifen möchten, verwenden Sie SSH über die oben aufgeführten Optionen. Die Pipeline kann jedoch nicht auf das Internet zugreifen und Internethosts haben keinen Zugriff auf Ihre Dataflow-Worker.
Wenn Sie keine externen IP-Adressen verwenden, ist Ihre Datenverarbeitungsinfrastruktur besser geschützt. Außerdem können Sie die Anzahl der externen IP-Adressen verringern, die Sie im Rahmen Ihres Google Cloud-Projektkontingents nutzen.
Wenn Sie externe IP-Adressen deaktivieren, können Ihre Dataflow-Jobs nicht auf APIs und Dienste außerhalb von Google Cloud zugreifen, die Internetzugriff benötigen.
Führen Sie einen der folgenden Schritte aus, um externe IP-Adressen zu deaktivieren:
Java
- Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
- Legen Sie für die Parameter Ihres Dataflow-Jobs
--usePublicIps=false
und--network=NETWORK-NAME
oder--subnetwork=SUBNETWORK-NAME
fest.Ersetzen Sie je nach Auswahl einen der folgenden Strings:
- NETWORK-NAME ist der Name Ihres Compute Engine-Netzwerks
- SUBNETWORK-NAME ist der Name Ihres Compute Engine-Subnetzwerks
Python
- Implementieren Sie alle Python-Paketabhängigkeiten gemäß der Anleitung zu den Apache Beam-Pipelineabhängigkeiten.
- Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
-
Legen Sie für die Parameter Ihres Dataflow-Jobs
--no_use_public_ips
und--network=NETWORK
oder--subnetwork=SUBNETWORK
fest.Ersetzen Sie je nach Auswahl einen der folgenden Strings:
- NETWORK-NAME ist der Name Ihres Compute Engine-Netzwerks
- SUBNETWORK-NAME ist der Name Ihres Compute Engine-Subnetzwerks
Go
- Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
-
Legen Sie für die Parameter Ihres Dataflow-Jobs
--no_use_public_ips
und--network=NETWORK
oder--subnetwork=SUBNETWORK
fest.Ersetzen Sie je nach Auswahl einen der folgenden Strings:
- NETWORK-NAME ist der Name Ihres Compute Engine-Netzwerks
- SUBNETWORK-NAME ist der Name Ihres Compute Engine-Subnetzwerks
Tags zum Sichern der Netzwerkverbindung von Worker-VMs verwenden
Mit Tags können Sie Netzwerk-Firewallregeln auf bestimmte VM-Instanzen anwenden. Wenn Sie einen Dataflow-Job ausführen, können Sie Tags für die Dataflow-Worker-VMs angeben, die den Job ausführen. Alle Firewallregeln für diese Tags werden dann auf die Dataflow-Worker-VMs angewendet.
Dataflow unterstützt zwei Arten von Tags für die VM-Vernetzung:
Sichere Tags mit Dataflow verwenden
Sichere Tags, auch als IAM-gesteuerte Tags (Identity and Access Management) bezeichnet, sind Schlüssel/Wert-Paare, die Sie in Resource Manager erstellen und verwalten. Im Gegensatz zu Netzwerk-Tags unterstützen sichere Tags die Zugriffssteuerung mit IAM.
Die Verwendung sicherer Tags anstelle von Netzwerktags bietet unter anderem folgende Vorteile:
Sichere Tags verhindern die unbefugte Änderung von Tags und die daraus resultierenden unerwünschten Änderungen an Firewallregeln.
Die globalen und regionalen Netzwerk-Firewallrichtlinien unterstützen sichere Tags. Mit sicheren Tags können Sie mehrere Firewallregeln gruppieren und gleichzeitig aktualisieren. Die Aktualisierungen werden durch IAM-Zugriffssteuerungen geregelt.
Sichere Tags werden von übergeordneten Ressourcen in der Google Cloud -Hierarchie übernommen. So können Sie Tags auf höheren Ebenen wie der Organisationsebene definieren. Weitere Informationen finden Sie unter Tag-Übernahme.
Mit sicheren Tags können Firewallregeln für eingehenden Traffic Quellen in VPC-Netzwerken enthalten, die über VPC-Netzwerk-Peering verbunden sind. Für Dataflow-Jobs kann eine Firewallregel also Quellen sowohl im Worker-VM-Netzwerk als auch in Peer-VPC-Netzwerken enthalten.
Weitere Informationen zu den Unterschieden zwischen sicheren Tags und Netzwerktags finden Sie unter Vergleich von Tags und Netzwerktags.
So wenden Sie sichere Tags auf einen Dataflow-Job an:
Sichere Tags für Ihre Firewallrichtlinien konfigurieren Weitere Informationen finden Sie unter Sichere Tags konfigurieren.
Weisen Sie dem Dataflow-Dienstkonto die Rolle Tag-Nutzer (
roles/resourcemanager.tagUser
) für die Ressource (Tag-Werte) zu. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter Tags für Ressourcen verwalten.Verwenden Sie beim Erstellen des Dataflow-Jobs das
use_vm_tags
-Experiment im folgenden Format:
Java
--experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Flexible Vorlagen
--additional-experiments=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Netzwerk-Tags mit Dataflow verwenden
Netzwerk-Tags sind Textattribute, die Sie für Firewallregeln festlegen und an Compute Engine-VMs anhängen können. Im Gegensatz zu sicheren Tags sind Netzwerktags Textstrings. Sie sind keine Ressource, die von Resource Manager verwaltet wird.
Wenn Sie Netzwerk-Tags auf einen Dataflow-Job anwenden möchten, verwenden Sie das use_network_tags
-Experiment, wie unten beschrieben:
Java
--experiments=use_network_tags=TAG_NAME
Python
--experiments=use_network_tags=TAG_NAME
Flexible Vorlagen
Verwenden Sie das use_network_tags
-Test-Flag, um Netzwerk-Tags für Dataflow-Worker-VMs zu aktivieren:
--additional-experiments=use_network_tags=TAG_NAME
Verwenden Sie den Testlauf use_network_tags_for_flex_templates
, um Netzwerk-Tags für Flexible Vorlage-Launcher-VMs zu aktivieren:
--additional-experiments=use_network_tags_for_flex_templates=TAG_NAME
Wenn Sie das Netzwerk-Tag angeben, wird auch das Standard-Netzwerk-Tag Dataflow
zu Flexible Vorlage-Launcher-VMs hinzugefügt.
Ersetzen Sie TAG_NAME durch die Namen Ihrer Tags. Wenn Sie mehr als ein Tag hinzufügen, trennen Sie jedes Tag mit einem Semikolon (;
) ab, wie im folgenden Format gezeigt: TAG_NAME_1;TAG_NAME_2;TAG_NAME_3;...
.
Nachdem ein Job gestartet wurde, können Sie dem Job keine weiteren Netzwerk-Tags hinzufügen.
Dataflow fügt jeder erstellten Worker-VM immer das Standard-Netzwerk-Tag dataflow
hinzu.
Hier finden Sie die Limits, die für Netzwerk-Tags gelten.
Firewallregeln für Dataflow
Mit Firewallregeln können Sie Traffic zu und von Ihren VMs zulassen oder ablehnen. Wenn Ihre Dataflow-Jobs Dataflow Shuffle oder Streaming Engine verwenden, müssen Sie nur dafür sorgen, dass Firewallregeln den Zugriff auf Google Cloud -APIs zulassen.
Andernfalls müssen Sie zusätzliche Firewallregeln konfigurieren, damit Dataflow-VMs Netzwerkverkehr über den TCP-Port 12345
für Streamingjobs und über den TCP-Port 12346
für Batchjobs senden und empfangen können.
Ein Projektinhaber, Projektbearbeiter oder Sicherheitsadministrator muss die erforderlichen Firewallregeln im VPC-Netzwerk erstellen, das von Ihren Dataflow-VMs verwendet wird.
Bevor Sie Firewallregeln für Dataflow konfigurieren, lesen Sie die folgenden Dokumente:
Übersicht über VPC-Firewallregeln und VPC-Firewallregeln verwenden
Übersicht über hierarchische Firewallrichtlinien und Hierarchische Firewallrichtlinien und -regeln verwenden
Geben Sie beim Erstellen von Firewallregeln für Dataflow die Dataflow-Netzwerk-Tags an. Andernfalls gelten die Firewallregeln für alle VMs im VPC-Netzwerk.
Gegebenenfalls werden hierarchische Firewallrichtlinien zuerst ausgewertet und diese Regeln überschreiben VPC-Firewallregeln. Wenn sich der Dataflow-Job in einem Projekt befindet, das Teil eines Ordners oder einer Organisation ist, in der hierarchische Firewallrichtlinien verwendet werden, ist die Rolle compute.orgFirewallPolicyAdmin
erforderlich, um Richtlinienänderungen vorzunehmen.
Wenn Sie beim Ausführen des Pipelinecodes keine benutzerdefinierten Netzwerk-Tags erstellen, verwenden Dataflow-VMs das Standard-Tag dataflow
. Wenn keine benutzerdefinierten Netzwerk-Tags vorhanden sind, erstellen Sie Firewallregeln mit dem Standard-Tag dataflow
.
Wenn Sie beim Ausführen des Pipelinecodes benutzerdefinierte Netzwerk-Tags erstellen, verwenden Dataflow-VMs diese Tags. Erstellen Sie die Firewallregeln mit den benutzerdefinierten Tags.
Einige VPC-Netzwerke, wie das automatisch erstellte Netzwerk default
, enthalten die Regel default-allow-internal
, die die Firewallanforderung für Dataflow erfüllt.
Beispiel einer Firewallregel für eingehenden Traffic
Die Firewallregel für eingehenden Traffic ermöglicht Dataflow-VMs, Pakete voneinander zu empfangen. Sie müssen immer Firewallregeln zum Zulassen von eingehendem Traffic erstellen, da der Traffic sonst immer blockiert wird, auch wenn Regeln für ausgehenden Traffic diesen Traffic zulassen.
Im folgenden Beispiel wird für Dataflow eine Firewallregel für eingehenden Traffic erstellt, wobei alle Worker-VMs das Standard-Netzwerk-Tag dataflow
haben. Ein Projektinhaber, Projektbearbeiter oder Sicherheitsadministrator kann mit dem folgenden gcloud
-Befehl eine Regel zum Zulassen von eingehendem Traffic erstellen. Diese lässt Traffic über die TCP-Ports 12345
und 12346
von VMs mit dem Netzwerk-Tag dataflow
zu anderen VMs mit demselben Tag zu:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_INGRESS \
--action=allow \
--direction=ingress \
--network=NETWORK \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Dabei gilt:
FIREWALL_RULE_NAME_INGRESS
ist ein Name für die Firewallregel.NETWORK
: der Name des Netzwerks, das die Worker-VMs verwendenCUSTOM_TAG
ist eine durch Kommas getrennte Liste von Netzwerk-Tags.Die folgende Liste enthält Richtlinien zur Verwendung von Netzwerk-Tags:
Wenn Sie
--target-tags
weglassen, gilt die Regel für alle VMs im VPC-Netzwerk.Wenn Sie
--source-tags
und alle anderen Quellspezifikationen weglassen, ist Traffic von jeder Quelle zulässig.Wenn Sie keine benutzerdefinierten Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie
dataflow
als Netzwerk-Tag.Wenn Sie benutzerdefinierte Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie Ihre benutzerdefinierten Netzwerk-Tags.
PRIORITY_NUM
: die Priorität der FirewallregelNiedrigere Zahlen haben höhere Prioritäten und
0
ist die höchste Priorität.
Beispiel für eine Firewallregel für ausgehenden Traffic
Die Firewallregel für ausgehenden Traffic ermöglicht Dataflow-VMs, Pakete aneinander zu senden. Wenn Sie Firewallregeln für abzulehnenden ausgehenden Traffic erstellt haben, müssen Sie möglicherweise benutzerdefinierte Firewallregeln zum Zulassen von ausgehendem Traffic in Ihrem VPC-Netzwerk erstellen.
In diesem Beispiel wird eine Firewallregel für ausgehenden Traffic für Dataflow erstellt, wobei alle Worker-VMs das Standard-Netzwerk-Tag dataflow
haben. Ein Projektinhaber, Projektbearbeiter oder Sicherheitsadministrator kann mit dem folgenden gcloud
-Befehl eine Regel zum Zulassen von ausgehendem Traffic erstellen. Diese lässt Traffic von den TCP-Ports 12345
und 12346
von VMs mit dem Netzwerk-Tag dataflow
zu anderen VMs mit demselben Tag zu:
gcloud compute firewall-rules create FIREWALL_RULE_NAME_EGRESS \
--network=NETWORK \
--action=allow \
--direction=egress \
--target-tags=CUSTOM_TAG \
--source-tags=CUSTOM_TAG \
--destination-ranges=DESTINATION-RANGES\
--priority=PRIORITY_NUM \
--rules tcp:12345-12346
Ersetzen Sie Folgendes:
FIREWALL_RULE_NAME_EGRESS
ist ein Name für die Firewallregel.NETWORK
: der Name des Netzwerks, das die Worker-VMs verwendenCUSTOM_TAG
ist eine durch Kommas getrennte Liste von Netzwerk-Tags.Die folgende Liste enthält Richtlinien zur Verwendung von Netzwerk-Tags:
Wenn Sie
--target-tags
weglassen, gilt die Regel für alle VMs im VPC-Netzwerk.Wenn Sie
--source-tags
und alle anderen Quellspezifikationen weglassen, ist Traffic von jeder Quelle zulässig.Wenn Sie keine benutzerdefinierten Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie
dataflow
als Netzwerk-Tag.Wenn Sie benutzerdefinierte Netzwerk-Tags angegeben haben und die Regel für Dataflow-VMs spezifisch sein soll, verwenden Sie Ihre benutzerdefinierten Netzwerk-Tags.
DESTINATION-RANGES
: eine durch Kommas getrennte Liste von CIDRsFügen Sie den primären IP-Adressbereich des ausgewählten Subnetzwerks hinzu.
PRIORITY_NUM
: die Priorität der FirewallregelNiedrigere Zahlen haben höhere Prioritäten und
0
ist die höchste Priorität.
Für bestimmte von Dataflow verwendete TCP-Ports können Sie sich das Containermanifest des Projekts ansehen. Das Containermanifest gibt explizit die Ports an, um dem Container Host-Ports zuzuordnen.
SSH-Zugriff auf Worker-VMs
Dataflow erfordert kein SSH. Dieses ist jedoch für die Problembehandlung hilfreich.
Wenn Ihre Worker-VM über eine externe IP-Adresse verfügt, können Sie entweder über die Google Cloud Console oder mithilfe der Google Cloud CLI eine Verbindung zur VM herstellen. Wenn Sie eine Verbindung über SSH herstellen möchten, müssen Sie eine Firewallregel haben, die eingehende Verbindungen am TCP-Port 22 von mindestens der IP-Adresse des Systems zulässt, auf dem gcloud
ausgeführt wird, oder der IP-Adresse des Systems, auf dem der Webbrowser ausgeführt wird, mit dem Sie auf dieGoogle Cloud Console zugreifen.
Sie können sich die Netzwerkkonfiguration und -aktivität ansehen, indem Sie eine SSH-Sitzung auf einem Ihrer Worker öffnen und iproute2
ausführen. Weitere Informationen finden Sie auf der Seite zu iproute2
im Linux Foundation-Wiki.
Informationen zum Herstellen einer Verbindung zu einer Worker-VM, die lediglich eine interne IP-Adresse hat, finden Sie unter Verbindungsoption für ausschließlich interne VMs auswählen.
Nächste Schritte
- Weitere Informationen zu Konnektivitätstests Konnektivitätstests ist ein Diagnosetool, mit dem Sie die Konnektivität zwischen Netzwerkendpunkten prüfen können.
- Konnektivitätstests erstellen und ausführen