Verbindung zu VPC-Netzwerk herstellen

Auf dieser Seite wird gezeigt, wie Sie mit dem serverlosen VPC-Zugriff Ihre App Engine-Services in der Standardumgebung direkt mit Ihrem VPC-Netzwerk verbinden. Damit gewähren Sie Zugriff auf Compute Engine-VM-Instanzen, auf Memorystore-Instanzen und auf alle anderen Ressourcen mit einer internen IP-Adresse.

Vorbereitung

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, können Sie einen Connector für serverlosen VPC-Zugriff verwenden.

Wenn sich Ihr Connector im selben Projekt wie sein VPC-Netzwerk befindet, können Sie entweder einen Connector mit einem vorhandenen Subnetz oder einen Connector und ein neues Subnetz erstellen.

Wenn sich der Connector in einem Dienstprojekt befindet und eine freigegebenes VPC-Netzwerk verwendet, befinden sich der Connector und das zugehörige VPC-Netzwerk in verschiedenen Projekten. Wenn sich ein Connector und sein VPC-Netzwerk in verschiedenen Projekten befinden, muss ein Administrator des freigegebenen VPC-Netzwerks das Subnetz des Connectors im freigegebenen VPC-Netzwerk erstellen, bevor Sie den Connector erstellen können und Sie müssen den Connector mit einem vorhandenen Subnetz erstellen.

Weitere Informationen zu den Subnetzanforderungen finden Sie unter Anforderungen an Connector-Subnetze.

Weitere Informationen zum Connector-Durchsatz, einschließlich Maschinentyp und Skalierung, finden Sie unter Durchsatz und Skalierung.

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

