Verbindung zu einem VPC-Netzwerk herstellen

Auf dieser Seite wird beschrieben, wie Sie den serverlosen VPC-Zugriff verwenden, um von einem Cloud Run-Dienst eine direkte Verbindung zu Ihrem VPC-Netzwerk herzustellen und so den Zugriff auf Compute Engine-VM-Instanzen, Memorystore-Instanzen und alle anderen Ressourcen mit einer internen IP-Adresse zu ermöglichen.

Hinweis

Wenn Sie eine freigegebene VPC verwenden, finden Sie weitere Informationen unter Verbindung zu einem freigegebenen VPC-Netzwerk herstellen.

Erstellen eines Connectors für Serverless VPC Access

Wenn Sie Anfragen an Ihr VPC-Netzwerk senden und die entsprechenden Antworten ohne das öffentliche Internet erhalten möchten, müssen Sie einen Connector für serverlosen VPC-Zugriff verwenden.

Sie können einen Connector mit der Google Cloud Console, der Google Cloud CLI oder Terraform erstellen:

Console

  1. Die API für serverlosen VPC-Zugriff muss für das Projekt aktiviert sein:

    API aktivieren

  2. Rufen Sie die Übersichtsseite für serverlosen VPC-Zugriff auf:

    Zur Seite „Serverloser VPC-Zugriff“

  3. Klicken Sie auf Connector erstellen.

  4. Geben Sie im Feld Name einen Namen für den Connector ein. Dies muss der Namenskonvention von Compute Engine entsprechen, mit der zusätzlichen Einschränkung, dass es weniger als 21 Zeichen sein müssen, wobei Bindestriche (-) als zwei Zeichen gezählt werden.

  5. Wählen Sie im Feld Region eine Region für den Connector aus. Sie muss mit der Region des serverlosen Dienstes übereinstimmen.

    Wenn sich Ihr Dienst in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.

  6. Wählen Sie im Feld Netzwerk das VPC-Netzwerk aus, an das der Connector angehängt werden soll.

  7. Klicken Sie auf das Drop-down-Menü Subnetzwerk:

    • Wenn Sie Ihr eigenes Subnetz verwenden (erforderlich für freigegebene VPCs), wählen Sie ein nicht verwendetes /28-Subnetz aus.

      • Subnetze müssen ausschließlich vom Connector verwendet werden. Sie können nicht von anderen Ressourcen wie VMs, Private Service Connect oder internem HTTP(S)-Load-Balancing verwendet werden.
      • Wenn Ihr Subnetz nicht für Private Service Connect oder internes HTTP(S)-Load-Balancing verwendet wird, prüfen Sie, ob das purpose-Subnetz PRIVATE ist. Führen Sie dazu den folgenden Befehl in der gcloud CLI aus:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Ersetzen Sie:
        • SUBNET_NAME: der Name Ihres Subnetzes
    • Wenn Sie eine freigegebene VPC nicht verwenden und der Connector vorzugsweise ein Subnetz erstellen soll, anstatt explizit ein Subnetz zu erstellen, wählen Sie aus dem Drop-down-Menü die Option Benutzerdefinierter IP-Bereich aus. Geben Sie dann im Feld IP-Bereich die erste Adresse in einem nicht reservierten CIDR-/28-IP-Bereich ein. Dieser IP-Bereich darf sich nicht mit vorhandenen IP-Adressreservierungen im VPC-Netzwerk überschneiden. 10.8.0.0 (/28) funktioniert beispielsweise in den meisten neuen Projekten.

  8. (Optional) Wenn Sie Skalierungsoptionen für zusätzliche Kontrolle über den Connector festlegen möchten, klicken Sie auf Skalierungseinstellungen anzeigen, um das Skalierungsformular anzuzeigen:

    1. Legen Sie die minimale und maximale Anzahl von Instanzen für den Connector fest oder verwenden Sie die Standardwerte von 2 (Min.) und 10 (Max.). Der Connector skaliert horizontal auf den angegebenen Maximalwert, wenn die Traffic-Nutzung es erfordert, der Connector skaliert jedoch nicht zurück, wenn der Traffic abnimmt. Sie müssen Werte zwischen 2 und 10 verwenden.
    2. Wählen Sie im Drop-down-Menü Instanztyp den Maschinentyp aus, der für den Connector verwendet werden soll, oder verwenden Sie den Standardwert e2-micro. Beachten Sie die Seitenleiste zu den Kosten auf der linken Seite, wenn Sie den Instanztyp auswählen, der die Bandbreiten- und Kostenschätzungen anzeigt:
  9. Klicken Sie auf Erstellen.

  10. Neben dem Namen des Connectors wird ein grünes Häkchen angezeigt, sobald er verwendet werden kann.

