Eingehenden Traffic für Netzwerkendpunkte für Cloud Run-Dienste und -Instanzen einschränken

Auf dieser Seite wird beschrieben, wie Sie den eingehenden Zugriff auf Ihre Cloud Run-Dienste und Instanzenmithilfe von Einstellungen für eingehenden Traffic steuern.

Auf Netzwerkebene ist dereines Cloud Run-Dienstes oder der einer Instanz über die folgenden Netzwerk-Ingress-Pfade erreichbar:

  • Standard-run.app-URLs, die Sie deaktivieren können
  • Alle konfigurierten Domainzuordnungen
  • Jeder konfigurierte externe Application Load Balancer oder interne Application Load Balancer

Alle Netzwerk-Ingress-Pfade unterliegen der Einstellung für eingehenden Traffic für die Ressource. Mit den standardmäßigen Ingress-Pfaden und der standardmäßigen Einstellung für eingehenden Traffic kann jede Ressource im Internet Ihre Cloud Run-Ressource erreichen. Sie können eine benutzerdefinierte Einschränkung verwenden, um die Ingress-Einstellungen für Ihre Organisation oder für eine Reihe von Projekten einzuschränken. Die IAM-Authentifizierung gilt weiterhin für Anfragen, die über einen der oben genannten Netzwerkeingangspfade an die Dienstendpunkte oder Instanzendpunkte gelangen. Verwenden Sie für einen mehrstufigen Ansatz zur Zugriffsverwaltung sowohl Netzwerkeingangs-Einstellungen als auch die IAM-Authentifizierung.

Verwenden Sie Netzwerk-Tags, um den Zugriff von Connector-VMs auf VPC-Ressourcen einzuschränken.

Verfügbare Einstellungen für den eingehenden Netzwerktraffic

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 freigegebene 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 oder Ihre Instanzenthält. Cloud Run muss als eingeschränkter Dienst konfiguriert werden.
  • VPC-Netzwerke, die sich im selben Projekt wie Ihr Cloud Run-Dienst oder Ihre Instanzbefinden.
  • Eingehender Traffic von freigegebene VPC: Das freigegebene VPC-Netzwerk, an das Ihre Dienstüberarbeitung oder Cloud Run-Instanz Traffic gemäß der Konfiguration senden soll. Informationen dazu, wann Traffic der freigegebene VPC als „intern“ erkannt wird, finden Sie unter Besondere Überlegungen für gemeinsam genutzte VPCs.
  • Die folgenden Google Cloud -Produkte, wenn sie sich im selben Projekt oder VPC Service Controls-Perimeter wie Ihr Cloud Run-Dienst oder Ihre Cloud Run-Instanzbefinden und wenn sie die Standard-URL run.app und keine benutzerdefinierte Domain verwenden:
Anfragen von diesen Quellen verbleiben im Google-Netzwerk, auch wenn sie über die URL run.app auf Ihren Dienst oder die Instanz zugreifen. Anfragen aus anderen Quellen, einschließlich des Internets, können Ihren Dienst oder Ihre Instanz nicht über die URLrun.appoder benutzerdefinierte Domains erreichen.

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 aus.
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 oder App Engine 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. Weitere Informationen finden Sie unter Anfragen von anderen Cloud Run-Diensten oder App Engine 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 über Cloud VPN und Cloud Interconnect mit dem VPC-Netzwerk verbunden sind, gelten als „intern“.

Eingehenden Traffic festlegen

In den folgenden Abschnitten wird beschrieben, wie Sie den Ingress für Cloud Run-Dienste und ‑Instanzenfestlegen.

Eingehenden Traffic für Cloud Run-Dienste festlegen