Console

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

    Zur Seite „Serverloser VPC-Zugriff“

  2. Klicken Sie auf Connector erstellen.

  3. Geben Sie im Feld Name einen Namen für den Connector ein, der den Namenskonventionen von Compute Engine entspricht, mit den zusätzlichen Anforderungen, dass der Name weniger als 21 Zeichen lang sein muss und Bindestriche (-) als zwei Zeichen gezählt werden.

  4. 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 oder Job in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.

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

  6. Wählen Sie im Feld Subnetz eine der folgenden Optionen aus:

    • Connector mit einem vorhandenen Subnetz erstellen: Wählen Sie das vorhandene Subnetz im Feld Subnetz aus.

    • Connector und neues Subnetz erstellen: Wählen Sie Benutzerdefinierter IP-Bereich im Feld Subnetz aus. Geben Sie dann die erste Adresse in ein nicht verwendetes /28-CIDR-Feld ein (z. B. 10.8.0.0/28) zur Verwendung als primärer IPv4-Adressbereich eines neuen Subnetzes, das Google Cloud im VPC-Netzwerk des Connectors erstellt. Achten Sie darauf, dass der IP-Bereich nicht mit vorhandenen Routen im VPC-Netzwerk des Connectors in Konflikt steht. Der Name des neuen Subnetzes beginnt mit dem Präfix "aet-".

  7. (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 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:
  8. Klicken Sie auf Erstellen.

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

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

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

    gcloud services enable vpcaccess.googleapis.com
  4. Erstellen Sie den Connector mit einer der folgenden Optionen:

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

    • Connector mit einem vorhandenen Subnetz erstellen

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Ersetzen Sie dabei Folgendes:

      • CONNECTOR_NAME ist ein Name für den Connector, der mit den Compute Engine-Namenskonventionen übereinstimmt. Er muss weiter weniger als 21 Zeichen lang sein, wobei Bindestriche (-) als zwei Zeichen zählen.
      • REGION ist eine Region für Ihren Connector, die der Region des serverlosen Dienstes oder Jobs entspricht. Wenn sich Ihr Dienst oder Job in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.
      • SUBNET_NAME ist der Name des vorhandenen Subnetzes.
      • HOST_PROJECT_ID ist die Projekt-ID des freigegebenen VPC-Hostprojekts. Wenn sich der Connector und das vorhandene Subnetz im selben Projekt befinden, lassen Sie das Flag --subnet-project weg.
      • MIN ist die Mindestanzahl an Instanzen, die für den Connector verwendet werden müssen. Verwenden Sie eine Ganzzahl zwischen 2 (Standardeinstellung) und 9.
      • MAX ist die maximale Anzahl an Instanzen, die für den Connector verwendet werden können. Verwenden Sie eine Ganzzahl zwischen 3 und 10 (Standardeinstellung). Wenn der Connector bis zur maximalen Anzahl von Instanzen hochskaliert wird, skaliert er nicht wieder herunter.
      • MACHINE_TYPE muss einer der folgenden sein: f1-micro, e2-micro oder e2-standard-4.
    • Erstellen Sie einen Connector und ein neues Subnetz:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Ersetzen Sie dabei Folgendes:

      • CONNECTOR_NAME ist ein Name für den Connector, der mit den Compute Engine-Namenskonventionen übereinstimmt. Er muss weiter weniger als 21 Zeichen lang sein, wobei Bindestriche (-) als zwei Zeichen zählen.
      • REGION ist eine Region für Ihren Connector, die der Region des serverlosen Dienstes oder Jobs entspricht. Wenn sich Ihr Dienst oder Job in der Region us-central oder europe-west befindet, verwenden Sie us-central1 oder europe-west1.
      • VPC_NETWORK ist der Name des VPC-Netzwerks, an das der Connector angehängt wird. Der Connector und das VPC-Netzwerk müssen sich im selben Projekt befinden.
      • IP_RANGE: bietet ein nicht verwendetes /28 CIDR (z. B. 10.8.0.0/28), das als primärer IPv4-Adressbereich eines neues Subnetzes verwendet werden kann, das Google Cloud im VPC Netzwerk des Connectors erstellt. Achten Sie darauf, dass der IP-Bereich nicht mit vorhandenen Routen im VPC-Netzwerk des Connectors in Konflikt steht. Der Name des neuen Subnetzes beginnt mit dem Präfix "aet-".
      • MIN ist die Mindestanzahl an Instanzen, die für den Connector verwendet werden müssen. Verwenden Sie eine Ganzzahl zwischen 2 (Standardeinstellung) und 9.
      • MAX ist die maximale Anzahl an Instanzen, die für den Connector verwendet werden können. Verwenden Sie eine Ganzzahl zwischen 3 und 10 (Standardeinstellung). Wenn der Connector bis zur maximalen Anzahl von Instanzen hochskaliert wird, skaliert er nicht wieder herunter.
      • MACHINE_TYPE muss einer der folgenden sein: f1-micro, e2-micro oder e2-standard-4.
  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

    Ersetzen Sie dabei Folgendes:

    • 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      = "~> 9.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"
  version    = "~> 9.0"
  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 jeden Dienst in Ihrer App Engine-Anwendung konfigurieren, den Sie mit Ihrem VPC-Netzwerk verbinden möchten.

So legen Sie einen Connector für einen Dienst Ihrer Anwendung fest:

  1. Fügen Sie der Datei app.yaml in Ihrem Dienst das Feld vpc_access_connector hinzu:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Dabei ist PROJECT_ID die Google Cloud-Projekt-ID, REGION die Region, in der sich der Connector befindet, und CONNECTOR_NAME der Name Ihres Connectors.

  2. Stellen Sie den Dienst bereit:

    gcloud app deploy
    

Nachdem der Dienst bereitgestellt wurde, kann er Anfragen an interne IP-Adressen senden, um auf Ressourcen in Ihrem VPC-Netzwerk zuzugreifen.

Zugriff auf VPC-Ressourcen

Erforderliche Firewallregeln für Connectors in Dienstprojekten

Wenn Sie einen Connector in einem eigenständigen VPC-Netzwerk oder im Hostprojekt eines freigegebenen VPC-Netzwerks erstellen, werden in Google Cloud alle erforderlichen Firewallregeln für den Betrieb des Connectors erstellt. Weitere Informationen finden Sie unter Firewallregeln für Konnektoren in eigenständigen VPC-Netzwerken oder Freigegebenen VPC-Hostprojekte.

Wenn Sie jedoch einen Connector in einem Dienstprojekt erstellen und der Connector auf ein freigegebenes VPC-Netzwerk im Hostprojekt abzielt, müssen Sie Firewallregeln hinzufügen, um den erforderlichen Traffic für den Betrieb des Connectors aus den folgenden Bereichen zuzulassen:

Diese Bereiche werden von der Google-Infrastruktur verwendet, die Cloud Run, Cloud Run-Funktionen und der App Engine Standardumgebung zugrunde liegt. Alle Anfragen von diesen IP-Adressen stammen aus der Google-Infrastruktur, damit jede serverlose Ressource nur mit dem Connector kommuniziert, mit dem sie verbunden ist.

Außerdem müssen Sie Traffic vom Subnetz des Connectors zu Ressourcen in Ihrem VPC-Netzwerk zulassen.

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

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.

Führen Sie die folgenden Befehle im Hostprojekt aus, um diese Regeln anzuwenden:

  1. Erstellen Sie Firewallregeln, die es Anfragen von der serverlosen Infrastruktur und den Systemdiagnoseprüfungen von Google ermöglichen, alle Connectors im Netzwerk zu erreichen. In diesen Befehlen werden UDP- und TCP-Ports als Proxys bzw. für HTTP-Systemdiagnosen verwendet. Ändern Sie die angegebenen Ports nicht.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=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=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=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    Ersetzen Sie VPC_NETWORK durch den Namen des VPC-Netzwerks, an das der Connector angehängt werden soll.

  2. Erstellen Sie eine Firewallregel für eingehenden Traffic in Ihrem VPC-Netzwerk, um Anfragen von Connectors zuzulassen, die auf dieses Netzwerk ausgerichtet sind:

    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 Connector Zugriff auf alle Ressourcen im Netzwerk. Informationen zum Beschränken der Ressourcen, die Ihre serverlose Umgebung über den serverlosen VPC-Zugriff erreichen kann, finden Sie unter Zugriff von Connector-VM auf VPC-Netzwerkressourcen beschränken.

Firewallregeln für bestimmte Connectors erstellen

Die Vorgehensweise unter Erforderliche Firewallregeln für Connectors in Dienstprojekten führt zu Firewallregeln, die für alle Connectors gelten – sowohl für aktuelle als auch für Connectors, die erstellt werden in der Zukunft. 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.

VPC-Netzwerkressourcen des Connector-VM-Zugriffs einschränken

Sie können den Zugriff des Connectors auf Ressourcen im Ziel-VPC-Netzwerk mithilfe von VPC-Firewallregeln oder Regeln in Firewallrichtlinien einschränken. Diese Einschränkungen können Sie mit einer der folgenden Strategien erreichen:

  • Erstellen Sie Regeln für eingehenden Traffic, deren Ziele die Ressourcen darstellen, auf die Sie den Zugriff durch Connector-VMs beschränken möchten und deren Quellen die Connector-VMs darstellen.
  • Erstellen Sie Regeln für ausgehenden Traffic, deren Ziele die Connector-VMs darstellen und deren Ziele die Ressourcen darstellen, auf die Sie den Zugriff der Connector-VM beschränken möchten.

Die folgenden Beispiele veranschaulichen jede Strategie.

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.

Netzwerk-Tags

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 \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    Ersetzen Sie dabei Folgendes:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: deny-vpc-connector

    • PROTOCOL: Ein oder mehrere Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Unterstützte Protokolle sind tcp oder udp. Beispiel: tcp:80,udp lässt TCP-Traffic über Port 80 sowie UDP-Traffic zu. Weitere Informationen finden Sie in der Dokumentation zum Flag allow.

      Aus Sicherheits- und Validierungsgründen können Sie auch Ablehnungsregeln konfigurieren, um Traffic für die folgenden nicht unterstützten Protokolle zu blockieren: ah, all, esp, icmp, ipip und sctp.

    • 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: Der Name des VPC-Netzwerks

    • PRIORITY: Eine Ganzzahl zwischen 0 und 65.535. Beispielsweise wird durch 0 die höchste Priorität festgelegt.

  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=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    Ersetzen Sie dabei Folgendes:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: allow-vpc-connector-for-select-resources

    • PROTOCOL: Ein oder mehrere Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Unterstützte Protokolle sind tcp oder udp. Beispiel: tcp:80,udp lässt TCP-Traffic über Port 80 sowie UDP-Traffic zu. 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: Der 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 \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    Ersetzen Sie dabei Folgendes:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: deny-vpc-connector

    • PROTOCOL: Ein oder mehrere Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Unterstützte Protokolle sind tcp oder udp. Beispiel: tcp:80,udp lässt TCP-Traffic über Port 80 sowie UDP-Traffic zu. Weitere Informationen finden Sie in der Dokumentation zum Flag allow.

      Aus Sicherheits- und Validierungsgründen können Sie auch Ablehnungsregeln konfigurieren, um Traffic für die folgenden nicht unterstützten Protokolle zu blockieren: ah, all, esp, icmp, ipip und sctp.

    • VPC_CONNECTOR_CIDR_RANGE: Der CIDR-Bereich für den Connector, dessen Zugriff Sie einschränken.

    • VPC_NETWORK: Der Name des VPC-Netzwerks

    • PRIORITY: Eine Ganzzahl zwischen 0 und 65.535. Beispielsweise wird durch 0 die höchste Priorität festgelegt.

  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=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    Ersetzen Sie dabei Folgendes:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: allow-vpc-connector-for-select-resources

    • PROTOCOL: Ein oder mehrere Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Unterstützte Protokolle sind tcp oder udp. Beispiel: tcp:80,udp lässt TCP-Traffic über Port 80 sowie UDP-Traffic zu. 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: Der 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 mit Ausnahme der festgelegten Antworten an ein beliebiges Ziel zu verhindern.

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

    Ersetzen Sie dabei Folgendes:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: deny-vpc-connector

    • PROTOCOL: Ein oder mehrere Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Unterstützte Protokolle sind tcp oder udp. Beispiel: tcp:80,udp lässt TCP-Traffic über Port 80 sowie UDP-Traffic zu. Weitere Informationen finden Sie in der Dokumentation zum Flag allow.

      Aus Sicherheits- und Validierungsgründen können Sie auch Ablehnungsregeln konfigurieren, um Traffic für die folgenden nicht unterstützten Protokolle zu blockieren: ah, all, esp, icmp, ipip und sctp.

    • 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: Der Name des VPC-Netzwerks

    • PRIORITY: Eine Ganzzahl zwischen 0 und 65.535. Beispielsweise wird durch 0 die höchste Priorität festgelegt.

  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=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY

    Ersetzen Sie dabei Folgendes:

    • RULE_NAME: Name der neuen Firewallregel. Beispiel: allow-vpc-connector-for-select-resources

    • PROTOCOL: Ein oder mehrere Protokolle, die Sie von Ihrem VPC-Connector zulassen möchten. Unterstützte Protokolle sind tcp oder udp. Beispiel: tcp:80,udp lässt TCP-Traffic über Port 80 sowie UDP-Traffic zu. 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: Der 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. Sie können die Einstellung für ausgehenden Traffic für Ihren Dienst in der Datei app.yaml angeben.

Einstellungen für ausgehenden Traffic sind nicht mit dem URL-Abrufdienst kompatibel. Bei Verwendung der urlfetch-Bibliothek werden die Einstellungen für ausgehenden Traffic ignoriert und Anfragen werden nicht über einen Connector für serverlosen VPC-Zugriff weitergeleitet.

So konfigurieren Sie das Verhalten des ausgehenden Traffics Ihres App Engine-Dienstes:

  1. Fügen Sie das Attribut egress_setting dem Feld vpc_access_connector der Datei app.yaml Ihres Dienstes hinzu:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING

    Ersetzen Sie:

    • PROJECT_ID durch Ihre Google Cloud-Projekt-ID
    • REGION durch die Region, in der sich der Connector befindet.
    • CONNECTOR_NAME ist der Name des Connectors.
    • EGRESS_SETTING durch einen der folgenden Werte:
      • private-ranges-only 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.
      • all-traffic Alle ausgehenden Anfragen von Ihrem Dienst werden an Ihr VPC-Netzwerk weitergeleitet. Anfragen unterliegen dann den Firewall-, DNS- und Routingregeln Ihres VPC-Netzwerks. Beachten Sie, dass die Weiterleitung aller ausgehenden Anfragen an Ihr VPC-Netzwerk den Umfang des ausgehenden Traffics erhöht, der vom Connector für serverlosen VPC-Zugriff verarbeitet wird. Es können Gebühren anfallen.
  2. Stellen Sie den Dienst bereit:

    gcloud app deploy
    

Dienst von einem VPC-Netzwerk trennen

Zum Trennen eines Dienstes von einem VPC-Netzwerk entfernen Sie den Bereich vpc_access_connector aus der Datei app.yaml und stellen Sie den Dienst noch einmal bereit.

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 aktualisieren

Sie können die folgenden Attribute Ihres Connectors über die Google Cloud Console, die Google Cloud CLI oder die API aktualisieren und überwachen:

  • Maschinentyp (Instanz)
  • Mindest- und Höchstzahl von Instanzen
  • Letzter Durchsatz, Anzahl der Instanzen und CPU-Auslastung

Maschinentyp aktualisieren

Console

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

    Zur Seite "Serverloser VPC-Zugriff"

  2. Wählen Sie den zu bearbeitenden Connector aus und klicken Sie auf Bearbeiten.

  3. Wählen Sie in der Liste Instanztyp den gewünschten Maschinentyp (Instanz) aus. Weitere Informationen zu verfügbaren Maschinentypen finden Sie in der Dokumentation zu Durchsatz und Skalierung.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Führen Sie den folgenden Befehl in Ihrem Terminal aus, um den Connector-Maschinentyp zu aktualisieren:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    Ersetzen Sie Folgendes:

    • CONNECTOR_NAME: der Name des Connectors
    • REGION: der Name der Region Ihres Connectors
    • MACHINE_TYPE: Ihr bevorzugter Maschinentyp. Weitere Informationen zu verfügbaren Maschinentypen finden Sie in der Dokumentation zu Durchsatz und Skalierung.

Mindest- und Höchstzahl von Instanzen verringern

So verringern Sie die Mindest- und Höchstzahl von Instanzen:

  1. Erstellen Sie einen neuen Connector mit den gewünschten Werten.
  2. Aktualisieren Sie Ihren Dienst oder Ihre Funktion, um den neuen Connector zu verwenden.
  3. Löschen Sie den alten Connector, wenn Sie den Traffic verschoben haben.

Weitere Informationen finden Sie unter Connector für serverlosen VPC-Zugriff erstellen.

Mindest- und Höchstzahl von Instanzen erhöhen

Console

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

    Zur Seite "Serverloser VPC-Zugriff"

  2. Wählen Sie den zu bearbeitenden Connector aus und klicken Sie auf Bearbeiten.

  3. Wählen Sie im Feld Mindestinstanzen die gewünschte Mindestanzahl von Instanzen aus.

    Der kleinstmögliche Wert für dieses Feld ist der aktuelle Wert. Der größtmögliche Wert für dieses Feld ist der aktuelle Wert im Feld Maximale Anzahl von Instanzen minus 1. Lautet der Wert im Feld Maximale Instanzzahl beispielsweise 8, ist der größtmögliche Wert für das Feld Mindestinstanzen 7.

  4. Wählen Sie im Feld Maximale Instanzen Ihre bevorzugte maximale Anzahl von Instanzen aus.

    Der kleinstmögliche Wert für dieses Feld ist der aktuelle Wert. Der größtmögliche Wert für dieses Feld ist 10.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die Mindest- oder Höchstanzahl von Instanzen für den Connector zu erhöhen:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    Ersetzen Sie Folgendes:

  • CONNECTOR_NAME: der Name des Connectors
  • REGION: der Name der Region Ihres Connectors
  • MIN_INSTANCES: Ihre bevorzugte Mindestanzahl von Instanzen.
    • Der kleinstmögliche Wert für dieses Feld ist der aktuelle Wert von min_instances. Informationen zum Ermitteln des aktuellen Werts finden Sie unter Aktuelle Attributwerte finden.
    • Der größtmögliche Wert für dieses Feld ist der aktuelle max_instances-Wert minus 1, da min_instances kleiner als max_instances sein muss. Beispiel: Wenn max_instances 8 ist, ist der größtmögliche Wert für dieses Feld 7. Wenn Ihr Connector den Standardwert max-instances von 10 verwendet, ist der größtmögliche Wert dieses Feldes 9. Wie Sie den Wert von max-instances ermitteln, erfahren Sie unter Aktuelle Attributwerte finden.
  • MAX_INSTANCES:

    • Der kleinstmögliche Wert für dieses Feld ist der aktuelle Wert von max_instances. Informationen zum Ermitteln des aktuellen Werts finden Sie unter Aktuelle Attributwerte finden.
    • Der größtmögliche Wert für dieses Feld ist 10.

    Wenn Sie nur die minimale, aber nicht die maximale Anzahl von Instanzen erhöhen wollen, müssen Sie trotzdem die maximale Anzahl von Instanzen angeben. Umgekehrt müssen Sie, wenn Sie nur die maximale, nicht aber die minimale Anzahl der Instanzen aktualisieren wollen, die minimale Anzahl der Instanzen angeben. Geben Sie den aktuellen Wert an, um die minimale oder maximale Anzahl von Instanzen auf dem aktuellen Wert zu halten. Informationen zum Ermitteln des aktuellen Werts finden Sie unter Aktuelle Attributwerte finden.

Aktuelle Attributwerte finden

Führen Sie den folgenden Befehl in Ihrem Terminal aus, um die aktuellen Attributwerte für Ihren Connector zu ermitteln:

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
Ersetzen Sie Folgendes:

  • CONNECTOR_NAME: der Name des Connectors
  • REGION: der Name der Region Ihres Connectors
  • PROJECT: der Name Ihres Google Cloud-Projekts

Connector-Auslastung überwachen

Wenn Sie die Auslastung im Zeitverlauf beobachten, können Sie feststellen, wann die Einstellungen eines Connectors angepasst werden müssen. Wenn die CPU-Auslastung beispielsweise stark ansteigt, sollten Sie versuchen, die maximale Anzahl von Instanzen zu erhöhen, um bessere Ergebnisse zu erzielen. Wenn der Durchsatz maximal ausgeschöpft ist, können Sie zu einem größeren Maschinentyp wechseln.

So rufen Sie Diagramme für den Durchsatz, die Anzahl der Instanzen und die CPU-Auslastungsmesswerte im Zeitverlauf mithilfe der Google Cloud Console auf:

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

    Zur Seite „Serverloser VPC-Zugriff“

  2. Klicken Sie auf den Namen des Connectors, den Sie überwachen möchten.

  3. Wählen Sie die Anzahl der Tage zwischen 1 und 90 Tagen aus.

  4. Bewegen Sie den Mauszeiger im Diagramm Durchsatz über das Diagramm, um den letzten Durchsatz des Connectors zu sehen.

  5. Bewegen Sie den Mauszeiger im Diagramm Anzahl der Instanzen über das Diagramm, um die Anzahl der zuletzt vom Connector verwendeten Instanzen zu sehen.

  6. Bewegen Sie den Mauszeiger im Diagramm CPU-Auslastung auf das Diagramm, um die aktuelle CPU-Auslastung des Connectors zu sehen. Das Diagramm zeigt die CPU-Auslastung, die auf Instanzen für das 50., 95. und 99. Perzentil verteilt ist.

Connector löschen

Achten Sie darauf, dass noch keine Dienste oder Jobs mit ihm verbunden sind, bevor Sie einen Connector löschen.

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 oder Jobs einen bestimmten Connector verwenden.

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

Console

  1. Rufen Sie in der Google Cloud 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

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 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 dabei Folgendes:

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

Benutzerdefinierte Einschränkungen für Projekte verwalten

In diesem Abschnitt wird beschrieben, wie Sie benutzerdefinierte Einschränkungen für Connectors für Serverloser VPC-Zugriff erstellen und auf Projektebene erzwingen. Informationen zu benutzerdefinierten Organisationsrichtlinien finden Sie unter Benutzerdefinierte Organisationsrichtlinien erstellen und verwalten.

Mit der Google Cloud-Organisationsrichtlinie können Sie die Ressourcen Ihrer Organisation zentral steuern. Als Administrator für Organisationsrichtlinien können Sie eine Organisationsrichtlinie definieren, also eine Reihe von Einschränkungen, die für Google Cloud-Ressourcen und untergeordnete Elemente dieser Ressourcen in der Google Cloud-Ressourcenhierarchie gelten. Sie können Organisationsrichtlinien auf Organisations-, Ordner- oder Projektebene erzwingen.

Die Organisationsrichtlinie bietet vordefinierte Einschränkungen für verschiedene Google Cloud-Dienste. Wenn Sie jedoch eine detailliertere, anpassbare Steuerung der spezifischen Felder wünschen, die in Ihren Organisationsrichtlinien eingeschränkt werden, können Sie auch benutzerdefinierte Organisationsrichtlinien erstellen.

Vorteile

Mit dem Serverloser VPC-Zugriff können Sie beliebig viele benutzerdefinierte Einschränkungen mit den meisten benutzerkonfigurierten Feldern in der Serverless VPC Access API schreiben. Sie können beispielsweise eine benutzerdefinierte Einschränkung erstellen, mit der Sie angeben, welche Subnetze ein Connector für Serverloser VPC-Zugriff verwenden kann.

Nach der Anwendung zeigen Anfragen, die gegen eine Richtlinie verstoßen, die eine benutzerdefinierte Einschränkung erzwingt, eine Fehlermeldung in der gcloud CLI und in den Logs für den Serverloser VPC-Zugriff. Die Fehlermeldung enthält die Einschränkungs-ID und eine Beschreibung der verletzten benutzerdefinierten Einschränkung.

Übernahme von Richtlinien

Standardmäßig werden Organisationsrichtlinien von den Nachfolgerelementen der Ressourcen übernommen, für die Sie die Richtlinie erzwingen. Wenn Sie beispielsweise eine Richtlinie für einen Ordner erzwingen, erzwingt Google Cloud die Richtlinie für alle Projekte in dem Ordner. Weitere Informationen zu diesem Verhalten und zu dessen Änderung finden Sie unter Regeln für die Evaluierung der Hierarchie.

Beschränkungen

Die Angabe des Maschinentyps, der Mindest- oder der Maximalzahl von Instanzen wird nicht unterstützt.

Hinweise

Sie müssen Ihre Organisations-ID kennen.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Organisationsrichtlinien-Administrator (roles/orgpolicy.policyAdmin) für die Organisationsressource zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Organisationsrichtlinien benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Benutzerdefinierte Einschränkung erstellen

Eine benutzerdefinierte Einschränkung wird in einer YAML-Datei durch die Ressourcen, Methoden, Bedingungen und Aktionen definiert, die von dem Dienst unterstützt werden, für den Sie die Organisationsrichtlinie erzwingen. Bedingungen für Ihre benutzerdefinierten Einschränkungen werden mithilfe der Common Expression Language (CEL) definiert. Weitere Informationen zum Erstellen von Bedingungen in benutzerdefinierten Einschränkungen mit CEL finden Sie im Abschnitt CEL unter Benutzerdefinierte Einschränkungen erstellen und verwalten.

Im folgenden Beispiel wird gezeigt, wie Sie eine YAML-Datei für eine benutzerdefinierte Einschränkung für den Serverloser VPC-Zugriff erstellen:

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

Ersetzen Sie Folgendes:

  • ORGANIZATION_ID: Ihre Organisations-ID, z. B. 123456789.

  • CONSTRAINT_NAME: Name, den Sie für Ihre neue benutzerdefinierte Einschränkung verwenden möchten. Eine benutzerdefinierte Einschränkung muss mit custom. beginnen und darf nur Großbuchstaben, Kleinbuchstaben oder Ziffern enthalten, z. B. custom.defaultNetworkConstraint. Die maximale Länge dieses Feldes beträgt 70 Zeichen, das Präfix wird nicht gezählt.

  • CONDITION: eine CEL-Bedingung, die für eine Darstellung einer unterstützten Dienstressource geschrieben wird. Dieses Feld hat eine maximale Länge von 1000 Zeichen. Beispiel: "resource.network == default".

  • ACTION: Aktion, die ausgeführt werden soll, wenn condition erfüllt ist. Dies kann entweder ALLOW oder DENY sein.

  • DISPLAY_NAME: Ein nutzerfreundlicher Name für die Einschränkung. Dieses Feld hat eine maximale Länge von 200 Zeichen.

  • DESCRIPTION: Eine nutzerfreundliche Beschreibung der Einschränkung, die als Fehlermeldung angezeigt werden soll, wenn die Richtlinie verletzt wird, z. B. "Require network to not be set to default.". Dieses Feld hat eine maximale Länge von 2.000 Zeichen.

Weitere Informationen zum Erstellen einer benutzerdefinierten Einschränkung finden Sie unter Benutzerdefinierte Einschränkungen definieren.

Benutzerdefinierte Einschränkung einrichten

Nachdem Sie die YAML-Datei für eine neue benutzerdefinierte Einschränkung erstellt haben, müssen Sie sie einrichten, um sie für Organisationsrichtlinien in Ihrer Organisation verfügbar zu machen. Verwenden Sie zum Einrichten einer benutzerdefinierten Einschränkung den Befehl gcloud org-policies set-custom-constraint:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
Ersetzen Sie CONSTRAINT_PATH durch den vollständigen Pfad zu Ihrer benutzerdefinierten Einschränkungsdatei. Beispiel: /home/user/customconstraint.yaml Nach Abschluss des Vorgangs sind Ihre benutzerdefinierten Einschränkungen als Organisationsrichtlinien in der Liste der Google Cloud-Organisationsrichtlinien verfügbar. Prüfen Sie mit dem Befehl gcloud org-policies list-custom-constraints, ob die benutzerdefinierte Einschränkung vorhanden ist:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
Ersetzen Sie ORGANIZATION_ID durch die ID Ihrer Organisationsressource. Weitere Informationen finden Sie unter Organisationsrichtlinien aufrufen.

Benutzerdefinierte Einschränkung erzwingen

Sie können eine boolesche Einschränkung erzwingen, indem Sie eine Organisationsrichtlinie erstellen, die darauf verweist, und diese Organisationsrichtlinie dann auf eine Google Cloud-Ressource anwenden.

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Organisationsrichtlinien.

    Zu den Organisationsrichtlinien

  2. Wählen Sie in der Projektauswahl das Projekt aus, für das Sie die Organisationsrichtlinie festlegen möchten.
  3. Wählen Sie auf der Seite Organisationsrichtlinien die gewünschte Einschränkung aus, um die Seite Richtliniendetails aufzurufen.
  4. Zum Konfigurieren der Organisationsrichtlinie für diese Ressource klicken Sie auf Richtlinie verwalten.
  5. Wählen Sie auf der Seite Richtlinie bearbeiten die Option Richtlinie der übergeordneten Ressource überschreiben aus.
  6. Klicken Sie auf Regel hinzufügen.
  7. Wählen Sie im Abschnitt Erzwingung aus, ob die Erzwingung dieser Organisationsrichtlinie aktiviert oder deaktiviert werden soll.
  8. Klicken Sie optional auf Bedingung hinzufügen, um die Organisationsrichtlinie von einem Tag abhängig zu machen. Wenn Sie einer Organisationsrichtlinie eine bedingte Regel hinzufügen, müssen Sie mindestens eine bedingungsfreie Regel hinzufügen oder die Richtlinie kann nicht gespeichert werden. Weitere Informationen finden Sie unter Organisationsrichtlinie mit Tags festlegen.
  9. Wenn dies eine benutzerdefinierte Einschränkung ist, können Sie auf Änderungen testen klicken, um die Auswirkungen dieser Organisationsrichtlinie zu simulieren. Weitere Informationen finden Sie unter Änderungen an Organisationsrichtlinien mit dem Richtliniensimulator testen.
  10. Klicken Sie auf Richtlinie festlegen, um den Vorgang abzuschließen und die Organisationsrichtlinie anzuwenden. Es kann bis zu 15 Minuten dauern, bis die Richtlinie wirksam wird.

gcloud

Um eine Organisationsrichtlinie zu erstellen, die eine boolesche Einschränkung erzwingt, erstellen Sie eine YAML-Richtliniendatei, die auf die Einschränkung verweist:

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

Ersetzen Sie Folgendes:

  • PROJECT_ID: das Projekt, für das Sie die Einschränkung erzwingen möchten
  • CONSTRAINT_NAME: der Name, den Sie für Ihre benutzerdefinierte Einschränkung definiert haben. Beispiel: custom.defaultNetworkConstraint.

Führen Sie den folgenden Befehl aus, um die Organisationsrichtlinie mit der Einschränkung zu erzwingen:

    gcloud org-policies set-policy POLICY_PATH
    

Ersetzen Sie POLICY_PATH durch den vollständigen Pfad zur YAML-Datei Ihrer Organisationsrichtlinie. Es kann bis zu 15 Minuten dauern, bis die Richtlinie wirksam wird.

Benutzerdefinierte Einschränkung testen

Um das Beispiel zu testen, bei dem die Einstellungen für den eingehenden Traffic eingeschränkt werden, können Sie einen Connector im Projekt bereitstellen, für den default als Wert für das Netzwerk festgelegt ist:

gcloud compute networks vpc-access connectors create org-policy-test \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --network=default

Die Ausgabe sieht so aus:

Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]

