Privates Netzwerk und Cloud Run

Auf dieser Seite werden Konfigurationsoptionen für das Einbinden von Cloud Run-Diensten in Ihr privates Netzwerk erläutert.

Machen Sie sich mit den folgenden Konzepten vertraut, um diese Inhalte optimal zu nutzen:

Zum Schutz des Netzwerkverkehrs für ihre Dienste und Anwendungen verwenden viele Unternehmen ein privates Netzwerk in Google Cloud mit Perimeterkontrollen, um Daten-Exfiltrationen zu verhindern. Ihr privates Netzwerk hat möglicherweise folgende Attribute:

  • Sie können eine Reihe an Ressourcen haben, z. B. VMs, die in einem oder mehreren VPC-Netzwerken gespeichert sind.
  • Diese VMs gehören möglicherweise zu vielen verschiedenen Projekten und sind über eine freigegebene VPC miteinander verbunden.
  • Möglicherweise haben Sie lokale Arbeitslasten oder Arbeitslasten in anderen Clouds, die über Cloud VPN oder Cloud Interconnect mit dieser Umgebung verbunden sind.
  • Vielleicht haben Sie einen VPC Service Controls-Perimeter aktiviert, um das Risiko einer Daten-Exfiltration zu verringern.
  • Möglicherweise haben Sie mehrere solche private Netzwerke, z. B. eines für jede der verschiedenen Umgebungen, eins für die Produktion, eines für das Staging und eines für die Entwicklung.

Im Gegensatz zu VMs sind Cloud Run-Dienste nicht mit einem bestimmten VPC-Netzwerk verknüpft. In diesem Leitfaden wird erläutert, wie Sie Cloud Run-Dienste in Ihr privates Netzwerk einbinden.

Beschreibung des serverlosen Netzwerks

Lesen Sie die Informationen zu serverlosen Netzwerken, um eine Reihe von gängigen Unternehmenskonfigurationen für öffentliche und private Netzwerke zu untersuchen.

Dieser Ausgangspunkt bietet die folgenden grundlegenden bis erweiterten Cloud Run-Szenarien:

  • "Hello, World!"-Anwendung, die eine benutzerdefinierte Domain verwendet, sicher bereitstellen
  • Unternehmensanwendungen und Mikrodienste entwickeln
  • Auf Datenbanken und Dateisysteme öffentlich oder privat zugreifen
  • Verbindung zu SaaS-Anbietern herstellen
  • Sicherheitskontrollen anwenden

Weitere Informationen finden Sie in der Liste der entsprechenden Terraform-Module.

Anfragen aus Ihrem privaten Netzwerk empfangen

Zum Empfangen von Anfragen von Ihrem privaten Netzwerk ist eine Konfiguration erforderlich, die auf den folgenden Bedingungen basiert:

  • Woher die Anfrage kommt.
  • Ob der Cloud Run-Dienst nur Anfragen von Ihrem privaten Netzwerk zulässt.

Beispielsweise kann das Empfangen von Anfragen aus VPC-Netzwerken eine andere Konfiguration erfordern als das Empfangen von Anfragen von lokalen Ressourcen und anderen Clouds.

Anfragen von anderen Cloud Run-Diensten, App Engine und Cloud Functions erhalten

Wenn Ihr Cloud Run-Zieldienst Traffic von anderen Cloud Run-Diensten, App Engine oder Cloud Functions empfängt und die Eingangseinstellung „intern“ oder „intern und Load-Balancing“ verwendet, dann muss der Traffic das VPC-Netzwerk als intern betrachten.

