Limitare l'ingresso di rete per Cloud Run

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

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

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

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

Impostazioni di ingresso della rete disponibili

Sono disponibili le seguenti impostazioni:

Impostazione Descrizione
Interno Più restrittivo. 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 VPC Service Controls che contiene il servizio Cloud Run. Cloud Run deve essere configurato come servizio con limitazioni.
  • Le reti VPC nello stesso progetto del servizio Cloud Run.
  • Ingresso VPC condiviso: la rete VPC condivisa a cui la revisione è 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 di 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 di Google, anche se accedono al tuo servizio all'URL run.app. Le richieste provenienti da altre origini, incluso internet, non possono raggiungere il tuo servizio all'run.app URL o ai domini personalizzati.

Bilanciamento del carico interno e su cloud Questa impostazione consente le richieste provenienti dalle seguenti risorse:
  • Risorse consentite dall'impostazione "Interna" più restrittiva
  • Application Load Balancer esterno
Utilizza questa impostazione per:
  • Accetta le richieste da internet tramite il bilanciatore del carico delle applicazioni esterno. Non sono consentite richieste dirette all'URL run.app da internet.
  • Assicurati che le richieste provenienti da internet siano soggette alle funzionalità di bilanciatori del carico delle applicazioni esterni, 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 Meno restrittiva. Consente tutte le richieste, incluse quelle direttamente da internet all'URL run.app.

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 Compute Engine, non è richiesta alcuna configurazione aggiuntiva per le macchine con indirizzi IP esterni o che utilizzano Cloud NAT. In caso contrario, consulta Ricevere richieste dalle reti VPC.

  • Quando effettui chiamate da Cloud Run, App Engine o dalle funzioni Cloud Run a un servizio Cloud Run impostato su "Interno" o "Bilanciamento del carico interno e cloud", il traffico deve essere instradato tramite una rete VPC considerata interna. Consulta Ricevere richieste da altri servizi Cloud Run, App Engine e funzioni Cloud Run.

  • 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 utilizzando Cloud VPN e Cloud Interconnect sono "interne".

Impostare l'elemento Ingress

Puoi impostare l'ingresso utilizzando uno dei metodi supportati nelle schede:

Console

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

    Vai a Cloud Run

  2. Se stai configurando un nuovo servizio, fai clic su Esegui il deployment del contenitore e seleziona Servizio per visualizzare il modulo Crea servizio. Compila la pagina iniziale delle impostazioni 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:

    immagine

  5. Fai clic su Crea o Salva.

gcloud

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

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

    Sostituisci

    • INGRESS con una delle impostazioni di importazione disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE con il nome del servizio
    • IMAGE_URL con un riferimento all'immagine del 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 ha la forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
  2. Se stai modificando l'ingresso di un servizio esistente:

    gcloud run services update SERVICE --ingress INGRESS

    Sostituisci

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

    • SERVICE con il nome del tuo servizio Cloud Run
    • INGRESS con una delle impostazioni di importazione disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION con un nuovo nome della revisione o eliminala (se presente). Se fornisci un nuovo nome di revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Deve contenere solo lettere minuscole, numeri e -
      • Non termina con -
      • Non deve superare 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 al tuo file main.tf:

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 solo il traffico dagli altri percorsi di ingresso del servizio: Cloud Load Balancing e qualsiasi mappatura di dominio configurata.

Per disattivare l'URL predefinito, segui questi passaggi:

Riga di comando

  • Per disattivare l'URL run.app per un servizio, esegui il comando gcloud beta run deploy o gcloud beta run services update con il flag --no-default-url:

    gcloud beta 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'annotazione run.googleapis.com/default-url-disabled:

    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

    Sostituisci

    • SERVICE con il nome del servizio Cloud Run.
    • REVISION con un nuovo nome della revisione o eliminala (se presente). Se fornisci un nuovo nome di revisione, questo deve soddisfare i seguenti criteri:
      • Inizia con SERVICE-
      • Deve contenere solo lettere minuscole, numeri e -
      • Non termina con -
      • Non deve superare 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.

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

Passaggi successivi