Verbindung zu einem freigegebenen VPC-Netzwerk herstellen

Wenn Ihre Organisation eine freigegebene VPC verwendet, können Sie Connectors für den serverlosen VPC-Zugriff entweder im Dienstprojekt oder im Hostprojekt einrichten. In dieser Anleitung wird beschrieben, wie ein Connector im Dienstprojekt eingerichtet wird.

Auf übergeordneter Ebene müssen Sie folgende Schritte ausführen:

  1. Firewallregeln zum Zulassen der erforderlichen IP-Bereiche hinzufügen
  2. Berechtigungen erteilen
  3. Subnetz erstellen
  4. Führen Sie auf der Seite Serverlosen VPC-Zugriff konfigurieren die Schritte in den folgenden Abschnitten aus:

Vorteile

Vorteile der Erstellung von Connectors in den Dienstprojekten:

  • Isolierung: Jeder Connector hat eine dedizierte Bandbreite und ist von der Bandbreitennutzung von Connectors in anderen Dienstprojekten nicht betroffen. Dies ist nützlich, wenn Sie einen Dienst haben, der Trafficspitzen aufweist, oder wenn Sie dafür sorgen müssen, dass jedes Dienstprojekt nicht von der Connector-Nutzung anderer Dienstprojekte betroffen ist.
  • Rückgaben: Gebühren für Connectors sind mit dem Dienstprojekt verknüpft, das den Connector enthält. Dies ermöglicht einfachere Rückbuchungen.
  • Sicherheit: Ermöglicht es, das Prinzip der geringsten Berechtigung anzuwenden. Connectors muss Zugriff auf die Ressourcen in Ihrem freigegebenen VPC-Netzwerk erhalten, die sie erreichen müssen. Durch das Erstellen eines Connectors im Dienstprojekt können Sie den Zugriff auf die Dienste im Projekt mithilfe von Firewallregeln einschränken.
  • Teamunabhängigkeit: Reduziert die Abhängigkeit vom Hostprojektadministrator. Teams können die mit ihrem Dienstprojekt verknüpften Connectors erstellen und verwalten. Ein Nutzer mit der Compute Engine-Rolle Security Admin oder einer benutzerdefinierten IAM-Rolle (Identity and Access Management) mit der für das Hostprojekt aktivierten Berechtigung compute.firewalls.create muss dennoch Firewall-Regeln für den Connector verwalten.

Wenn diese Überlegungen nicht für Ihren Anwendungsfall geeignet sind, lesen Sie die Vorteile der Konfiguration einer freigegebenen VPC mit Connectors im Hostprojekt.

Firewallregeln zum Zulassen von IP-Bereichen hinzufügen

Zum Ausführen dieser Schritte benötigen Sie eine der folgenden Rollen im Hostprojekt:

Sie müssen Firewallregeln erstellen, damit Anfragen aus den folgenden IP-Bereichen den Connector erreichen und vom Connector erreicht werden können:

  • NAT-Bereiche
    • 107.178.230.64/26
    • 35.199.224.0/19
  • Bereiche der Systemdiagnose
    • 130.211.0.0/22
    • 35.191.0.0/16
    • 108.170.220.0/23

Diese Bereiche werden von der Google-Infrastruktur verwendet, die Cloud Run, Cloud Functions und App Engine Standard zugrunde liegt. Alle Anfragen von diesen IP-Adressen werden garantiert von der Google-Infrastruktur stammen. Dadurch wird sichergestellt, dass alle Cloud Run-, Cloud Functions- und App Engine-Dienste/Funktionen/Anwendungen nur mit dem VPC-Connector kommunizieren, mit dem sie verbunden sind.

Wenden Sie bei einer einfachen Konfiguration die Regeln an, damit serverlose Dienste in jedem Dienstprojekt, das mit dem freigegebenen VPC-Netzwerk verbunden ist, Anfragen an jede Ressource im Netzwerk senden können.