gcloud

  1. Aktualisieren Sie die Komponenten von gcloud auf die neueste Version:

    gcloud components update
    
  2. Die Serverless VPC Access API muss für das Projekt aktiviert sein:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Wenn Sie Ihr eigenes Subnetz verwenden (erforderlich für freigegebene VPCs), erstellen Sie mit dem Befehl einen Connector:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region REGION \
    --subnet SUBNET \
    # If you are not using Shared VPC, omit the following line.
    --subnet-project HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances MIN \
    --max-instances MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type MACHINE_TYPE
    

    Dabei gilt:

    • CONNECTOR_NAME: Name des Connectors. Dies muss der Namenskonvention von Compute Engine entsprechen, mit der zusätzlichen Einschränkung, dass es weniger als 21 Zeichen sein müssen, wobei Bindestriche (-) als zwei Zeichen gezählt werden.
    • REGION: Region für den Connector. Dies muss der Region Ihres serverlosen Dienstes entsprechen. Wenn sich Ihr Dienst in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.
    • SUBNET: der Name eines nicht verwendeten /28-Subnetzes.
      • Subnetze müssen ausschließlich vom Connector verwendet werden. Sie können nicht von anderen Ressourcen wie VMs, Private Service Connect oder internem HTTP(S)-Load-Balancing verwendet werden.
      • Wenn Ihr Subnetz nicht für Private Service Connect oder internes HTTP(S)-Load-Balancing verwendet wird, prüfen Sie, ob das purpose-Subnetz PRIVATE ist. Führen Sie dazu den folgenden Befehl in der gcloud CLI aus:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Ersetzen Sie:
        • SUBNET_NAME: der Name Ihres Subnetzes
    • HOST_PROJECT_ID: Die ID des Hostprojekts; geben Sie diese nur an, wenn Sie eine freigegebene VPC verwenden
    • MIN: Die Mindestanzahl der Instanzen, die für den Connector verwendet werden sollen. Verwenden Sie eine Ganzzahl zwischen 2 und 9. Der Standardwert ist 2. Weitere Informationen zur Skalierung von Connectors finden Sie unter Durchsatz und Skalierung.
    • MAX: Die maximale Anzahl von Instanzen, die für den Connector verwendet werden sollen. Verwenden Sie eine Ganzzahl zwischen 3 und 10. Der Standardwert ist 10. Wenn es der Traffic erfordert, wird der Connector auf [MAX] Instanzen skaliert, nicht jedoch wieder herunterskaliert. Weitere Informationen zur Skalierung von Connectors finden Sie unter Durchsatz und Skalierung.
    • MACHINE_TYPE: f1-micro, e2-micro oder e2-standard-4. Weitere Informationen zum Connector-Durchsatz, einschließlich Maschinentyp und Skalierung, finden Sie unter Durchsatz und Skalierung.

    Weitere Informationen und optionale Argumente finden Sie in der gcloud-Referenz.

  4. Wenn Sie keine freigegebene VPC verwenden und anstelle eines Subnetzes einen benutzerdefinierten IP-Bereich angeben möchten, erstellen Sie mit dem folgenden Befehl einen Connector:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --network VPC_NETWORK \
    --region REGION \
    --range IP_RANGE
    

    Dabei gilt:

    • CONNECTOR_NAME: Name des Connectors. Dies muss der Namenskonvention von Compute Engine entsprechen, mit der zusätzlichen Einschränkung, dass es weniger als 21 Zeichen sein müssen, wobei Bindestriche (-) als zwei Zeichen gezählt werden.
    • VPC_NETWORK: Das VPC-Netzwerk, an das der Connector angehängt wird.
    • REGION: Eine Region für den Connector. Sie muss mit der Region des serverlosen Dienstes übereinstimmen. Wenn sich Ihr Dienst in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.
    • IP_RANGE: Ein nicht reserviertes internes IP-Netzwerk und es ist nicht zugewiesener Speicherplatz in einem Umfang von „/28“ erforderlich. Der angegebene Wert ist das Netzwerk in CIDR-Schreibweise (10.8.0.0/28). Er darf sich nicht mit vorhandenen IP-Adressreservierungen im VPC-Netzwerk überschneiden. 10.8.0.0/28 funktioniert beispielsweise in den meisten neuen Projekten.

    Weitere Informationen und optionale Argumente wie Durchsatzkontrollen finden Sie in der gcloud-Referenz.

  5. Prüfen Sie vor der Verwendung des Connectors, ob sein Status READY lautet:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION
    

    Dabei gilt:

    • CONNECTOR_NAME: Der Name Ihres Connectors; dies ist der Name, den Sie im vorherigen Schritt angegeben haben
    • REGION: Region Ihres Connectors; dies ist die Region, die Sie im vorherigen Schritt angegeben haben

    Die Ausgabe sollte die Zeile state: READY enthalten.