Beispiele für benutzerdefinierte Organisationsrichtlinien für häufige Anwendungsfälle

In der folgenden Tabelle finden Sie Beispiele für benutzerdefinierte Einschränkungen, die für Connectors für den Serverloser VPC-Zugriff nützlich sein können:

Beschreibung Einschränkungssyntax
Erforderlich ist, dass Connectors für den Serverloser VPC-Zugriff nur ein bestimmtes Netzwerk verwenden können.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.network == 'allowlisted-network'"
    actionType: ALLOW
    displayName: allowlistNetworks
    description: Require connectors to use a specific network.
Beschreibung Einschränkungssyntax
Erforderlich, dass Connectors für Serverloser VPC-Zugriff nur auf ein bestimmtes Subnetz zugreifen können.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.subnet.name == 'allocated-subnet'"
    actionType: ALLOW
    displayName: restrictSubnetForProject
    description: This project is only allowed to use the subnet "allocated-subnet".

Fehlerbehebung

Dienstkontoberechtigungen

Zum Ausführen von Vorgängen in Ihrem Google 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.

Schlechte Netzwerkleistung oder hohe CPU-Auslastung bei Inaktivität

Die Verwendung eines einzelnen Connectors für Tausende von Instanzen kann zu Leistungseinbußen und einer erhöhten CPU-Auslastung bei Inaktivität führen. Sie können das Problem beheben, indem Sie Ihre Dienste auf mehrere Connectors aufteilen.

