Eingehenden Netzwerktraffic 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 ist der Endpunkt eines Cloud Run-Dienstes über die folgenden Netzwerk-Eingangspfade erreichbar:

  • Eine standardmäßige run.app-URL, die Sie deaktivieren können
  • Alle konfigurierten Domainzuordnungen
  • Alle konfigurierten externen Application Load Balancer oder internen Application Load Balancer

Alle Netzwerk-Ingress-Pfade unterliegen der Eingangseinstellung des Dienstes. Mit den standardmäßigen Ingress-Pfaden und der standardmäßigen Ingress-Einstellung kann jede Ressource im Internet Ihren Cloud Run-Dienst erreichen. Die IAM-Authentifizierung gilt weiterhin für Anfragen, die die Dienstendpunkte von einem der vorherigen Pfade für eingehenden Netzwerktraffic aus erreichen. Verwenden Sie für einen mehrstufigen Ansatz zur Zugriffsverwaltung sowohl Netzwerk-Ingress-Einstellungen als auch die IAM-Authentifizierung.

Verfügbare Einstellungen für den Netzwerkeintrag

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 werden.
  • 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, wenn sie sich im selben Projekt oder VPC Service Controls-Perimeter befinden wie Ihr Cloud Run-Dienst und wenn sie die Standard-URL run.app und keine benutzerdefinierte Domain verwenden:
  • Interner Application Load Balancer, einschließlich Anfragen von freigegebenen VPC-Netzwerken, wenn sie über den internen Application Load Balancer weitergeleitet werden
  • Von VPC Service Controls zugelassene Anfragen.

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.

Für Anfragen von Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, BigQuery und Workflows an einen internen Dienst müssen Sie die Standard-URL run.app von Cloud Run für diesen Dienst verwenden. Sie können keine benutzerdefinierte Domain verwenden.
internes und Cloud-Load-Balancing Mit dieser Einstellung werden Anfragen von den folgenden Ressourcen zugelassen:
<ph type="x-smartling-placeholder">
    </ph>
  • Ressourcen, die durch die restriktivere interne Einstellung zulässig sind
  • Externer Application Load Balancer
. Mit dieser Einstellung haben Sie folgende Möglichkeiten: <ph type="x-smartling-placeholder">
    </ph>
  • 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).

Hinweis: Verwenden Sie internal-and-cloud-load-balancing, um diese Einstellung in der gcloud CLI zu aktivieren. Um diese Einstellung in der Google Cloud Console zu aktivieren, wählen Sie Intern > Traffic von externen Application Load Balancern zulassen.
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 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 externe IP-Adressen haben oder Cloud NAT verwenden. Andernfalls finden Sie weitere Informationen unter Anfragen von VPC-Netzwerken empfangen.

  • Wenn Sie von Cloud Run, App Engine oder Cloud Functions einen Cloud Run-Dienst aufrufen, der auf „Intern“ oder „Intern und Cloud Load Balancing“ festgelegt ist, muss der Datenverkehr durch ein VPC-Netzwerk geleitet werden, das als intern gilt. Siehe Anfragen von anderen Cloud Run-Diensten, App Engine und Cloud Functions empfangen.

  • Anfragen von Ressourcen in VPC-Netzwerken im selben Projekt gelten als „intern“, auch wenn die Ressource, von der sie stammen, eine externe IP-Adresse hat.

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

Eingehenden Traffic festlegen

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

Console

  1. Zu Cloud Run

  2. Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Dienst erstellen und füllen Sie die Seite mit den anfänglichen Diensteinstellungen nach Bedarf aus.

  3. Wenn Sie einen vorhandenen Dienst konfigurieren, 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.

gcloud

  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

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration 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
    }
  }
}

Standard-URL deaktivieren

Deaktivieren Sie die standardmäßige run.app-URL eines Cloud Run-Dienstes, um nur Traffic von den anderen Ingress-Pfaden des Dienstes zuzulassen: Cloud Load Balancing und jede konfigurierte Domainzuordnung.

Befehlszeile

  • Führen Sie zum Deaktivieren der run.app-URL für einen Dienst den Befehl gcloud beta run deploy oder gcloud beta run services update mit dem Flag --no-default-url aus:

    gcloud beta run deploy SERVICE_NAME --no-default-url
    

    Dabei ist SERVICE_NAME der Name Ihres Cloud Run-Dienstes.

In der Ausgabe wird die URL als None angezeigt.

Verwenden Sie das Flag --default-url, um die Standard-URL wiederherzustellen.

YAML

  1. Wenn Sie einen neuen Dienst erstellen, überspringen Sie diesen Schritt. Wenn Sie einen vorhandenen Dienst aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Verwenden Sie die Annotation run.googleapis.com/default-url-disabled, um die run.app-URL zu deaktivieren:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      annotations:
        run.googleapis.com/default-url-disabled: true
        run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION

    Ersetzen

    • SERVICE durch den Namen Ihres Cloud Run-Dienstes.
    • 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. Erstellen oder aktualisieren Sie den Dienst mit dem folgenden Befehl:

    gcloud run services replace service.yaml

Wenn Sie die Standard-URL wiederherstellen möchten, entfernen Sie die Anmerkung run.googleapis.com/default-url-disabled.

Die folgenden Google Cloud-Dienste verwenden die Standard-run.app-URL, um Cloud Run aufzurufen. Wenn Sie die Standard-URL run.app deaktivieren, funktionieren diese Dienste nicht wie erwartet:

Nächste Schritte