Terraform

Sie können eine Terraform-Ressource verwenden, um die vpcaccess.googleapis.com API zu aktivieren.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Sie können Terraform-Module verwenden, um ein VPC-Netzwerk und ein Subnetz zu erstellen. Danach können Sie den Connector erstellen.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 3.3.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Dienst für die Verwendung eines Connectors konfigurieren

Nachdem Sie einen Connector für den serverlosen VPC-Zugriff erstellt haben, müssen Sie Ihren Cloud Run-Dienst für die Verwendung des Connectors konfigurieren. Verwenden Sie dazu die Console, die Google Cloud CLI oder eine YAML-Datei, wenn Sie einen neuen Dienst erstellen oder eine neue Überarbeitung bereitstellen:

Console

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Weiter > Container, Variablen und Secrets, Verbindungen, Sicherheit, um zur Seite mit der Dienstkonfiguration zu gelangen.

  4. Klicken Sie auf den Tab Verbindungen.

    Bild

  5. Wählen Sie im Feld VPC-Connector den zu verwendenden Connector oder Keiner aus, um die Verbindung Ihres Dienstes mit einem VPC-Netzwerk zu trennen.

  6. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

Verwenden Sie das Flag --vpc-connector, um einen Connector während der Bereitstellung anzugeben:

gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
  • Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.
  • Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest.
  • Ersetzen Sie CONNECTOR_NAME durch den Namen des Connectors.

Verwenden Sie den Befehl gcloud run services update, gegebenenfalls mit einem der folgenden Flags, um einen Connector für einen vorhandenen Dienst hinzuzufügen, zu aktualisieren oder zu entfernen:

So fügen Sie beispielsweise einen Connector hinzu oder aktualisieren ihn:

gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
  • Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.
  • Ersetzen Sie CONNECTOR_NAME durch den Namen des Connectors.

YAML

Sie können die vorhandene Dienstkonfiguration mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Fügen Sie das Attribut run.googleapis.com/vpc-access-connector unter dem Attribut annotations unter dem übergeordneten Attribut spec hinzu oder aktualisieren Sie es:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
          name: REVISION

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes
    • CONNECTOR_NAME ist der Name des Connectors.
    • REVISION durch einen neuen Überarbeitungsnamen oder löschen (falls vorhanden). Wenn Sie einen neuen Überarbeitungsnamen angeben, muss er die folgenden Kriterien erfüllen:
      • Beginnt mit SERVICE-
      • Enthält nur Kleinbuchstaben, Ziffern und -
      • Endet nicht mit -
      • Darf nicht mehr als 63 Zeichen enthalten
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Terraform

Sie können eine Terraform-Ressource verwenden, um einen Dienst zu erstellen und für die Verwendung Ihres Connectors zu konfigurieren.