Fehler

Fehler: Dienstkonto benötigt Service Agent-Rolle

Wenn Sie die Organisationsrichtlinie Restrict Resource Service Usage verwenden, um den Cloud Deployment Manager (deploymentmanager.googleapis.com) zu blockieren, wird möglicherweise folgende Fehlermeldung angezeigt:

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

Legen Sie die Organisationsrichtlinie fest, um den Deployment Manager aus der Sperrliste zu entfernen, oder fügen Sie ihn zur Zulassungsliste hinzu.

Fehler beim Erstellen eines Connectors

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

Zugriff auf Ressourcen nicht möglich

Wenn Sie einen Connector angegeben haben, aber immer noch nicht auf Ressourcen in Ihrem VPC-Netzwerk zugreifen können, achten Sie darauf, dass es in Ihrem VPC-Netzwerk keine Firewallregeln mit einer Priorität unter 1000 gibt, die eingehenden Traffic aus dem IP-Bereich Ihres Connectors verweigern.

Wenn Sie einen Connector in einem freigegebenen VPC-Dienstprojekt konfigurieren, achten Sie darauf, dass Ihre Firewallregeln eingehenden Traffic von Ihrer serverlosen Infrastruktur zum Connector zulassen.

Fehler bezüglich verweigerter Verbindung

Wenn Sie connection refused- oder connection timeout-Fehler erhalten, die die Netzwerkleistung beeinträchtigen, könnten Ihre Verbindungen unbegrenzt über Aufrufe Ihrer serverlosen Anwendung hinweg wachsen. Verwenden Sie eine Clientbibliothek, die Verbindungspools unterstützt, um die maximale Anzahl der pro Instanz verwendeten Verbindungen zu begrenzen. Ausführliche Beispiele zu Verbindungspools finden Sie unter Datenbankverbindungen verwalten.

Fehler bezüglich nicht gefundener Ressource

Wenn Sie ein VPC-Netzwerk oder eine Firewallregel löschen, wird möglicherweise eine Meldung wie diese angezeigt: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Informationen zu diesem Fehler und zu seiner Behebung finden Sie in der Dokumentation zu VPC-Firewallregeln unter Fehler bezüglich nicht gefundener Ressource.

Nächste Schritte