Führen Sie die folgenden Schritte aus, um Anfragen von anderen Cloud Run-Diensten, App Engine oder Cloud Functions zu erhalten:

  1. Konfigurieren Sie den Quelldienst so, dass er entweder ausgehenden VPC-Traffic oder einen Connector verwendet.

  2. Achten Sie darauf, dass der Traffic zu Cloud Run-Routen über das VPC-Netzwerk mit einer der folgenden Optionen geleitet wird:

    • Konfigurieren Sie den Dienst Quelldienst so, dass der gesamte Traffic über das VPC-Netzwerk gesendet wird. Aktivieren Sie dann den privaten Google-Zugriff in dem Subnetz, das mit Direct verknüpft ist Ausgehender VPC-Traffic oder der Connector.
    • Richten Sie Private Service Connect oder einen internen Anwendungs-Load-Balancer als Front für Ihren Cloud Run-Zieldienst ein. Bei dieser Konfiguration greifen Sie über interne IP-Adressen auf Cloud Run zu. Daher werden Anfragen über das VPC-Netzwerk weitergeleitet.
    • Aktivieren Sie den privaten Google-Zugriff in dem mit dem Quelldienst verbundenen Subnetz und konfigurieren Sie DNS so, dass run.app-URLs in den Bereichen private.googleapis.com (199.36.153.8/30) oder restricted.googleapis.com (199.36.153.4/30) aufgelöst werden. Anfragen an diese Bereiche werden über das VPC-Netzwerk weitergeleitet.

Anfragen aus VPC-Netzwerken empfangen

Standardmäßig können nur VPC-Ressourcen, die öffentliche IP-Adressen haben oder Cloud NAT verwenden, direkt auf das Internet und Google Cloud-Dienste wie Pub/Sub und Cloud Run zugreifen. Für andere VPC-Ressourcen gibt es verschiedene Möglichkeiten, den Trafficpfad zu Cloud Run zu aktivieren:

  1. Die direkteste Methode ist die Aktivierung des privaten Google-Zugriffs in den Subnetzen, in denen Ihre VPC-Ressourcen gehostet werden. Nach der Aktivierung können Ressourcen in den Subnetzen über die Standard-URL run.app auf Ihre Cloud Run-Dienste zugreifen. Der Traffic von Ihrer VPC zu Cloud Run verbleibt im Google-Netzwerk. In diesem Fall lautet der IP-Bereich für Anfragen, die an den Cloud Run-Dienst gesendet werden, 0.0.0.0/32. Das bedeutet, dass in Anfragelogeinträgen das Attribut remoteIp von HttpRequest 0.0.0.0 ist.
  2. Wenn Sie möchten, dass Ihr Cloud Run-Dienst (zusammen mit anderen Google APIs) als interne IP-Adresse in Ihrem VPC-Netzwerk offengelegt wird, sollten Sie Private Service Connect in Betracht ziehen. Nach der Aktivierung können VPC-Ressourcen über die interne IP-Adresse auf Ihre Cloud Run-Dienste unter der standardmäßigen run.app-URL zugreifen.
  3. Wenn Sie Load-Balancing-Funktionen und -Steuerelemente benötigen, können Sie einen internen Application Load Balancer verwenden. Bei diesem Ansatz greifen VPC-Ressourcen über die URL, die dem internen Application Load Balancer zugeordnet ist, auf Ihre Cloud Run-Dienste zu.
  4. Wenn Sie Ihren Dienst als verwalteten Dienst für interne Clients offenlegen und steuern möchten, welche Projekte darauf zugreifen können, können Sie ihn mit einem internen Application Load Balancer hosten und mit Private Service Connect veröffentlichen. Projekte, die den Dienst nutzen müssen, können auch mithilfe von Private Service Connect darauf zugreifen.

Antworten werden über den gleichen Pfad zurückgegeben, auf dem die Anfrage hereinkam.

Besondere Überlegungen für freigegebene VPCs