So wenden Sie diese Regeln an:

  1. Führen Sie die folgenden drei Befehle aus, um die Regeln so festzulegen, dass Anfragen von der serverlosen Umgebung alle VPC-Connectors im Netzwerk erreichen:

    gcloud compute firewall-rules create serverless-to-vpc-connector \
    --allow tcp:667,udp:665-666,icmp \
    --source-ranges 107.178.230.64/26,35.199.224.0/19 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
    --allow tcp:667,udp:665-666,icmp \
    --destination-ranges 107.178.230.64/26,35.199.224.0/19 \
    --direction=EGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
    --allow tcp:667 \
    --source-ranges 130.211.0.0/22,35.191.0.0/16,108.170.220.0/23 \
    --direction=INGRESS \
    --target-tags vpc-connector \
    --network=VPC_NETWORK

    VPC_NETWORK ist das VPC-Netzwerk, an das der Connector angehängt wird.

  2. Erstellen Sie eine Regel für eingehenden Traffic in Ihrem VPC-Netzwerk, um Anfragen von Connectors zuzulassen:

    gcloud compute firewall-rules create vpc-connector-requests \
    --allow tcp,udp,icmp \
    --direction=INGRESS \
    --source-tags vpc-connector \
    --network=VPC_NETWORK

    Mit dieser Regel erhält der VPC-Connector Zugriff auf alle Ressourcen im Netzwerk. Wenn Sie die Ressourcen einschränken möchten, die Ihre serverlose Umgebung über den serverlosen VPC-Zugriff erreichen kann, geben Sie ein Ziel für diese Firewallregeln an oder lesen Sie den Abschnitt Firewallregeln erstellen mit enger gefassten Bereich. Wenn Sie ein Ziel angeben, müssen Sie jedes Mal einen neuen Satz von Firewallregeln erstellen, wenn Sie einen neuen VPC-Connector erstellen.

Firewallregeln mit eingeschränktem Umfang erstellen

Die Vorgehensweise unter Firewallregeln zum Zulassen von IP-Bereichen hinzufügen führt zu Firewallregeln, die für alle Connectors gelten – sowohl für aktuelle als auch für zukünftig erstellte Connectors. Wenn Sie dies nicht möchten, sondern Regeln erstellen möchten, die nur für bestimmte Connectors gelten, können Sie die Regeln so ausrichten, dass sie nur für diese Connectors gelten.

Sie können einen der folgenden Mechanismen verwenden, um den Umfang der Regeln auf bestimmte Connectors zu beschränken.

  • Netzwerk-Tags. Jeder Connector hat zwei Netzwerk-Tags: vpc-connector und vpc-connector-REGION-CONNECTOR_NAME. Verwenden Sie das letztere Tag, um den Umfang der Firewallregeln auf einen bestimmten Connector zu beschränken.
  • IP-Bereiche. Verwenden Sie diesen Typ nur für Ausgangsregeln, da er nicht für eingehenden Traffic funktioniert. Sie können den IP-Bereich des Connector-Subnetzes verwenden, um den Umfang Ihrer Firewallregeln auf einen einzelnen VPC-Connector zu beschränken.

Berechtigungen für Dienstkonten in Dienstprojekten gewähren

Für jedes Dienstprojekt, das VPC-Connectors verwendet, muss ein Administrator für freigegebene VPCs dem Dienstprojekt die Rolle "Compute-Netzwerknutzer" (compute.networkUser) zuweisen. Die Zuweisung erfolgt im Hostprojekt an das Dienstprojekt cloudservices und an das Dienstkonto vpcaccess.

So weisen Sie die Rolle zu:

  1. Verwenden Sie diese Befehle:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com"
    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --role "roles/compute.networkUser" \
    --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
  2. Wenn das Dienstkonto @gcp-sa-vpcaccess nicht existiert, aktivieren Sie die serverlose VPC-Zugriffs-API im Dienstprojekt und versuchen Sie es noch einmal:

    gcloud services enable vpcaccess.googleapis.com

Wenn Sie diesen Dienstkonten keinen Zugriff auf das gesamte freigegebene VPC-Netzwerk gewähren und nur Zugriff auf bestimmte Subnetze gewähren möchten, können Sie stattdessen diese Rollen nur bestimmten Subnetzen zuweisen.

Subnetz erstellen

Wenn Sie eine freigegebene VPC verwenden, muss der Administrator für freigegebene VPC ein Subnetz für jeden Connector erstellen. Folgen Sie der Dokumentation zum Hinzufügen eines Subnetzes, um dem freigegebenen VPC-Netzwerk ein Subnetz /28 hinzuzufügen. Dieses Subnetz muss sich in derselben Region befinden wie die serverlosen Dienste, die den Connector verwenden.

Weitere Informationen