Dieses Dokument erläutert, wie Sie folgende Aufgaben ausführen:
- Dataflow-VM-Instanzen für den Internetzugriff konfigurieren
- Tags verwenden, um die Vernetzung von Worker-VMs zu sichern
- Firewallregeln für das mit Ihren Dataflow-Jobs verknüpfte Netzwerk definieren
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üssen Google Cloud APIs und Dienste erreichen. Die Menge der abhängigen Google Cloud Endpunkte kann sich im Laufe der Zeit ändern, aber alle unterstützen VPC Service Controls. Verwenden Sie eine der folgenden Methoden, um den Zugriff auf APIs zu konfigurieren: Google Cloud
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 ermöglichen Firewallregeln und DNS-Konfigurationen den Zugriff auf
Google Cloud APIs. Möglicherweise beschränken Sie den Zugriff jedoch aktiv auf
eine Teilmenge von Google Cloud APIs, z. B. wenn Sie
VPC Service Controlsverwenden.
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 permissivere
Domains wie
private.googleapis.com gewähren, wird auch die erforderliche Funktionalität bereitgestellt.
Damit der Zugriff auf die erforderlichen Google Cloud APIs über eine bestimmte Domain möglich ist, muss Ihre Umgebung die folgenden Anforderungen erfüllen:
Firewallregeln müssen ausgehenden Traffic zu allen Adressbereichen unter der ausgewählten Domain zulassen.
Das DNS muss
*.googleapis.comin die 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 in diesem Bereich 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 erstellen für die googleapis.com Standarddomain, um 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 von Google 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 die Anforderungen für den Internetzugriff erfüllen.
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
- Ein gemeinsam genutztes 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 reduzieren, die Sie im Rahmen Ihres Google CloudProjektkontingents nutzen.
Wenn Sie externe IP-Adressen deaktivieren, können Ihre Dataflow-Jobs nicht auf APIs und Dienste außerhalb von Google Cloud zugreifen, die Internet Zugriff benötigen.
Führen Sie einen der folgenden Schritte aus, um externe IP-Adressen zu deaktivieren:
Java
- Aktivieren Sie den privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
- Geben Sie für die Parameter Ihres Dataflow-Jobs
--usePublicIps=falseund--network=NETWORK-NAMEoder--subnetwork=SUBNETWORK-NAMEan.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 den privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
-
Geben Sie für die Parameter Ihres Dataflow-Jobs
--no_use_public_ipsund--network=NETWORKoder--subnetwork=SUBNETWORKan.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 den privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
-
Geben Sie für die Parameter Ihres Dataflow-Jobs
--no_use_public_ipsund--network=NETWORKoder--subnetwork=SUBNETWORKan.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 verwenden, um die Vernetzung von Worker-VMs zu sichern
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 von Identity and Access Management (IAM) verwaltete Tags 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 von sicheren Tags anstelle von Netzwerk-Tags 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-Firewall richtlinien unterstützen sichere Tags. Mit sicheren Tags können Sie mehrere Firewallregeln gruppieren und gleichzeitig aktualisieren. Die Aktualisierungen unterliegen der IAM-Zugriffssteuerung.
Sichere Tags werden von übergeordneten Ressourcen in der Google Cloud Hierarchie übernommen. So können Sie Tags auf höheren Ebenen definieren, z. B. auf Organisationsebene. Weitere Informationen finden Sie unter Tag-Vererbung.
Mit sicheren Tags können Firewallregeln für eingehenden Traffic Quellen in VPC-Netzwerken enthalten, die über VPC Network Peering verbunden sind. Für Dataflow-Jobs bedeutet das, dass eine Firewallregel Quellen sowohl im Netzwerk der Worker-VM als auch in Peering-VPC-Netzwerken enthalten kann.
Weitere Informationen zu den Unterschieden zwischen sicheren Tags und Netzwerk-Tags, siehe Vergleich von Tags und Netzwerk-Tags.
So wenden Sie sichere Tags auf einen Dataflow-Job an:
Konfigurieren Sie sichere Tags für Ihre Firewallrichtlinien. Weitere Informationen finden Sie unter Sichere Tags konfigurieren.
Gewähren Sie dem Dataflow-Dienstkonto für die Ressource (Tag-Werte) die Rolle Tag-Nutzer (
roles/resourcemanager.tagUser). Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter Tags für Ressourcen verwalten.Verwenden Sie beim Erstellen des Dataflow-Jobs die
use_vm_tagsDienstoption im folgenden Format:
Java
--dataflowServiceOptions=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Python
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
Go
--dataflow_service_options=use_vm_tags=tagKeys/KEY1:tagValues/VALUE1;tagKeys/KEY2:tagValues/VALUE2
gcloud
Verwenden Sie den
gcloud dataflow jobs run Befehl
mit der additional-experiments Option. Wenn Sie flexible Vorlagen verwenden, verwenden Sie
den
gcloud dataflow flex-template run
Befehl.
--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 Netzwerk-Tags Textstrings. Sie sind keine Ressource, die von Resource Manager verwaltet wird.
Verwenden Sie das
use_network_tags
Experiment, um Netzwerk-Tags auf einen Dataflow-Job anzuwenden:
Java
--dataflowServiceOptions=use_network_tags=TAG_NAME
Python
--dataflow_service_options=use_network_tags=TAG_NAME
Go
--dataflow_service_options=use_network_tags=TAG_NAME
gcloud
Verwenden Sie den
gcloud dataflow jobs run Befehl
mit der additional-experiments Option. Wenn Sie flexible Vorlagen verwenden, verwenden Sie
den
gcloud dataflow flex-template run
Befehl.
--additional-experiments=use_network_tags=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.
Beachten 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 Streaming-Jobs und über den TCP-Port 12346 für Batch-Jobs 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 default
Netzwerk, enthalten die default-allow-internal Regel, die die Firewall
Anforderung 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_INGRESSist ein Name für die Firewallregel.NETWORK: der Name des Netzwerks, das die Worker-VMs verwendenCUSTOM_TAGist eine durch Kommas getrennte Liste von Netzwerk-Tags.Die folgende Liste enthält Richtlinien zur Verwendung von Netzwerk-Tags:
Wenn Sie
--target-tagsweglassen, gilt die Regel für alle VMs im VPC-Netzwerk.Wenn Sie
--source-tagsund 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
dataflowals 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_NUMist die Priorität der Firewallregel.Niedrigere Zahlen haben höhere Prioritäten und
0ist 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
Dabei gilt:
FIREWALL_RULE_NAME_EGRESSist ein Name für die Firewallregel.NETWORK: der Name des Netzwerks, das die Worker-VMs verwendenCUSTOM_TAGist eine durch Kommas getrennte Liste von Netzwerk-Tags.Die folgende Liste enthält Richtlinien zur Verwendung von Netzwerk-Tags:
Wenn Sie
--target-tagsweglassen, gilt die Regel für alle VMs im VPC-Netzwerk.Wenn Sie
--source-tagsund 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
dataflowals 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_NUMist die Priorität der Firewallregel.Niedrigere Zahlen haben höhere Prioritäten und
0ist 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
eine Verbindung zur VM entweder über die
Console Google Cloud oder mithilfe der Google Cloud CLI 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
gcloudausgeführt wird, oder der IP-Adresse des Systems, auf dem der Webbrowser ausgeführt wird, mit dem Sie auf die
Google 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
iproute2 Seite 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