Limitare il traffico in entrata dell'endpoint di rete per i servizi e le istanze Cloud Run

Questa pagina descrive come utilizzare le impostazioni in entrata per limitare l'accesso di rete ai tuoi servizi e alle tue istanzeCloud Run.

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

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

Tutti i percorsi di traffico in entrata della rete sono soggetti all'impostazione del traffico in entrata della risorsa. I percorsi e l'impostazione di traffico in entrata predefiniti consentono a qualsiasi risorsa su internet di raggiungere la tua risorsa Cloud Run. Puoi utilizzare un vincolo personalizzato per limitare le impostazioni del 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 del servizio o dell'istanzione da uno dei percorsi di traffico in entrata della rete precedenti. Per un approccio a più livelli alla gestione dell'accesso, utilizza sia le impostazioni di traffico in entrata della 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 della rete disponibili

Sono disponibili le seguenti impostazioni:

Impostazione Descrizione
Interno Livello massimo di restrizioni. Consente le richieste provenienti 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 tuo servizio o la tua istanzaCloud Run. Cloud Run deve essere configurato come servizio limitato.
  • Reti VPC che si trovano nello stesso progetto del tuo servizio o della tua istanzaCloud Run.
  • Traffico in entrata VPC condiviso: la rete VPC condivisa a cui la revisione del servizio o l'istanza Cloud Run è configurata per inviare traffico. Per informazioni su quando il traffico VPC condiviso viene riconosciuto come "interno", consulta Considerazioni speciali per il VPC condiviso.
  • I seguenti prodotti Google Cloud , se si trovano nello stesso progetto o perimetro dei Controlli di servizio VPC del tuo servizio o istanzaCloud Run e se utilizzano l'URLrun.apppredefinito e non un URL personalizzato o un dominio personalizzato:
Le richieste provenienti da queste origini rimangono all'interno della rete Google, anche se accedono al tuo servizio o alla tua istanza all'URL run.app. Le richieste provenienti da altre origini, tra cui internet, non possono raggiungere il tuo servizio o la tua istanza all'URL run.app, all'URL personalizzato o al dominio personalizzato.

Bilanciatori del carico interni e Cloud Load Balancer Questa impostazione consente le richieste provenienti dalle seguenti risorse:
  • Risorse consentite dall'impostazione "Interne" 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.
  • Assicurati 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 attivare questa impostazione in gcloud CLI, utilizza internal-and-cloud-load-balancing. Per attivare questa impostazione nella console Google Cloud , seleziona Interno > Consenti il traffico da bilanciatori del carico delle applicazioni esterni.
Tutti Livello minimo di restrizioni. Consente tutte le richieste, incluse quelle provenienti direttamente da internet all'URL run.app.

Accedi ai servizi interni

Si applicano le seguenti considerazioni aggiuntive:

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

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

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

  • Le richieste provenienti da risorse all'interno di 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".

Imposta traffico in entrata

Le sezioni seguenti mostrano come impostare il traffico in entrata per i servizi e le istanzeCloud Run.

Imposta il traffico in entrata per i servizi Cloud Run

Puoi impostare il traffico in entrata per un servizio Cloud Run utilizzando la consoleGoogle Cloud , Google Cloud CLI, YAML o Terraform.

Console

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

    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, quindi sulla scheda Networking.

  4. Seleziona il traffico in entrata che vuoi consentire.

  5. Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.

gcloud

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

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

    Sostituisci quanto segue:

    • 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 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.
    • INGRESS: una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Se stai modificando un traffico in entrata del 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:
      name: SERVICE
      annotations:
        run.googleapis.com/ingress: INGRESS
    spec:
      template:
        metadata:
          name: REVISION

    Sostituisci quanto segue:

    • SERVICE: il nome del tuo servizio Cloud Run.
    • INGRESS: una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION: un nuovo nome della revisione o eliminalo (se presente). Se fornisci un nuovo nome per la revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • 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 risorsa google_cloud_run_v2_service 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
    }
  }
}

Imposta il traffico in entrata per le istanze Cloud Run

Puoi impostare il traffico in entrata per un'istanza Cloud Run utilizzando Google Cloud CLI o YAML:

