Netzwerkeinstellungen konfigurieren

Mit den Cloud Functions-Netzwerkeinstellungen können Sie den in einzelne Funktionen eingehenden und aus ihnen ausgehenden Netzwerk-Traffic steuern. Sie können die Netzwerkeinstellungen beispielsweise in folgenden Anwendungsfällen verwenden:

  • Funktionen absichern, indem Sie die netzwerkbasierte Zugriffssteuerung implementieren
  • Dafür sorgen, dass ausgehender Traffic einer Funktion die Firewall-, DNS- und Routingregeln einhält, die mit Ihrem VPC-Netzwerk verknüpft sind
  • Ausgehenden Traffic einer Funktion mit einer statischen IP-Adresse verknüpfen

Weitere Informationen zu Anwendungsfällen finden Sie im Abschnitt Anwendungsbeispiele.

Einstellungen für eingehenden Traffic

Mit den Einstellungen für eingehenden Traffic wird festgelegt, ob eine Funktion von Ressourcen außerhalb des Google Cloud-Projekts oder des Dienstperimeters für VPC Service Controls aufgerufen werden kann. Sie können einen der folgenden Werte für eingehenden Traffic festlegen:

  • Jeden Traffic zulassen: Standardeinstellung. Alle eingehenden Anfragen an die Funktion sind sowohl aus dem Internet als auch aus Ressourcen innerhalb desselben Projekts zulässig.
  • Nur internen Traffic erlauben: Nur Anfragen von VPC-Netzwerken im selben Projekt oder im VPC Service Controls-Perimeter sind zulässig. Alle anderen Anfragen werden mit dem Fehler 403 abgelehnt.

Nur interne HTTP-Funktionen können nur von HTTP-Anfragen aufgerufen werden, die in einem VPC-Netzwerk erstellt wurden, z. B. solche aus Kubernetes Engine, Compute Engine oder der flexiblen App Engine-Umgebung. Das bedeutet, dass Ereignisse, die von Pub/Sub, Eventarc, Cloud Scheduler, Cloud Tasks und Workflows erzeugt oder durch diese geleitet werden, diese Funktionen nicht auslösen können.

Sie können Einstellungen für eingehenden Traffic festlegen, wenn Sie die Funktion mit der Google Cloud Console oder dem gcloud-Befehlszeilentool bereitstellen oder aktualisieren:

Console

  1. Rufen Sie in der Cloud Console die Übersichtsseite von Cloud Functions auf:

    Zur Seite „Cloud Functions“

  2. Klicken Sie auf Funktion erstellen. Klicken Sie alternativ auf eine vorhandene Funktion, um deren Detailseite aufzurufen, und klicken dann auf Bearbeiten.

  3. Klicken Sie auf Umgebungsvariablen, Netzwerk, Zeitlimits und mehr, um die erweiterten Einstellungen zu öffnen.

  4. Wählen Sie im Abschnitt Netzwerk einen Wert für Einstellungen für eingehenden Traffic aus.

gcloud

Verwenden Sie den Befehl gcloud functions deploy, um die Funktion bereitzustellen oder zu aktualisieren, und geben Sie das Flag --ingress-settings an:

gcloud functions deploy FUNCTION_NAME \
--trigger-http \
--ingress-settings INGRESS_SETTINGS \
FLAGS...

Dabei gilt:

  • FUNCTION_NAME ist der Name Ihrer Funktion.
  • INGRESS_SETTINGS ist einer der unterstützten Werte für die Einstellungen für eingehenden Traffic. Die möglichen Werte sind:

    • all
    • internal-only
    • internal-and-gclb: Erlaubt internen Traffic sowie Traffic an eine öffentliche IP-Adresse, die über Cloud Load Balancing bereitgestellt wird. Blockiert Traffic, der an cloudfunctions.net oder eine von Cloud Functions eingerichtete benutzerdefinierte Domain gesendet wird. Hindert Nutzer daran, Zugriffssteuerungen (Cloud Armor, IAP) zu umgehen, die sie über Cloud Load Balancing eingerichtet haben.
  • FLAGS... verweist auf andere Flags, die Sie an den Befehl deploy übergeben.

Wenn Sie Cloud Armor mit Cloud Load Balancing verwenden, können Sie Sicherheitsrichtlinien erstellen, mit denen auf Traffic basierende Bedingungen wie IP-Adresse, IP-Bereich, Regionscode oder Anfrageheader von eingehenden Anfragen gefiltert werden. Weitere Informationen finden Sie in der Übersicht über die Google Cloud Armor-Sicherheitsrichtlinie.

Einstellungen für ausgehenden Traffic

