Limita il traffico in entrata dell'endpoint di rete per i servizi Cloud Run

Questa pagina descrive come utilizzare le impostazioni di traffico in entrata per limitare l'accesso di rete al servizio Cloud Run.

A livello di rete, l'endpoint di un servizio Cloud Run è raggiungibile dai seguenti percorsi di traffico in entrata di rete:

  • URL run.app predefiniti, che puoi disattivare
  • Qualsiasi mappatura dominio configurata
  • Qualsiasi bilanciatore del carico delle applicazioni esterno o bilanciatore del carico delle applicazioni interno configurato

Tutti i percorsi di traffico in entrata di rete sono soggetti all'impostazione di traffico in entrata del servizio . I percorsi di traffico in entrata e l'impostazione di traffico in entrata predefiniti consentono a qualsiasi risorsa su internet di raggiungere il servizio Cloud Run. Puoi utilizzare un vincolo personalizzato per limitare le impostazioni di traffico in entrata per la tua organizzazione o per un insieme di progetti. L'autenticazione IAM si applica comunque alle richieste che raggiungono gli endpoint di servizio da uno qualsiasi dei percorsi di traffico in entrata di rete precedenti. Per un approccio a più livelli alla gestione dell'accesso, utilizza sia le impostazioni di traffico in entrata di rete sia l'autenticazione IAM.

Utilizza i tag di rete per limitare l'accesso alle VM del connettore alle risorse VPC.

Impostazioni di traffico in entrata di rete disponibili

Sono disponibili le seguenti impostazioni:

Impostazione Descrizione
Interno Più restrittiva. Consente le richieste dalle seguenti origini:
  • Bilanciatore del carico delle applicazioni interno, incluse le richieste provenienti da reti VPC condiviso quando vengono instradate tramite il bilanciatore del carico delle applicazioni interno.
  • Risorse consentite da qualsiasi perimetro dei Controlli di servizio VPC che contiene il servizio Cloud Run service. Cloud Run deve essere configurato come servizio con limitazioni.
  • Reti VPC nello stesso progetto del servizio Cloud Run.
  • Traffico in entrata VPC condiviso: la rete VPC condivisa a cui la revisione è configurata per inviare il traffico. Per informazioni su quando il traffico VPC condiviso viene riconosciuto come "interno", consulta Considerazioni speciali per il VPC condiviso.
  • I seguenti Google Cloud prodotti, se si trovano nello stesso progetto o perimetro dei Controlli di servizio VPC del servizio Cloud Run e se utilizzano l'URL run.app predefinito e non un dominio personalizzato:
Le richieste provenienti da queste origini rimangono all'interno della rete Google, anche se accedono al servizio all'run.app URL. Le richieste provenienti da altre origini, inclusa internet, non possono raggiungere il servizio all' URL run.app o ai domini personalizzati.

Interno e Cloud Load Balancing Questa impostazione consente le richieste dalle seguenti risorse:
  • Risorse consentite dall'impostazione "interna" più restrittiva
  • Bilanciatore del carico delle applicazioni esterno
Utilizza questa impostazione per:
  • Accettare le richieste da internet tramite il bilanciatore del carico delle applicazioni esterno. Le richieste dirette all'URL run.app da internet non sono consentite.
  • Assicurarti che le richieste provenienti da internet siano soggette alle funzionalità del bilanciatore del carico delle applicazioni esterno, come Identity-Aware Proxy, Google Cloud Armor e Cloud CDN.

Nota: per abilitare questa impostazione in gcloud CLI, utilizza internal-and-cloud-load-balancing. Per abilitare questa impostazione nella Google Cloud console, seleziona Interno > Consenti il traffico da bilanciatori del carico delle applicazioni esterni.
Tutti Meno restrittiva. Consente tutte le richieste, incluse quelle provenienti direttamente da internet all'run.app URL.

Accedere ai servizi interni

Si applicano le seguenti considerazioni aggiuntive:

  • Quando accedi ai servizi interni, chiamali come faresti normalmente utilizzando il loro URL, l'URL run.app predefinito o un dominio personalizzato configurato in Cloud Run.

  • Per le richieste provenienti da istanze VM di Compute Engine, non è necessaria alcuna configurazione aggiuntiva per le macchine che hanno indirizzi IP esterni o che utilizzano Cloud NAT. In caso contrario, consulta Ricevere richieste da reti VPC.

  • Quando chiami da Cloud Run o App Engine a un servizio Cloud Run impostato su "Interno" o "Interno e Cloud Load Balancing", il traffico deve essere instradato tramite una rete VPC considerata interna. Consulta Ricevere richieste da altri servizi Cloud Run o App Engine.

  • Le richieste provenienti da risorse all'interno delle reti VPC nello stesso progetto sono "interne" anche se la risorsa da cui provengono ha un indirizzo IP esterno.

  • Le richieste provenienti da risorse on-premise connesse alla rete VPC tramite Cloud VPN e Cloud Interconnect sono "interne".