gcloud

  1. Se stai creando una nuova istanza, eseguine il deployment con il flag --ingress:

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

    Sostituisci quanto segue:

    • INSTANCE: il nome dell'istanza.
    • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
    • INGRESS: una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
  2. Se stai modificando il traffico in entrata di un'istanza esistente:

    gcloud beta run instances update INSTANCE \
        --ingress INGRESS

    Sostituisci quanto segue:

YAML

  1. Se stai creando una nuova istanza, salta questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Aggiorna l'annotazione 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

    Sostituisci quanto segue:

    • INSTANCE: il nome dell'istanza Cloud Run.
    • INGRESS: una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • CONTAINER_NAME: il nome del container.
    • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Crea o aggiorna l'istanza utilizzando il seguente comando:

    gcloud beta run instances replace instance.yaml

Disattiva l'URL predefinito

Prima di disabilitare l'URL predefinito, tieni presente che i seguenti Google Cloud servizi o istanze utilizzano l'URL run.app predefinito per richiamare Cloud Run. La disattivazione dell'URL run.app predefinito impedisce il corretto funzionamento di questi servizi o di questa istanza :

Per utilizzare le mappature dei domini personalizzati, mappa il dominio personalizzato prima di disattivare l'URL run.app.

Consulta le sezioni seguenti per scoprire come disattivare l'URL predefinito per i servizi e le istanzeCloud Run.

Disattiva l'URL predefinito per i servizi Cloud Run

Disattiva l'URL run.app predefinito di un servizio o di un'istanza Cloud Run per consentire solo il traffico proveniente dagli altri percorsi di traffico in entrata del servizio: Cloud Load Balancing e qualsiasi mappatura di dominio configurata.

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

Console

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

    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 Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche.

Per ripristinare l'URL predefinito, seleziona Attiva.

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

    Sostituisci SERVICE_NAME con il nome del tuo 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'annotazione run.googleapis.com/default-url-disabled:

    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: il nome del tuo servizio Cloud Run.
    • REVISION: un nuovo nome della revisione o eliminalo (se presente). Se fornisci un nuovo nome per la revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Contiene solo lettere minuscole, numeri e -
      • Non termina con -
      • Non supera i 63 caratteri
  3. Crea o aggiorna il servizio utilizzando il seguente comando:

    gcloud run services replace service.yaml

    Il comando gcloud run services replace utilizza per impostazione predefinita il file service.yaml, se presente.

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 risorsa google_cloud_run_v2_service 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 presenti nel file main.tf. La risorsa google_cloud_run_v2_service precedente specifica un servizio Cloud Run con l'URL predefinito disabilitato in Preview.

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

Disattiva l'URL predefinito per le istanze Cloud Run

Disattiva l'URL run.app predefinito di un'istanza Cloud Run per consentire solo il traffico proveniente dagli altri percorsi di traffico in entrata dell'istanza: Cloud Load Balancing e qualsiasi mappatura di dominio configurata.

gcloud

  • Per un'istanza esistente, esegui il comando gcloud beta run instances update con il flag --no-default-url, ad esempio:

    gcloud beta run instances update INSTANCE --no-default-url
  • Per una nuova istanza, esegui il comando gcloud beta run instances deploy con il flag --no-default-url, ad esempio:

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

    Sostituisci INSTANCE con il nome dell'istanza 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 una nuova istanza, salta questo passaggio. Se stai aggiornando un'istanza esistente, scarica la relativa configurazione YAML:

    gcloud beta run instances describe INSTANCE --format export > instance.yaml
  2. Per disattivare l'URL predefinito, imposta l'annotazione run.googleapis.com/default-url-disabled su 'true':

    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

    Sostituisci quanto segue:

    • INSTANCE: il nome dell'istanza Cloud Run.
    • CONTAINER_NAME: il nome del container.
    • IMAGE_URL: un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest.
  3. Crea o aggiorna l'istanza utilizzando il seguente comando:

    gcloud beta run instances replace instance.yaml

Per ripristinare l'URL predefinito, imposta l'annotazione run.googleapis.com/default-url-disabled su false o rimuovila.

Passaggi successivi