Sie können den Ingress für einen Cloud Run-Dienst über dieGoogle Cloud Console, die Google Cloud CLI, YAML oder Terraform festlegen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Dienste für Cloud Run auf:

    Zu Cloud Run

  2. Wenn Sie einen neuen Dienst konfigurieren, klicken Sie auf Container bereitstellen, um das Formular Dienst erstellen aufzurufen. Füllen Sie die Seite mit den anfänglichen Diensteinstellungen 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.

  5. Klicken Sie für einen neuen Dienst auf Erstellen. Klicken Sie für einen vorhandenen Dienst auf Unterschied ansehen und erneut bereitstellen und dann auf Änderungen bereitstellen.

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 Sie Folgendes:

    • SERVICE: Ihr Dienstname.
    • IMAGE_URL: ein 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 das Format LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • INGRESS: Eine der verfügbaren Einstellungen für eingehenden Traffic:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Wenn Sie einen vorhandenen Ingress-Dienst ändern:

    gcloud run services update SERVICE \
        --ingress INGRESS

    Ersetzen Sie Folgendes:

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:
      name: SERVICE
      annotations:
        run.googleapis.com/ingress: INGRESS
    spec:
      template:
        metadata:
          name: REVISION

    Ersetzen Sie Folgendes:

    • SERVICE: Der Name Ihres Cloud Run-Dienstes.
    • INGRESS: Eine der verfügbaren Einstellungen für eingehenden Traffic:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION: ein neuer Überarbeitungsname 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 einer google_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:
resource "google_cloud_run_v2_service" "default" {
  provider = google-beta
  name     = "ingress-service"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  # 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
    }
  }
}

Eingehenden Traffic für Cloud Run-Instanzen festlegen

Sie können den eingehenden Traffic für eine Cloud Run-Instanz mit der Google Cloud CLI oder YAML festlegen:

gcloud

  1. Wenn Sie eine neue Instanz erstellen, stellen Sie die Instanz mit dem Flag --ingress bereit:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --ingress INGRESS

    Ersetzen Sie Folgendes:

  2. Wenn Sie einen vorhandenen Ingress für eine Instanz ändern:

    gcloud beta run instances update INSTANCE \
        --ingress INGRESS

    Ersetzen Sie Folgendes:

YAML

  1. Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Aktualisieren Sie die Annotation run.googleapis.com/ingress::

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/ingress: INGRESS
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

    Ersetzen Sie Folgendes:

    • INSTANCE: Der Name Ihrer Cloud Run-Instanz.
    • INGRESS: Eine der verfügbaren Einstellungen für eingehenden Traffic:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • CONTAINER_NAME: Der Name des Containers.
    • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:

    gcloud beta run instances replace instance.yaml

Standard-URL deaktivieren

Bevor Sie die Standard-URL deaktivieren, sollten Sie beachten, dass die folgendenGoogle Cloud Dienste oder Instanzen die Standard-run.app-URL verwenden, um Cloud Run aufzurufen. Durch Deaktivieren der Standard-run.app-URL wird verhindert, dass diese Dienste oder Instanz wie erwartet funktionieren:

In den folgenden Abschnitten wird beschrieben, wie Sie die Standard-URL für Cloud Run-Dienste und ‑Instanzendeaktivieren.

Standard-URL für Cloud Run-Dienste deaktivieren

Deaktivieren Sie die standardmäßige run.app-URL eines Cloud Run-Dienstes oder einer Instanz , um nur Traffic von den anderen Ingress-Pfaden des Dienstes zuzulassen: Cloud Load Balancing und alle konfigurierten Domainzuordnungen.

So deaktivieren Sie die Standard-URL mithilfe der Google Cloud Console, der Google Cloud CLI, YAML oder Terraform:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Dienste für Cloud Run auf:

    Zu Cloud Run

  2. Klicken Sie auf einen vorhandenen Dienst.

  3. Wählen Sie den Tab Netzwerk aus.

  4. Entfernen Sie auf der Karte Endpunkte das Häkchen bei Aktivieren unter Standard-HTTPS-Endpunkt-URL.

  5. Klicken Sie auf Unterschied ansehen und erneut bereitstellen und dann auf Änderungen bereitstellen.

Wenn Sie die Standard-URL wiederherstellen möchten, wählen Sie Aktivieren aus.

