Eingehenden Traffic für Cloud Run einschränken

Auf dieser Seite wird beschrieben, wie Sie den eingehenden Zugriff auf den Cloud Run-Dienst mithilfe von Einstellungen für eingehenden Traffic steuern. Auf Netzwerkebene kann standardmäßig jede Ressource im Internet Ihren Cloud Run-Dienst über die URL run.app oder eine in Cloud Run eingerichtete benutzerdefinierte Domain erreichen. Sie können diese Standardeinstellung ändern, indem Sie eine andere Einstellung für eingehenden Traffic festlegen. Alle Ingress-Pfade, einschließlich der Standard-URL run.app, unterliegen der Einstellung für eingehenden Traffic. Eingehender Traffic wird auf Dienstebene festgelegt.

Ingress-Einstellungen und IAM-Authentifizierungsmethoden sind zwei Möglichkeiten, um den Zugriff auf einen Dienst zu verwalten. Sie sind unabhängig voneinander. Verwenden Sie für einen mehrstufigen Ansatz die Zugriffsverwaltung.

Verfügbare Einstellungen für eingehenden Traffic

Diese Einstellungen sind verfügbar:

Einstellung Beschreibung
Intern Stärkste Einschränkung. Sie lässt Anfragen aus den folgenden Quellen zu:
  • Interner Application Load Balancer, einschließlich Anfragen von freigegebenen VPC-Netzwerken, wenn sie über den internen Application Load Balancer weitergeleitet werden
  • Ressourcen, die von einem VPC Service Controls-Perimeter zugelassen werden, der Ihren Cloud Run-Dienst enthält Cloud Run muss als eingeschränkter Dienst konfiguriert sein.
  • VPC-Netzwerke, die sich im selben Projekt wie Ihr Cloud Run-Dienst befinden
  • Eingehender Traffic von freigegebener VPC: Das freigegebene VPC-Netzwerk, an den Ihre Überarbeitung Traffic gemäß der Konfiguration senden soll. Informationen dazu, wann Traffic der freigegebenen VPC als "intern" erkannt wird, finden Sie unter Besondere Überlegungen für freigegebene VPCs.
  • Die folgenden Google Cloud-Produkte, die sich im selben Projekt oder VPC Service Controls-Perimeter wie Ihr Cloud Run-Dienst befinden:
    • Cloud Scheduler
    • Cloud Tasks
    • Eventarc
    • Pub/Sub
    • Workflows
    • BigQuery
Anfragen von diesen Quellen verbleiben im Google-Netzwerk, auch wenn sie über die URL run.app auf Ihren Dienst zugreifen. Anfragen aus anderen Quellen, einschließlich des Internets, können Ihren Dienst nicht über die URL run.app oder benutzerdefinierte Domains erreichen.

Anfragen an Cloud Run von Cloud Run, Cloud Functions oder App Engine müssen an das VPC-Netzwerk gesendet werden, um als intern betrachtet zu werden. Verwenden Sie zum Weiterleiten von Anfragen an das VPC-Netzwerk ausgehenden Direct VPC-Traffic oder einen Connector für serverlosen VPC-Zugriff und aktivieren Sie den privaten Google-Zugriff auf das Subnetz, das dem ausgehenden Direct VPC-Traffic oder dem Connector zugeordnet ist.

Mehrinstanzenfähigkeit wird nicht unterstützt, also mehrere Vertrauensdomains in einem Projekt.
internes und Cloud-Load-Balancing Anfragen von den folgenden Ressourcen sind zulässig:
  • Ressourcen, die durch die restriktivere interne Einstellung zulässig sind
  • Externer Application Load Balancer
Verwenden Sie die Einstellung für internes und Cloud-Load-Balancing für Folgendes:
  • Akzeptieren Sie Anfragen aus dem Internet über den externen Application Load Balancer. Direkte Anfragen an die run.app-URL aus dem Internet sind nicht zulässig.
  • Anfragen aus dem Internet müssen den Features des externen Application Load Balancers unterliegen (z. B. Identity-Aware Proxy, Google Cloud Armor und Cloud CDN).
Alle Geringste Einschränkung. Ermöglicht alle Anfragen, einschließlich Anfragen direkt aus dem Internet an die URL run.app.

Auf interne Dienste zugreifen