Wenn Sie die Steuerelemente für eingehenden Traffic von Cloud Run verwenden, um zu erzwingen, dass der gesamte Traffic aus Ihrem privaten Netzwerk kommen muss (mit der Einstellung internal), beachten Sie, dass der Traffic der freigegebenen VPC nur in folgenden Situationen als "intern" erkannt wird:

  • Der Cloud Run-Dienst wird im freigegebenen VPC-Hostprojekt ausgeführt.

  • Eingehender Traffic von freigegebener VPC: Der Cloud Run-Dienst ist mit einem freigegebenen VPC-Netzwerk verknüpft. Beachten Sie in diesem Szenario die folgenden Hinweise:

    • Nur Dienstüberarbeitungen, für die der direkte VPC-Ausgang oder ein Connector für serverlosen VPC-Zugriff konfiguriert ist, um Traffic an das freigegebene VPC-Netzwerk zu senden, akzeptieren auch Traffic aus demselben freigegebenen VPC-Netzwerk.

    • Anfragen verwenden unterschiedliche Pfade je nach Trafficrichtung. Anfragen, die von Cloud Run an das freigegebene VPC-Netzwerk gesendet werden, werden über ausgehenden direkten VPC-Traffic oder den Connector weitergeleitet. Anfragen vom freigegebenen VPC-Netzwerk an Cloud Run verwenden jedoch den Standardpfad für eingehenden Traffic.

    • Wenn Sie einen Cloud Run-Dienst vom freigegebenen VPC-Netzwerk trennen möchten, stellen Sie ihn noch einmal ohne VPC-Netzwerkzugriff bereit oder mit dem Dienst, der zum Senden von Traffic an ein anderes VPC-Netzwerk konfiguriert ist.

  • Sie verwenden einen internen Application Load Balancer, um Traffic weiterzuleiten.

  • Sie haben den freigegebenen VPC-Host und alle Dienstprojekte im selben VPC Service Controls-Perimeter platziert. Informationen zum Einrichten von VPC Service Controls finden Sie unter VPC Service Controls (VPC SC) verwenden.

Besondere Überlegungen zu anderen VPCs außerhalb Ihres Projekts

Wenn Sie die Steuerelemente für eingehenden Traffic von Cloud Run verwenden, um zu erzwingen, dass der gesamte Traffic aus Ihrem privaten Netzwerk kommt (mit der Einstellung internal), beachten Sie, dass Traffic von anderen VPCs außerhalb Ihres Projekts nur in folgenden Situationen als "intern" erkannt wird:

  • VPC Service Controls ist so konfiguriert, dass der Traffic mit run.googleapis.com als eingeschränkter Dienst zugelassen wird. Für das Quellsubnetz ist der private Google-Zugriff aktiviert.
  • Ihr Cloud Run-Dienst wird über Private Service Connect (erfordert einen internen Application Load Balancer) als verwalteter Dienst veröffentlicht, auf den vom anderen VPC-Netzwerk aus zugegriffen wird.

Wenn Sie ein Peering für eine VPC außerhalb Ihres Projekts ausführen, wird Traffic nicht als „intern“ erkannt.

Anfragen von anderen Google Cloud-Diensten empfangen

Anfragen an Cloud Run von Google Cloud-Diensten wie Pub/Sub verbleiben im Google-Netzwerk.

Wenn Sie die Cloud Run-Steuerelemente für eingehenden Traffic so konfiguriert haben, dass nur "interner" Traffic zugelassen wird, sind einige besondere Überlegungen erforderlich:

  • Anfragen von Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, synthetischen Überwachungen (einschließlich Verfügbarkeitsdiagnosen) und Workflows im selben Projekt oder VPC-Dienst Steuerungsperimeter werden als „intern“ erkannt.
  • Anfragen von Cloud Run, App Engine und Cloud Functions, die aus demselben Projekt oder VPC Service Controls-Perimeter gesendet werden, erfordern alle eine zusätzliche Konfiguration, bevor sie als "intern" erkannt werden. Weitere Informationen finden Sie im Abschnitt Anfragen von anderen Cloud Run-Diensten, App Engine und Cloud Functions empfangen.
  • Wenn der ausgewählte Google Cloud-Dienst nicht auf Cloud Run-Dienste zugreifen kann, für die eingehender Traffic auf internal festgelegt ist, beachten Sie, dass viele die Authentifizierung bei Cloud Run unterstützen, z. B. Pub/Sub (unterstützt sowohl internal als auch Authentifizierung), AP Gateway undDialogflow CX. Je nach Ihren Sicherheitsanforderungen kann es ausreichend sein, dass der Ziel-Cloud Run-Dienst eine Authentifizierung anstelle von „internem“ Traffic erfordert.
  • Anfragen von Google Cloud-Diensten, die oben nicht erwähnt sind, werden nicht als interner Traffic erkannt und können nicht von Cloud Run-Diensten empfangen werden, deren Ingress auf internal oder internal-and-cloud-load-balancing gesetzt ist.

