Internetzugriff und Firewallregeln konfigurieren

In diesem Dokument wird beschrieben, wie Sie die folgenden Aufgaben ausführen:

  • Dataflow-VM-Instanzen für den Internetzugriff konfigurieren
  • Netzwerk-Tags erstellen
  • 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 Netzwerkproblemen mit Dataflow.

Zugriff auf Google Cloud APIs für Dataflow

Virtuelle Maschinen (VMs) von Dataflow-Workern müssen Google Cloud APIs und Dienste erreichen. Die Anzahl der abhängigen Google Cloud-Endpunkte kann sich im Laufe der Zeit ändern. Sie alle unterstützen jedoch VPC Service Controls. Verwenden Sie eine der folgenden Methoden, um den Zugriff auf Google Cloud APIs zu konfigurieren:

Standardmäßig erlauben Firewallregeln und DNS-Konfigurationen den Zugriff auf Google Cloud APIs. Möglicherweise beschränken Sie den Zugriff jedoch aktiv auf einen Teil der Google Cloud APIs, z. B. wenn Sie VPC Service Controls verwenden. In diesem Fall muss mindestens restricted.googleapis.com zugänglich sein. Wenn Sie Private Service Connect verwenden, gewähren Sie Zugriff auf das vpc-sc-Bundle. Wenn Sie Zugriff auf weniger restriktive Domains wie private.googleapis.com gewähren, sind die erforderlichen Funktionen ebenfalls verfügbar.

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 den ausgehenden Traffic zu allen Adressbereichen unter der ausgewählten Domain zulassen.

  • Das DNS muss *.googleapis.com in die von Ihnen ausgewählte Domain auflösen.

Wenn Ihre Firewallregeln den ausgehenden Traffic beispielsweise auf den Adressbereich restricted.googleapis.com beschränken, muss restricted.googleapis.com auf Adressen in diesem Bereich aufgelöst werden.*.googleapis.com Weitere Informationen finden Sie unter DNS für googleapis.com konfigurieren.

Wenn Sie Private Service Connect verwenden, müssen Sie auch DNS-Einträge für die Standarddomain googleapis.com erstellen, um Zugriff auf mindestens alle Dienste im vpc-sc-Bundle zu ermöglichen.

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

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 verringern Sie die Anzahl der externen IP-Adressen, 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 erfordern.

Führen Sie einen der folgenden Schritte aus, um externe IP-Adressen zu deaktivieren:

Java

  1. Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
  2. 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

  1. Implementieren Sie alle Python-Paketabhängigkeiten gemäß der Anleitung zu den Apache Beam-Pipelineabhängigkeiten.
  2. Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
  3. Legen Sie für die Parameter Ihres Dataflow-Jobs --no_use_public_ips und --network=NETWORK oder --subnetwork=SUBNETWORK fest.
  4. 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

  1. Aktivieren Sie Privaten Google-Zugriff für Ihr Netzwerk oder Subnetzwerk.
  2. Legen Sie für die Parameter Ihres Dataflow-Jobs --no_use_public_ips und --network=NETWORK oder --subnetwork=SUBNETWORK fest.
  3. 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

Netzwerk-Tags für Dataflow

Netzwerk-Tags sind Textattribute, die Sie an Compute Engine-VMs anhängen können. Mit Netzwerk-Tags können Sie VPC-Netzwerk-Firewallregeln und bestimmte benutzerdefinierte statische Routen für bestimmte VM-Instanzen festlegen. Dataflow unterstützt das Hinzufügen von Netzwerk-Tags zu allen Worker-VMs, die einen bestimmten Dataflow-Job ausführen.

Auch wenn Sie den Netzwerkparameter nicht verwenden, fügt Dataflow jeder erstellten Worker-VM immer das Standard-Netzwerk-Tag dataflow hinzu.

Netzwerk-Tags aktivieren

Die Netzwerk-Tags können nur dann angegeben werden, wenn Sie die Dataflow-Jobvorlage zum Erstellen eines Jobs ausführen. Nachdem ein Job gestartet wurde, können Sie dem Job keine weiteren Netzwerk-Tags hinzufügen. Wenn Sie weitere Netzwerk-Tags auf einen Job anwenden möchten, müssen Sie Ihre Jobvorlage mit den erforderlichen Netzwerk-Tags neu erstellen.

Fügen Sie Ihrem Pipelinecode Folgendes hinzu, unabhängig davon, ob Sie in Java oder Python ausführen:

--experiments=use_network_tags=TAG-NAME

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

Netzwerk-Tags für Flex-Vorlagen-VMs aktivieren

Wenn Sie Flex-Vorlagen verwenden, können Sie Netzwerk-Tags für Dataflow-Worker-VMs mit der Option --additional-experiments aktivieren, wie im folgenden Beispiel gezeigt:

--additional-experiments=use_network_tags=TAG-NAME

Wenn Sie Netzwerk-Tags sowohl für Worker-VMs als auch für Launcher-VMs aktivieren möchten, haben Sie folgende zwei Möglichkeiten:

--additional-experiments=use_network_tags=TAG-NAME
--additional-experiments=use_network_tags_for_flex_templates=TAG-NAME

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 Sie die Netzwerk-Tags aktiviert haben, werden die Tags geparst und an die VMs angehängt.

Siehe die geltenden Limits für Netzwerk-Tags.

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 die 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:

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 verwenden

  • CUSTOM_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 Firewallregel

    Je niedriger die Zahl, desto höher die Priorität. 0 hat 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 verwenden

  • CUSTOM_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 CIDRs

    Fügen Sie den primären IP-Adressbereich des ausgewählten Subnetzwerks hinzu.

  • PRIORITY_NUM: die Priorität der Firewallregel

    Je niedriger die Zahl, desto höher die Priorität. 0 hat 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 des 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 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 Seite iproute2 im Wiki der Linux Foundation.

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