Einstellungen für ausgehenden Traffic steuern die Weiterleitung ausgehender HTTP-Anfragen von einer Funktion. Zum Festlegen von Einstellungen für ausgehenden Traffic müssen Sie die Funktion mithilfe eines Connectors für serverlosen VPC-Zugriff mit einem VPC-Netzwerk verbinden. Einstellungen für ausgehenden Traffic steuern, welcher Traffic über den Connector an Ihr VPC-Netzwerk weitergeleitet wird.

Bei den Einstellungen für ausgehenden Traffic können Sie Folgendes festlegen:

  • Nur Anfragen an private IPs über den VPC-Connector weiterleiten: Standardeinstellung. Nur Anfragen an die IP-Adressbereiche RFC 1918 und RFC 6598 oder interne DNS-Namen werden an Ihr VPC-Netzwerk weitergeleitet. Alle anderen Anfragen werden direkt an das Internet weitergeleitet.
  • Gesamten Traffic über den VPC-Connector weiterleiten: Alle ausgehenden Anfragen der Funktion werden an Ihr VPC-Netzwerk weitergeleitet.

Sie können beim Bereitstellen oder Aktualisieren der Funktion mit der Cloud Console oder dem gcloud-Befehlszeilentool Einstellungen für ausgehenden Traffic festlegen:

Console

  1. Rufen Sie in der Cloud Console die Übersichtsseite von Cloud Functions auf:

    Zur Seite „Cloud Functions“

  2. Klicken Sie auf Funktion erstellen. Klicken Sie alternativ auf eine vorhandene Funktion, um deren Detailseite aufzurufen, und klicken dann auf Bearbeiten.

  3. Klicken Sie auf Umgebungsvariablen, Netzwerk, Zeitlimits und mehr, um die erweiterten Einstellungen zu öffnen.

  4. Wählen Sie im Abschnitt Netzwerk unter Einstellungen für ausgehenden Traffic einen Connector für serverlosen VPC-Zugriff aus.

  5. Wählen Sie die entsprechende Einstellung für ausgehenden Traffic aus, je nachdem, wie Sie ausgehenden Traffic über den Connector weiterleiten möchten.

gcloud

Verwenden Sie den Befehl gcloud functions deploy, um die Funktion bereitzustellen oder zu aktualisieren, und geben Sie das Flag --egress-settings an:

gcloud functions deploy FUNCTION_NAME \
--vpc-connector CONNECTOR_NAME \
--egress-settings EGRESS_SETTINGS \
FLAGS...

Dabei gilt:

  • FUNCTION_NAME ist der Name Ihrer Funktion.
  • CONNECTOR_NAME ist der Name des zu verwendenden Connectors für serverlosen VPC-Zugriff. Weitere Informationen finden Sie in der Dokumentation zu gcloud.

  • EGRESS_SETTINGS ist einer der unterstützten Werte für die Einstellungen für ausgehenden Traffic: siehe Dokumentation zu gcloud.

  • FLAGS... verweist auf andere Flags, die Sie an den Befehl deploy übergeben.

Beispielanwendungsfälle

Funktion erstellen, die nicht von externen Clients aufgerufen werden kann

Sie können Ihre HTTP-Funktionen absichern, indem Sie zulassen, dass sie nur von Ressourcen im selben Cloud-Projekt oder VPC Service Controls-Dienstperimeter aufgerufen werden.

  1. Stellen Sie Ihre Funktion bereit und lassen Sie nur internen Traffic zu. Verwenden Sie die Cloud Console oder das gcloud-Befehlszeilentool:

    Console

    1. Rufen Sie in der Cloud Console die Übersichtsseite von Cloud Functions auf:

      Zur Seite „Cloud Functions“

    2. Klicken Sie auf Funktion erstellen. Klicken Sie alternativ auf eine vorhandene Funktion, um deren Detailseite aufzurufen, und anschließend auf Bearbeiten.

    3. Klicken Sie auf Umgebungsvariablen, Netzwerk, Zeitlimits und mehr, um die erweiterten Einstellungen zu öffnen.

    4. Wählen Sie im Abschnitt Netzwerk unter Einstellungen für eingehenden Traffic die Option Nur internen Traffic erlauben aus.

    gcloud

    Führen Sie den Befehl gcloud functions deploy aus:

    gcloud functions deploy FUNCTION_NAME \
    --ingress-settings internal-only \
    FLAGS...
    

Nachdem Sie die Funktion bereitgestellt haben, werden Anfragen von außerhalb Ihres Cloud-Projekts daran gehindert, die Funktion zu erreichen. Wenn Sie VPC Service Controls verwenden, werden Anfragen von außerhalb des Dienstperimeters blockiert. VM-Instanzen innerhalb Ihres Projekts oder Dienstperimeters können die Funktion dennoch erreichen, wenn sie Anfragen an den HTTPS-Endpunkt der Funktion senden.

Wenn Sie diese eingeschränkte Funktion von einer anderen Funktion aus aufrufen möchten, muss die aufrufende Funktion ihren ausgehenden Traffic über das VPC-Netzwerk weiterleiten.