Anfragen von lokalen Ressourcen oder aus anderen Clouds empfangen

Es gibt mehrere Möglichkeiten, Anfragen von lokalen Ressourcen und aus anderen Clouds privat zu empfangen.

  1. Grundlegende Konfiguration: Damit Anfragen von lokalen Ressourcen und anderen Clouds Ihr privates Netzwerk durchlaufen, müssen Sie den privaten Google-Zugriff für lokale Hosts konfigurieren.
  2. Cloud Run-Dienst mit einer internen IP-Adresse offenlegen: Wenn Sie Cloud Run-Dienste mit einer internen IP-Adresse aufrufen möchten, konfigurieren Sie Private Service Connect für lokale Hosts. Wenn Sie Private Service Connect für lokale Hosts hinzufügen, können Sie den Cloud Run-Dienst in Ihrem VPC-Netzwerk als interne IP-Adresse offenlegen. Für Private Service Connect fallen Kosten an.
  3. Mit Load-Balancing-Funktionen: Wenn Sie Load-Balancing-Funktionen und -Steuerelemente benötigen, verwenden Sie einen internen Application Load Balancer.
  4. Über administrative Grenzen hinweg: Wenn Sie Ihrem Dienst internen Clients als verwalteten Dienst anbieten und in der Lage sein möchten, zu steuern, welche Projekte darauf zugreifen können, können sie ihnmit Private Service Connect veröffentlichen. Informationen zur Verwendung finden Sie unter Private Service Connect von lokalen Hosts verwenden (erfordert einen internen Application Load Balancer).

Erforderlich machen, dass Anfragen aus Ihrem privaten Netzwerk stammen

Wenn Sie eingehenden Traffic von externen Quellen verhindern möchten, können Sie eine restriktive Einstellung für eingehenden Traffic angeben. Die restriktivste Einstellung für eingehenden Traffic ist internal. Wenn eingehender Traffic auf internal gesetzt ist, lässt Ihr Dienst nur Anfragen von Ihrem Projekt, von freigegebenen VPC-Netzwerken, mit denen Ihr Projekt verbunden ist, und von Ihrem VPC Service Controls-Perimeter zu. Je nachdem, woher die Anfragen stammen, gibt es einige Einschränkungen mit dieser Einstellung. Informationen zu diesen Einschränkungen und wie Sie diese umgehen können, finden Sie im Abschnitt Anfragen aus Ihrem privaten Netzwerk empfangen.

Sie können die Einstellung für eingehenden Traffic für jeden Cloud Run-Dienst angeben oder die Verwendung Ihrer bevorzugten Einstellung für eingehenden Traffic für alle Cloud Run-Dienste in Ihrer Organisation erzwingen.

  • So legen Sie die Einstellung für eingehenden Traffic für die einzelnen Dienste fest: Weitere Informationen finden Sie unter Ingress festlegen.
  • So erzwingen Sie eine bestimmte Einstellung für eingehenden Traffic für alle Cloud Run-Dienste in Ihrem Projekt, Ordner oder Ihrer Organisation: Konfigurieren Sie die Organisationsrichtlinien-Einschränkung run.allowedIngress. Weitere Informationen finden Sie unter Richtlinien für Listeneinschränkungen anpassen.