Weitere Überlegungen:

  • Wenn Sie auf interne Dienste zugreifen, rufen Sie sie so auf, wie Sie es auch mit ihren öffentlichen URLs tun würden, entweder die Standard-URL run.app oder eine in Cloud Run eingerichtete benutzerdefinierte Domain.

  • Für Anfragen von Compute Engine-VM-Instanzen ist keine weitere Einrichtung für Maschinen erforderlich, die öffentliche IP-Adressen haben oder Cloud NAT verwenden. Andernfalls finden Sie weitere Informationen unter Anfragen von VPC-Netzwerken empfangen.

  • Verbinden Sie für Anfragen von anderen Cloud Run-Diensten oder von Cloud Functions-Funktionen im selben Projekt den Dienst oder die Funktion mit einem VPC-Netzwerk und leiten Sie den gesamten ausgehenden Traffic über den Connector weiter, wie unter VPC mit Connectors beschrieben. Beachten Sie, dass die IAM-Aufrufer-Berechtigung weiterhin erzwungen wird.

  • Anfragen von Ressourcen innerhalb von VPC-Netzwerken im selben Projekt werden als „intern“ klassifiziert, auch wenn die Ressource, von der sie stammen, eine öffentliche IP-Adresse hat.

  • Anfragen von Ressourcen in einem separaten Projekt, aber innerhalb desselben VPC Service Controls-Perimeters können nur dann einen internen Dienst aufrufen, wenn Sie die Cloud Run Admin API als eingeschränkten Dienst im Dienstperimeter konfigurieren.

  • Informationen dazu, wann Traffic der freigegebenen VPC als "intern" erkannt wird, finden Sie unter Besondere Überlegungen für freigegebene VPCs.

  • Anfragen von lokalen Ressourcen, die über Cloud VPN und Cloud Interconnect mit dem VPC-Netzwerk verbunden sind, gelten als „intern“.

  • Für Anfragen von Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, BigQuery und Workflows an einen internen Dienst gelten die folgenden Anforderungen:

    • Sie müssen für diesen Dienst die standardmäßige run.app-URL von Cloud Run verwenden, keine benutzerdefinierte Domain.
    • Der Job, die Aufgabe, das Pub/Sub-Abo, das Ereignis, der Workflow oder die BigQuery-Remote-Funktion muss sich im selben Projekt oder VPC Service Controls-Perimeter wie der Cloud Run-Dienst befinden.
  • Sie können interne Dienste aus Zugriffsquellen außerhalb des VPC-Netzwerks aufrufen. Verwenden Sie dazu Cloud Scheduler, Cloud Tasks, Pub/Sub, Eventarc, Workflows oder BigQuery innerhalb desselben Projekts oder VPC Service Controls-Perimeters.

Ingress wird eingerichtet

Sie können das Ingress mit einer der unterstützten Methoden auf den folgenden Tabs festlegen:

Console

  1. Öffnen Sie Cloud Run.

  2. Klicken Sie auf Dienst erstellen und füllen Sie die Seite mit den anfänglichen Diensteinstellungen wie gewünscht aus, wenn Sie einen neuen Dienst konfigurieren.

  3. Wenn Sie einen vorhandenen Dienst konfigurieren möchten, klicken Sie auf den Dienst und dann auf den Tab Netzwerk.

  4. Wählen Sie den eingehenden Traffic aus, den Sie zulassen möchten:

    Image

  5. Klicken Sie auf Erstellen oder Speichern.

Befehlszeile

  1. Wenn Sie einen neuen Dienst bereitstellen, stellen Sie den Dienst mit dem Flag --ingress bereit:

    gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS

    Ersetzen

    • INGRESS durch eine der verfügbaren Einstellungen für eingehenden Traffic.
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE durch den Dienstnamen
    • IMAGE_URL durch einen Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest. Wenn Sie Artifact Registry verwenden, muss das Repository REPO_NAME bereits erstellt sein. Die URL hat die Form LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
  2. Wenn Sie einen vorhandenen Ingress-Dienst ändern:

    gcloud run services update SERVICE --ingress INGRESS

    Ersetzen

YAML

Sie können vorhandene Dienstkonfigurationen 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. Aktualisieren Sie die Annotation run.googleapis.com/ingress::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/ingress: INGRESS
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

    Ersetzen

    • SERVICE durch den Namen Ihres Cloud Run
    • INGRESS durch eine der verfügbaren Einstellungen für eingehenden Traffic.
      • all
      • internal
      • internal-and-cloud-load-balancing
    • 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

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

Fügen Sie der Datei main.tf Folgendes hinzu:

resource "google_cloud_run_v2_service" "default" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  # For valid annotation values and descriptions, see
  # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service#ingress
  ingress = "INGRESS_TRAFFIC_INTERNAL_ONLY"

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" #public image for your service
    }
  }
}

Nächste Schritte