Impostare il traffico in entrata per i servizi Cloud Run

Puoi impostare il traffico in entrata utilizzando la Google Cloud console, Google Cloud CLI, YAML o Terraform.

Console

  1. Nella Google Cloud console, vai alla pagina Cloud Run Servizi:

    Vai a Cloud Run

  2. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del container per visualizzare il modulo Crea servizio. Compila la pagina delle impostazioni iniziali del servizio.

  3. Se stai configurando un servizio esistente, fai clic sul servizio e poi sulla scheda Networking.

  4. Seleziona il traffico in entrata che vuoi consentire:

    immagine

  5. Fai clic su Crea o Salva.

gcloud

  1. Se stai eseguendo il deployment di un nuovo servizio, esegui il deployment del servizio con il flag --ingress:

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

    Sostituisci quanto segue:

    • INGRESS: una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE: il nome del servizio
    • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato di LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  2. Se stai modificando il traffico in entrata di un servizio esistente:

    gcloud run services update SERVICE --ingress INGRESS

    Sostituisci quanto segue:

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Aggiorna l'annotazione 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

    Sostituisci quanto segue:

    • SERVICE: il nome di Cloud Run
    • INGRESS: una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome di revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con un -
      • Non supera i 63 caratteri
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud run services replace service.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una google_cloud_run_v2_service risorsa nella configurazione Terraform:

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

Disattivare l'URL predefinito

Disattiva gli URL run.app predefiniti di un servizio Cloud Run per consentire il traffico solo dagli altri percorsi di traffico in entrata del servizio: Cloud Load Balancing e qualsiasi mappatura dominio configurata.

Per disattivare l'URL predefinito, segui questi passaggi utilizzando la Google Cloud console, Google Cloud CLI, YAML o Terraform.

Console

  1. Nella Google Cloud console, vai alla pagina Cloud Run Servizi:

    Vai a Cloud Run

  2. Fai clic su un servizio esistente.

  3. Seleziona la scheda Networking.

  4. Nella scheda Endpoint, deseleziona Abilita in URL dell'endpoint HTTPS predefinito.

  5. Fai clic su Salva.

Per ripristinare l'URL predefinito, seleziona Abilita e fai clic su Salva.

gcloud

  • Per un servizio esistente, esegui il comando gcloud run services update con il flag --no-default-url, ad esempio:

    gcloud run services update SERVICE_NAME --no-default-url
  • Per un nuovo servizio, esegui il comando gcloud run deploy con il flag --no-default-url, ad esempio:

    gcloud run deploy SERVICE_NAME --no-default-url

    dove SERVICE_NAME è il nome del servizio Cloud Run.

    Nell'output, l'URL viene visualizzato come None.

Per ripristinare l'URL predefinito, utilizza il flag --default-url.

YAML

  1. Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Per disattivare l'URL run.app, utilizza l'run.googleapis.com/default-url-disabled annotazione:

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

    Sostituisci quanto segue:

    • SERVICE con il nome del servizio Cloud Run.
    • REVISION con un nuovo nome di revisione o eliminalo (se presente). Se fornisci un nuovo nome di revisione, deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con un -
      • Non supera i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

Per ripristinare l'URL predefinito, rimuovi l'annotazione run.googleapis.com/default-url-disabled.

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Aggiungi quanto segue a una google_cloud_run_v2_service risorsa nella configurazione Terraform:
  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"
      }

    }
  }

Verifica che le righe launch_stage e default_uri_disabled siano nel file main.tf. La risorsa google_cloud_run_v2_service precedente specifica un servizio Cloud Run con l'URL predefinito disattivato in anteprima.

Per ripristinare l'URL predefinito, rimuovi gli argomenti default_uri_disabled e launch_stage.

I seguenti Google Cloud servizi utilizzano l'URL run.app predefinito per richiamare Cloud Run. La disattivazione dell'URL run.app predefinito impedisce il funzionamento previsto di questi servizi:

Passaggi successivi