# Cloud Run service
resource "google_cloud_run_service" "gcr_service" {
  name     = "mygcrservice"
  provider = google-beta
  location = "us-west1"

  template {
    spec {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
        resources {
          limits = {
            cpu = "1000m"
            memory = "512M"
          }
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    metadata {
      annotations = {
        # Limit scale up to prevent any cost blow outs!
        "autoscaling.knative.dev/maxScale" = "5"
        # Use the VPC Connector
        "run.googleapis.com/vpc-access-connector" = google_vpc_access_connector.connector.name
        # all egress from the service should go through the VPC Connector
        "run.googleapis.com/vpc-access-egress" = "all-traffic"
      }
    }
  }
  autogenerate_revision_name = true
}

Zugriff auf VPC-Ressourcen einschränken

Sie können den Zugriff des Connectors auf Ihr VPC-Netzwerk mithilfe von Firewallregeln einschränken.

Wenn Sie in den Dienstprojekten eine Verbindung zu einem freigegebenen VPC-Netzwerk mit Connectors herstellen, werden keine Firewallregeln automatisch erstellt. Ein Nutzer mit der Rolle „Netzwerkadministrator“ im Hostprojekt legt beim Konfigurieren des Hostprojekts Firewallregeln fest.

Wenn Sie eine Verbindung zu einem eigenständigen VPC-Netzwerk oder einem freigegebenen VPC-Netzwerk herstellen, das den Connector im Hostprojekt enthält, wird in Ihrem VPC-Netzwerk automatisch eine implizite Firewallregel mit der Priorität 1.000 erstellt, um eingehenden Traffic vom Subnetz oder vom benutzerdefinierten IP-Bereich des Connectors zu allen Zielen im VPC-Netzwerk zuzulassen. Die implizite Firewallregel ist in der Google Cloud Console nicht sichtbar und nur vorhanden, solange der zugehörige Connector vorhanden ist. Wenn Sie nicht möchten, dass Ihr Connector alle Ziele in Ihrem VPC-Netzwerk erreichen kann, können Sie den Zugriff einschränken.

Sie können den Zugriff durch den Connector einschränken, indem Sie für die Zielressource Regeln für eingehenden Traffic oder für den VPC-Connector Regeln für ausgehenden Traffic erstellen.

Zugriff mit Regeln für eingehenden Traffic einschränken

Wählen Sie entweder Netzwerk-Tags oder CIDR-Bereiche aus, um den eingehenden Traffic zum VPC-Netzwerk zu steuern.

Netzwerktags

In den folgenden Schritten wird gezeigt, wie Sie Regeln für eingehenden Traffic erstellen, die den Zugriff eines Connectors auf Ihr VPC-Netzwerk anhand der Connector-Netzwerk-Tags einschränken.

  1. Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Einfügen von Firewallregeln haben. Sie benötigen eine der folgenden Rollen für Identity and Access Management (IAM):

  2. Lehnen Sie Connector-Traffic im gesamten VPC-Netzwerk ab.

    Erstellen Sie eine Firewallregel für eingehenden Traffic mit einer Priorität von weniger als 1.000 in Ihrem VPC-Netzwerk, um eingehenden Traffic aus dem Connector-Netzwerk-Tag abzulehnen. Dadurch wird die implizite Firewallregel überschrieben, die von serverlosem VPC-Zugriff in Ihrem VPC-Netzwerk standardmäßig erstellt wird.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Dabei gilt:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: das universelle Connector-Netzwerk-Tag, wenn Sie den Zugriff für alle Connectors (einschließlich zukünftiger Connectors) einschränken möchten, oder das eindeutige Netzwerk-Tag, wenn Sie den Zugriff für einen bestimmten Connector einschränken möchten.

      • Universelles Netzwerk-Tag: vpc-connector
      • Eindeutiges Netzwerk-Tag: vpc-connector-REGION-CONNECTOR_NAME

        Ersetzen Sie:

        • REGION: Region des Connectors, den Sie einschränken möchten
        • CONNECTOR_NAME: Name des Connectors, den Sie einschränken möchten.

      Weitere Informationen zu Netzwerk-Tags des Connectors finden Sie unter Netzwerk-Tags.

    • VPC_NETWORK: Name des VPC-Netzwerks

    • PRIORITY: Eine Ganzzahl zwischen 1 und 999 (einschließlich). Beispiel: 990.

  3. Erlauben Sie Connector-Traffic für die Ressource, die Connector-Traffic empfangen soll.

    Verwenden Sie die Flags allow und target-tags, um eine Firewallregel für eingehenden Traffic zu erstellen, die auf die Ressource in Ihrem VPC-Netzwerk ausgerichtet ist, auf die der VPC-Connector zugreifen soll. Setzen Sie die Priorität für diese Regel auf einen niedrigeren Wert als die Priorität der Regel, die Sie im vorherigen Schritt erstellt haben.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Dabei gilt:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: allow-vpc-connector-for-select-resources
    • PROTOCOLS: Die Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Dies können einer oder mehrere der zwischen Groß- und Kleinschreibung unterscheidenden Zeichenfolgenwerte tcp, udp, icmp, esp, ah, sctp oder eine beliebige IP-Protokollnummer sein. Bei portbasierten Protokollen – tcp, udp und sctp – kann optional eine Liste von Zielports oder Portbereichen angegeben werden, für die die Regel gilt. Weitere Informationen finden Sie in der Dokumentation zum Flag allow.
    • VPC_CONNECTOR_NETWORK_TAG: das universelle Connector-Netzwerk-Tag, wenn Sie den Zugriff für alle Connectors (einschließlich zukünftiger Connectors) einschränken möchten, oder das eindeutige Netzwerk-Tag, wenn Sie den Zugriff für einen bestimmten Connector einschränken möchten. Dieser muss mit dem Netzwerk-Tag übereinstimmen, das Sie im vorherigen Schritt angegeben haben.

      • Universelles Netzwerk-Tag: vpc-connector
      • Eindeutiges Netzwerk-Tag: vpc-connector-REGION-CONNECTOR_NAME

        Ersetzen Sie:

        • REGION: Region des Connectors, den Sie einschränken möchten
        • CONNECTOR_NAME: Name des Connectors, den Sie einschränken möchten.

      Weitere Informationen zu Netzwerk-Tags des Connectors finden Sie unter Netzwerk-Tags.

    • VPC_NETWORK: Name des VPC-Netzwerks

    • RESOURCE_TAG: Netzwerk-Tag für die VPC-Ressource, auf die Ihr VPC-Connector zugreifen soll

    • PRIORITY: Eine Ganzzahl, die kleiner ist als die Priorität, die Sie im vorherigen Schritt festgelegt haben. Wenn Sie beispielsweise die Priorität der Regel, die Sie im vorherigen Schritt erstellt haben, auf 990 gesetzt haben, versuchen Sie es mit 980.

Weitere Informationen zu den erforderlichen und optionalen Flags für das Erstellen von Firewallregeln finden Sie in der Dokumentation zu gcloud compute firewall-rules create.

CIDR-Bereich

In den folgenden Schritten wird gezeigt, wie Sie Regeln für eingehenden Traffic erstellen, die den Zugriff eines Connectors auf Ihr VPC-Netzwerk anhand des CIDR-Bereichs des Connectors beschränken.

  1. Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Einfügen von Firewallregeln haben. Sie benötigen eine der folgenden Rollen für Identity and Access Management (IAM):

  2. Lehnen Sie Connector-Traffic im gesamten VPC-Netzwerk ab.

    Erstellen Sie eine Firewallregel für eingehenden Traffic mit einer Priorität von weniger als 1.000 in Ihrem VPC-Netzwerk, um eingehenden Traffic aus dem CIDR-Bereich des Connectors abzulehnen. Dadurch wird die implizite Firewallregel überschrieben, die von serverlosem VPC-Zugriff in Ihrem VPC-Netzwerk standardmäßig erstellt wird.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Dabei gilt:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: deny-vpc-connector
    • VPC_CONNECTOR_CIDR_RANGE: Der CIDR-Bereich für den Connector, dessen Zugriff Sie einschränken.
    • VPC_NETWORK: Name des VPC-Netzwerks
    • PRIORITY: Eine Ganzzahl von 1 bis 999. Beispiel: 990.
  3. Erlauben Sie Connector-Traffic für die Ressource, die Connector-Traffic empfangen soll.

    Verwenden Sie die Flags allow und target-tags, um eine Firewallregel für eingehenden Traffic zu erstellen, die auf die Ressource in Ihrem VPC-Netzwerk ausgerichtet ist, auf die der VPC-Connector zugreifen soll. Setzen Sie die Priorität für diese Regel auf einen niedrigeren Wert als die Priorität der Regel, die Sie im vorherigen Schritt erstellt haben.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY
    

    Dabei gilt:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: allow-vpc-connector-for-select-resources
    • PROTOCOLS: Die Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Dies können einer oder mehrere der zwischen Groß- und Kleinschreibung unterscheidenden Zeichenfolgenwerte tcp, udp, icmp, esp, ah, sctp oder eine beliebige IP-Protokollnummer sein. Bei portbasierten Protokollen – tcp, udp und sctp – kann optional eine Liste von Zielports oder Portbereichen angegeben werden, für die die Regel gilt. Weitere Informationen finden Sie in der Dokumentation zum Flag allow.
    • VPC_CONNECTOR_CIDR_RANGE: Der CIDR-Bereich für den Connector, dessen Zugriff Sie einschränken
    • VPC_NETWORK: Name des VPC-Netzwerks
    • RESOURCE_TAG: Netzwerk-Tag für die VPC-Ressource, auf die Ihr VPC-Connector zugreifen soll
    • PRIORITY: Eine Ganzzahl, die kleiner ist als die Priorität, die Sie im vorherigen Schritt festgelegt haben. Wenn Sie beispielsweise die Priorität der Regel, die Sie im vorherigen Schritt erstellt haben, auf 990 gesetzt haben, versuchen Sie es mit 980.

Weitere Informationen zu den erforderlichen und optionalen Flags zum Erstellen von Firewallregeln finden Sie in der Dokumentation zu gcloud compute firewall-rules create.

Zugriff mithilfe von Regeln für ausgehenden Traffic beschränken

In den folgenden Schritten wird gezeigt, wie Sie Regeln für ausgehenden Traffic erstellen, um den Zugriff durch Connectors zu beschränken.

  1. Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Einfügen von Firewallregeln haben. Sie benötigen eine der folgenden Rollen von Identity and Access Management (IAM):

  2. Lehnen Sie den ausgehenden Traffic über den Connector ab.

    Erstellen Sie eine Firewallregel für ausgehenden Traffic im Connector für serverlosen VPC-Zugriff, um das Senden von ausgehendem Traffic zu verhindern.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY
    

    Dabei gilt:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: deny-vpc-connector
    • VPC_CONNECTOR_NETWORK_TAG: Das universelle VPC-Connector-Netzwerk-Tag, wenn die Regel für alle vorhandenen und zukünftig erstellten VPC-Connectors gelten soll. Wenn Sie einen bestimmten Connector steuern möchten, können Sie das eindeutige Netzwerk-Tag des VPC-Connectors verwenden.
    • VPC_NETWORK: Name des VPC-Netzwerks
    • PRIORITY: Eine Ganzzahl von 1 bis 999. Beispiel: 990.
  3. Lassen Sie ausgehenden Traffic zu, wenn sich das Ziel in dem CIDR-Bereich befindet, auf den der Connector zugreifen soll.

    Verwenden Sie die Flags allow und destination-ranges, um eine Firewallregel zu erstellen, die ausgehenden Traffic von Ihrem Connector für einen bestimmten Zielbereich zulässt. Legen Sie den Zielbereich auf den CIDR-Bereich der Ressource in Ihrem VPC-Netzwerk fest, auf die der Connector zugreifen soll. Setzen Sie die Priorität für diese Regel auf einen niedrigeren Wert als die Priorität der Regel, die Sie im vorherigen Schritt erstellt haben.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOLS \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY
    

    Dabei gilt:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: allow-vpc-connector-for-select-resources
    • PROTOCOLS: Die Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Dies können einer oder mehrere der zwischen Groß- und Kleinschreibung unterscheidenden Zeichenfolgenwerte tcp, udp, icmp, esp, ah, sctp oder eine beliebige IP-Protokollnummer sein. Bei portbasierten Protokollen – tcp, udp und sctp – kann optional eine Liste von Zielports oder Portbereichen angegeben werden, für die die Regel gilt. Weitere Informationen finden Sie in der Dokumentation zum Flag allow.
    • RESOURCE_CIDR_RANGE: Der CIDR-Bereich für den Connector, dessen Zugriff Sie einschränken.
    • VPC_NETWORK: Name des VPC-Netzwerks
    • VPC_CONNECTOR_NETWORK_TAG: Das universelle VPC-Connector-Netzwerk-Tag, wenn die Regel für alle vorhandenen und zukünftig erstellten VPC-Connectors gelten soll. Wenn Sie einen bestimmten Connector steuern möchten, können Sie das eindeutige Netzwerk-Tag des VPC-Connectors verwenden. Wenn Sie im vorherigen Schritt das eindeutige Netzwerk-Tag genutzt haben, verwenden Sie das eindeutige Netzwerk-Tag.
    • PRIORITY: Eine Ganzzahl, die kleiner ist als die Priorität, die Sie im vorherigen Schritt festgelegt haben. Wenn Sie beispielsweise die Priorität der Regel, die Sie im vorherigen Schritt erstellt haben, auf 990 gesetzt haben, versuchen Sie es mit 980.

Weitere Informationen zu den erforderlichen und optionalen Flags für das Erstellen von Firewallregeln finden Sie in der Dokumentation zu gcloud compute firewall-rules create.

Connector verwalten

Ausgehenden Traffic von einem Dienst steuern

Standardmäßig werden nur Anfragen an interne IP-Adressen und interne DNS-Namen über einen Connector für serverlosen VPC-Zugriff weitergeleitet. Möglicherweise möchten Sie jedoch alle ausgehenden Anfragen von Ihrem Dienst an Ihr VPC-Netzwerk weiterleiten. Wenn Sie beispielsweise möchten, dass die Firewallregeln Ihres VPC-Netzwerks verhindern, dass ausgehender Cloud Run-Traffic gefährliche oder unerwünschte Hosts erreicht, dann müssen Sie alle ausgehenden Anfragen Ihres Dienstes über einen Connector für serverlosen VPC-Zugriff leiten.

Zur Steuerung der Weiterleitung ausgehender Anfragen von Ihrem Dienst können Sie für den ausgehenden VPC-Traffic eine der folgenden Optionen 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 des Dienstes werden an Ihr VPC-Netzwerk weitergeleitet. Anfragen entsprechen den Firewallregeln sowie den DNS- und Weiterleitungsregeln des Netzwerks.

Sie können beim Erstellen eines neuen Dienstes oder beim Bereitstellen einer neuen Überarbeitung über die Console, die Google Cloud CLI oder die YAML-Datei eine Einstellung für ausgehenden VPC-Traffic angeben:

Console

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Weiter > Container, Variablen und Secrets, Verbindungen, Sicherheit, um zur Seite mit der Dienstkonfiguration zu gelangen.

  4. Klicken Sie auf den Tab Verbindungen.

    Bild

  5. Nachdem Sie einen VPC-Connector ausgewählt haben, wählen Sie Nur Anfragen an private IPs über den VPC-Connector weiterleiten oder Gesamten Traffic über den VPC-Connector weiterleiten aus.

  6. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

Verwenden Sie das Flag --vpc-egress, um eine Einstellung für ausgehenden Traffic festzulegen. Sie können bei der Bereitstellung eine Einstellung für ausgehenden Traffic festlegen:

gcloud run deploy SERVICE \
--image IMAGE_URL \
--vpc-connector CONNECTOR_NAME \
--vpc-egress EGRESS_SETTING
  • Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.
  • Ersetzen Sie IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest.
  • Ersetzen Sie CONNECTOR_NAME durch den Namen des Connectors.
  • Ersetzen Sie EGRESS_SETTING durch einen Wert für die Einstellung für ausgehenden Traffic:
    • all-traffic: Sendet den gesamten ausgehenden Traffic über den Connector.
    • private-ranges-only: Sendet Traffic an interne Adressen nur über den VPC-Connector.

Sie können auch einen vorhandenen Dienst aktualisieren und die Einstellung für ausgehenden Traffic ändern:

gcloud run services update SERVICE --vpc-egress EGRESS_SETTING

YAML

Sie können die vorhandene Dienstkonfiguration mit dem Befehl gcloud run services describe --format export herunterladen und aufrufen, was bereinigte Ergebnisse im YAML-Format liefert. Anschließend können Sie die unten beschriebenen Felder ändern und die geänderte YAML-Datei mit dem Befehl gcloud run services replace hochladen. Achten Sie darauf, dass Sie die Felder nur wie dokumentiert ändern.

  1. So rufen Sie die Konfiguration auf und laden sie herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Fügen Sie das Attribut run.googleapis.com/vpc-access-egress unter dem Attribut annotations unter dem übergeordneten Attribut spec hinzu oder aktualisieren Sie es:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
            run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          name: REVISION

    Ersetzen Sie:

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes.
    • CONNECTOR_NAME durch den Namen des Connectors. Das Attribut run.googleapis.com/vpc-access-connector ist erforderlich, wenn Sie eine Einstellung für ausgehenden Traffic festlegen.
    • EGRESS_SETTING durch einen der folgenden Werte:
      • all-traffic: Sendet den gesamten ausgehenden Traffic über den Connector.
      • private-ranges-only: Sendet Traffic an interne Adressen nur über den VPC-Connector.
      • REVISION durch einen neuen Überarbeitungsnamen oder löschen (falls vorhanden). Wenn Sie einen neuen Überarbeitungsnamen angeben, muss er die folgenden Kriterien erfüllen:
        • Beginnt mit SERVICE-
        • Enthält nur Kleinbuchstaben, Ziffern und -
        • Endet nicht mit -
        • Darf nicht mehr als 63 Zeichen enthalten
  3. Ersetzen Sie den Dienst mit dem folgenden Befehl durch die neue Konfiguration:

    gcloud run services replace service.yaml

Einstellungen für Connectors für serverlosen VPC-Zugriff ansehen

Sie können die aktuellen Connector-Einstellungen für den serverlosen VPC-Zugriff für Ihren Dienst mit der Console oder dem gcloud-Befehlszeilentool aufrufen:

Console

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie auf den gewünschten Dienst, um die Seite Dienstdetails zu öffnen.

  3. Klicken Sie auf den Tab Überarbeitungen.

  4. Rechts im Detailbereich wird die Connector-Einstellung für den serverlosen VPC-Zugriff auf dem Tab Verbindungen aufgeführt.

gcloud

  1. Verwenden Sie den folgenden Befehl:

    gcloud run services describe SERVICE
  2. Suchen Sie in der zurückgegebenen Konfiguration die Einstellung für den Connector für serverlosen VPC-Zugriff.

Dienst von einem VPC-Netzwerk trennen

Sie können einen Dienst von Ihrem VPC-Netzwerk über die Cloud Console oder die Google Cloud CLI trennen:

Console

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen, wenn Sie einen neuen Dienst für die Bereitstellung konfigurieren. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf Neue Überarbeitung bearbeiten und bereitstellen.

  3. Wenn Sie einen neuen Dienst konfigurieren, füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus und klicken Sie dann auf Weiter > Container, Variablen und Secrets, Verbindungen, Sicherheit, um zur Seite mit der Dienstkonfiguration zu gelangen.

  4. Klicken Sie auf den Tab Verbindungen.

    Bild

  5. Wählen Sie im Feld VPC-Connector die Option Keine aus, um die Verbindung Ihres Dienstes mit einem VPC-Netzwerk zu trennen.

  6. Klicken Sie auf Erstellen oder Bereitstellen.

gcloud

Verwenden Sie den Befehl gcloud run services update mit dem folgenden Flag:

gcloud run services update SERVICE --clear-vpc-connector
  • Ersetzen Sie SERVICE durch den Namen Ihres Dienstes.

Connectors verursachen auch dann Kosten, wenn sie keinen Traffic haben und nicht verbunden sind. Weitere Informationen finden Sie unter Preise. Wenn Sie den Connector nicht mehr benötigen, können Sie ihn löschen, um weitere Kosten zu vermeiden.

Connector löschen

Stellen Sie vor dem Löschen eines Connectors sicher, dass keine Dienste mehr mit ihm verbunden sind.

Nutzer der freigegebenen VPC, die Connectors im Hostprojekt der freigegebenen VPC einrichten, können den Befehl gcloud compute networks vpc-access connectors describe verwenden, um die Projekte aufzulisten, in denen Dienste einen bestimmten Connector verwenden.

Verwenden Sie zum Löschen eines Connectors die Cloud Console oder die Google Cloud CLI:

Console

  1. Rufen Sie in der Console die Übersichtsseite für serverlosen VPC-Zugriff auf:

    Zur Seite „Serverloser VPC-Zugriff“

  2. Wählen Sie den Connector aus, den Sie löschen möchten.

  3. Klicken Sie auf Löschen.

gcloud

Verwenden Sie den folgenden gcloud-Befehl, um einen Connector zu löschen:

gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION

Ersetzen Sie Folgendes:

  • CONNECTOR_NAME ist der Name des Connectors, den Sie löschen möchten.
  • REGION ist die Region, in der sich der Connector befindet.

Fehlerbehebung

Dienstkontoberechtigungen

Zum Ausführen von Vorgängen in Ihrem Cloud-Projekt verwendet der Dienst für den serverlosen VPC-Zugriff das Dienstkonto Dienstagent für serverlosen VPC-Zugriff. Die E-Mail-Adresse dieses Dienstkontos hat das folgende Format:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

Standardmäßig hat dieses Dienstkonto die Rolle Dienstagent für serverlosen VPC-Zugriff (roles/vpcaccess.serviceAgent). Serverlose VPC-Zugriffsvorgänge können fehlschlagen, wenn Sie die Berechtigungen dieses Kontos ändern.

Fehler

Wenn beim Erstellen eines Connectors ein Fehler auftritt, versuchen Sie Folgendes:

  • Geben Sie einen internen RFC 1918-IP-Bereich an, der sich nicht mit vorhandenen IP-Adressreservierungen im VPC-Netzwerk überschneidet.
  • Erteilen Sie Ihrem Projekt die Berechtigung, Compute Engine-VM-Images aus dem Projekt mit der ID serverless-vpc-access-images zu verwenden. Weitere Informationen zum Aktualisieren Ihrer Organisationsrichtlinien finden Sie unter Einschränkungen für den Image-Zugriff einrichten.

Wenn Sie einen Connector angegeben haben, aber dennoch nicht auf Ressourcen in Ihrem VPC-Netzwerk zugreifen können:

  • Achten Sie darauf, dass Ihr VPC-Netzwerk keine Firewallregeln mit einer Priorität unter 1.000 hat, die eingehenden Traffic aus dem IP-Bereich des Connectors ablehnen.

Nächste Schritte