Anfragen an Ihr privates Netzwerk senden

Wenn Ihr Cloud Run-Dienst auf eine Ressource in Ihrem privaten Netzwerk zugreifen muss, können Sie einen Pfad für private Anfragen zu Ihrem Netzwerk konfigurieren. Die Konfiguration hängt vom endgültigen Ziel der Anfrage ab.

Anfragen an Ihr VPC-Netzwerk senden

Zum Senden von Anfragen an ein VPC-Netzwerk müssen Sie ausgehenden VPC-Traffic oder einen Connector für serverlosen VPC-Zugriff konfigurieren. Direkter ausgehender VPC-Traffic und VPC-Connectors vergleichen Informationen zu den Kosten finden Sie unter Preise.

Wenn Connectors für ausgehenden Direct VPC-Traffic oder Serverless VPC Access konfiguriert sind, gelten standardmäßig die folgenden Überlegungen:

  • Alle DNS-Abfragen werden an den DNS-Server gesendet, der für das VPC-Netzwerk konfiguriert ist, das mit der Einrichtung des ausgehenden VPC-Netzwerktraffics verknüpft ist.

  • Anfragen an interne IP-Adressen werden mithilfe von Direct VPC-Ausgang oder einem Connector an das VPC-Netzwerk weitergeleitet. Anfragen an öffentliche Ziele werden weiterhin direkt an das Internet weitergeleitet, sofern Ihre Einstellung für ausgehenden Traffic nicht anders konfiguriert ist.

Bei Anfragen, die über direkten VPC-Ausgang oder Connectors für serverlosen VPC-Zugriff weitergeleitet werden, werden Antworten über den Pfad zurückgegeben, den die Anfrage durchlaufen hat. Anfragen von Ihrer VPC an Cloud Run werden mithilfe anderer Technologien aktiviert und nicht über serverlosen VPC-Zugriff oder ausgehenden Direct VPC-Traffic weitergeleitet. Antworten auf diese Anfragen werden über denselben Pfad zurückgegeben. Weitere Informationen zum Senden von Anfragen von Ihrer VPC an Cloud Run finden Sie im Abschnitt Anfragen aus VPC-Netzwerken empfangen.

Anfragen an ein VPC-Netzwerk außerhalb Ihres Projekts senden

So senden Sie Anfragen an ein VPC-Netzwerk außerhalb Ihres Projekts:

  1. Nutzer von freigegebenen VPCs finden weitere Informationen unter Verbindung zu einem freigegebenen VPC-Netzwerk herstellen.
  2. Konfigurieren Sie für andere VPCs den Direct VPC-Ausgang oder einen Connector für serverlosen VPC-Zugriff, um eine Verbindung zu einer VPC in Ihrem Projekt herzustellen.
    • Peering-VPCs: Zum Senden an eine VPC, die per Peering mit einem ausgehenden VPC-Netzwerktraffics verbunden ist, wird keine zusätzliche Konfiguration benötigt. Die VMs im Subnetz, das den ausgehenden VPC-Netzwerktraffic hostet, müssen jedoch das Ziel-VPC-Netzwerk erreichen können.
    • Andere VPCs: Für VPC-Netzwerke außerhalb Ihres Projekts, die nicht Teil derselben freigegebenen VPC-Umgebung oder mit Ihrer Projekt-VPC verbunden sind, konfigurieren Sie Private Service Connect nach dem Einrichten des ausgehenden VPC-Netzwerktraffics.

Anfragen an andere Cloud Run- und Google Cloud-Dienste senden

Anfragen von einem Cloud Run-Dienst an einen anderen oder andere Google Cloud-Dienste verbleiben im internen Google-Netzwerk und unterliegen VPC Service Controls.

Bei Anfragen an Cloud Run-Dienste mit restriktiven Einstellungen für eingehenden Traffic ist eine zusätzliche Konfiguration erforderlich. Siehe Anfragen von anderen Cloud Run-Diensten, App Engine und Cloud Functions empfangen.