gcloud

  • Führen Sie für einen vorhandenen Dienst den Befehl gcloud run services update mit dem Flag --no-default-url aus, z. B.:

    gcloud run services update SERVICE_NAME --no-default-url
  • Führen Sie für einen neuen Dienst den Befehl gcloud run deploy mit dem Flag --no-default-url aus, z. B.:

    gcloud run deploy SERVICE_NAME --no-default-url

    Ersetzen Sie SERVICE_NAME durch den Namen 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 URL run.app zu deaktivieren:

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

    Ersetzen Sie Folgendes:

    • SERVICE: Der Name Ihres Cloud Run-Dienstes.
    • REVISION: ein neuer Überarbeitungsname 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

    Der Befehl gcloud run services replace verwendet standardmäßig die Datei service.yaml, sofern sie vorhanden ist.

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

Terraform

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

Fügen Sie einer google_cloud_run_v2_service-Ressource in Ihrer Terraform-Konfiguration Folgendes hinzu:
  resource "google_cloud_run_v2_service" "disable_default_url_service" {
    name     = "cloudrun-service"
    location = "europe-west1"
    default_uri_disabled = true

    template {
      containers {
        image = "us-docker.pkg.dev/cloudrun/container/hello"
      }
      annotations = {
        "run.googleapis.com/ingress" = "all"   # "all" or "internal-only"
      }

    }
  }

Prüfen Sie, ob die Zeilen launch_stage und default_uri_disabled in Ihrer main.tf-Datei enthalten sind. Die oben genannte google_cloud_run_v2_service-Ressource gibt einen Cloud Run-Dienst an, bei dem die Standard-URL in der Vorschau deaktiviert ist.

Wenn Sie die Standard-URL wiederherstellen möchten, entfernen Sie die Argumente default_uri_disabled und launch_stage.

Standard-URL für Cloud Run-Instanzen deaktivieren

Deaktivieren Sie die standardmäßige run.app-URL einer Cloud Run-Instanz, um nur Traffic von den anderen Ingress-Pfaden der Instanz zuzulassen: Cloud Load Balancing und alle konfigurierten Domainzuordnungen.

gcloud

  • Führen Sie für eine vorhandene Instanz den Befehl gcloud beta run instances update mit dem Flag --no-default-url aus, z. B.:

    gcloud beta run instances update INSTANCE --no-default-url
  • Führen Sie für eine neue Instanz den Befehl gcloud beta run instances deploy mit dem Flag --no-default-url aus, z. B.:

    gcloud beta run instances deploy INSTANCE \
        --image IMAGE_URL \
        --no-default-url

    Ersetzen Sie INSTANCE durch den Namen Ihrer Cloud Run-Instanz.

    In der Ausgabe wird die URL als None angezeigt.

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

YAML

  1. Wenn Sie eine neue Instanz erstellen, überspringen Sie diesen Schritt. Wenn Sie eine vorhandene Instanz aktualisieren, laden Sie die zugehörige YAML-Konfiguration herunter:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Wenn Sie die Standard-URL deaktivieren möchten, legen Sie die Annotation run.googleapis.com/default-url-disabled auf 'true' fest:

    apiVersion: run.googleapis.com/v1
    kind: Instance
    metadata:
      name: INSTANCE
      annotations:
        run.googleapis.com/default-url-disabled: 'true'
        run.googleapis.com/launch-stage: BETA
    spec:
      containers:
      - name: CONTAINER_NAME
        image: IMAGE_URL

    Ersetzen Sie Folgendes:

    • INSTANCE: der Name Ihrer Cloud Run-Instanz.
    • CONTAINER_NAME: Der Name des Containers.
    • IMAGE_URL: Ein Verweis auf das Container-Image, z. B. us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Erstellen oder aktualisieren Sie die Instanz mit dem folgenden Befehl:

    gcloud beta run instances replace instance.yaml

Wenn Sie die Standard-URL wiederherstellen möchten, legen Sie die Annotation run.googleapis.com/default-url-disabled auf false fest oder entfernen Sie sie.

Nächste Schritte