Ausgehenden Traffic einer Funktion über das VPC-Netzwerk weiterleiten

VPC-Netzwerke in Google Cloud unterstützen zahlreiche Konfigurationen und Netzwerkfeatures. Wenn Sie ausgehenden Traffic von Ihrer Funktion an Ihr VPC-Netzwerk weiterleiten, können Sie dafür sorgen, dass der ausgehende Cloud Functions-Traffic den Firewall-, DNS-, Routing- und anderen Regeln Ihres VPC-Netzwerks folgt. Außerdem können Sie Produkte wie Cloud NAT verwenden.

  1. Richten Sie ein VPC-Netzwerk ein. Konfigurieren Sie ein vorhandenes VPC-Netzwerk oder erstellen Sie ein neues. Folgen Sie dazu der Anleitung unter VPC-Netzwerke verwenden.

  2. Richten Sie einen Connector für serverlosen VPC-Zugriff ein. Cloud Functions benötigt einen Connector für serverlosen VPC-Zugriff, um Traffic an Ihr VPC-Netzwerk weiterzuleiten. Erstellen Sie einen Connector und richten Sie die entsprechenden Berechtigungen ein. Folgen Sie dazu der Anleitung unter Verbindung zu VPC-Netzwerk herstellen.

  3. Stellen Sie eine Funktion bereit, die den Connector verwendet und den gesamten ausgehenden Traffic durch den Connector weiterleitet. Verwenden Sie die Cloud Console oder das gcloud-Befehlszeilentool:

    Console

    1. Rufen Sie in der Cloud Console die Übersichtsseite von Cloud Functions auf:

      Zur Seite „Cloud Functions“

    2. Klicken Sie auf Funktion erstellen. Klicken Sie alternativ auf eine vorhandene Funktion, um deren Detailseite aufzurufen, und anschließend auf Bearbeiten.

    3. Klicken Sie auf Umgebungsvariablen, Netzwerk, Zeitlimits und mehr, um die erweiterten Einstellungen zu öffnen.

    4. Wählen Sie im Abschnitt Netzwerk unter Einstellungen für ausgehenden Traffic den Connector für serverlosen VPC-Zugriff und dann Gesamten Traffic über den VPC-Connector weiterleiten aus.

    gcloud

    Führen Sie den Befehl gcloud functions deploy aus:

    gcloud functions deploy FUNCTION_NAME \
    --vpc-connector CONNECTOR_NAME \
    --egress-settings all \
    FLAGS...
    

Nach der Bereitstellung der Funktion wird der gesamte von Ihrer Funktion stammende Traffic durch Ihr VPC-Netzwerk geleitet und entspricht den Regeln, die in Ihrem VPC-Netzwerk festgelegt sind. Beachten Sie, dass Ihre Funktion nur mit Cloud NAT auf das öffentliche Internet zugreifen kann. Außerdem müssen Sie Cloud NAT anweisen, alle primären und sekundären IP-Bereiche für alle Subnetze dem NAT-Gateway zuzuordnen, um das Subnetz des Connectors in die Zuordnung aufzunehmen.

Ausgehenden Traffic einer Funktion mit einer statischen IP-Adresse verknüpfen

In einigen Fällen ist es möglich, dass der von Ihrer Funktion stammende Traffic mit einer statischen IP-Adresse verknüpft wird. Dies ist beispielsweise dann nützlich, wenn Sie einen externen Dienst aufrufen, der nur Anfragen von explizit angegebenen IP-Adressen zulässt.

  1. Leiten Sie den ausgehenden Traffic Ihrer Funktion über Ihr VPC-Netzwerk weiter. Informationen dazu finden Sie im vorherigen Abschnitt Ausgehenden Traffic einer Funktion über das VPC-Netzwerk weiterleiten.

  2. Richten Sie Cloud NAT ein und legen Sie eine statische IP-Adresse fest. Folgen Sie den Anleitungen unter Subnetzbereiche für NAT festlegen und IP-Adressen für NAT festlegen, um Cloud NAT für das Subnetz einzurichten, das dem Connector für serverlosen VPC-Zugriff Ihrer Funktion zugeordnet ist. Beachten Sie, dass Cloud NAT alle primären und sekundären IP-Bereiche für alle Subnetze dem NAT-Gateway zuordnen muss, damit das Subnetz des Connectors in die Zuordnung eingeschlossen wird.

Multiregionales Load-Balancing

Sie können eine Funktion in verschiedenen Regionen bereitstellen und festlegen, dass die Anfrage an die nächstgelegene fehlerfreie Region gesendet wird. Dazu müssen Sie eine serverlose Netzwerk-Endpunktgruppe (NEG) für die Funktion einrichten und mit einem Load-Balancer verbinden. Dies wird unter HTTP(S) Load-Balancer mit serverlosen NEGs einrichten beschrieben.