Anfragen an lokale Ressourcen und andere Clouds senden

So senden Sie Anfragen an lokale Ressourcen und andere Clouds über Ihr privates Netzwerk:

  1. Prüfen Sie, ob Ihr VPC-Netzwerk so konfiguriert ist, dass Ihr Traffic privat, beispielsweise über einen VPN-Tunnel, an das Ziel weitergeleitet wird.
  2. Konfigurieren Sie den Dienst so, dass Anfragen an Ihr VPC-Netzwerk gesendet werden.
  3. Fordern Sie dann an, dass alle Anfragen an Ihr VPC-Netzwerk gesendet werden.

Fordern Sie an, dass alle Anfragen an Ihr VPC-Netzwerk gesendet werden.

Um anzufordern, dass alle Anfragen von Ihrem Cloud Run-Dienst an Ihr VPC-Netzwerk gesendet werden, geben Sie die Egress-Einstellung für das VPC-Netzwerk „all-traffic“ an. Sie können die Einstellung für ausgehenden Traffic für jeden Cloud Run-Dienst einstellen, der den ausgehenden VPC-Netzwerktraffic verwendet, oder Sie können die Verwendung Ihrer bevorzugten Egress-Einstellung für alle Cloud Run-Dienste in Ihrem Projekt, Ordner oder Ihrem Unternehmen erzwingen.

Das ist in folgenden Szenarien nützlich:

  1. Sie möchten eine statische ausgehende IP-Adresse für Ihren Cloud Run-Dienst einrichten.
  2. Sie möchten Firewallregeln auf den gesamten ausgehenden Traffic eines Cloud Run-Dienstes anwenden.
  3. Wenn Sie Anfragen an lokale Ressourcen und andere Clouds über Ihr privates Netzwerk senden wollen.

Wenn der Cloud Run-Dienst Anfragen an endgültige Ziele außerhalb Ihres VPC-Netzwerks sendet, bedeutet das Erfordernis, dass alle Anfragen durch Ihr VPC gesendet werden müssen, dass die Bandbreitennutzung für den Connector des serverlosen VPC-Zugriffs (falls konfiguriert) steigt und die Kosten entsprechend ansteigen können. Connectors für serverlosen VPC-Zugriff werden automatisch heraufskaliert, wenn der Traffic zunimmt, aber nicht herunterskaliert, wenn der Traffic abnimmt. Informationen zu den Kosten finden Sie unter Preise.

  • So legen Sie die Einstellung für ausgehenden Traffic für einzelne Cloud Run-Dienste fest: Weitere Informationen finden Sie unter Dienst für ausgehenden Traffic steuern.
  • So erzwingen Sie eine bestimmte Einstellung für ausgehenden Traffic für alle Cloud Run-Dienste in Ihrem Projekt, Ordner oder Ihrer Organisation: Konfigurieren Sie die Organisationsrichtlinien-Einschränkung run.allowedVPCEgress. Weitere Informationen finden Sie unter Richtlinien für Listeneinschränkungen anpassen.

Weitere Steuerelemente

  • Perimeterkontrollen: Um das Risiko der Daten-Exfiltration in einer Ressourcengruppe zu reduzieren, platzieren Sie diese mit VPC Service Controls in einem kontextsensitiven Perimeter.
  • Granulare Kontrollen: Verwenden Sie Dienstkonten zur Steuerung von Berechtigungen und Authentifizierungen, um den Zugriff auf Traffic von einer bestimmten Ressource in Ihrem privaten Netzwerk zu steuern, z. B. von einem bestimmten Cloud Run-Dienst oder einer virtuellen Compute Engine-Maschine aus.

Nächste Schritte

Wenn Sie Terraform verwenden, ist Terraform-Beispielcode zum Einrichten von Cloud Run-Diensten in einem privaten Netzwerk verfügbar.