Limitazione del traffico in entrata per 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, per impostazione predefinita, qualsiasi risorsa su internet è in grado di raggiungere il tuo servizio Cloud Run tramite il suo URL run.app o su un dominio personalizzato configurato in Cloud Run. Puoi modificare questa impostazione predefinita specificando un'impostazione diversa per il traffico in entrata. Tutti i percorsi in entrata, incluso l'URL run.app predefinito, sono soggetti all'impostazione del traffico in entrata. Il traffico in entrata è impostato a livello di servizio.

Le impostazioni in entrata e i metodi di autenticazione IAM sono due modi per gestire l'accesso a un servizio. Sono indipendenti l'uno dall'altro. Per un approccio a più livelli alla gestione dell'accesso, utilizza entrambi.

Impostazioni di traffico in entrata disponibili

Sono disponibili le seguenti impostazioni:

Impostazione Descrizione
Interna Livello massimo di restrizioni. Consente le richieste dalle seguenti origini:
  • Bilanciatore del carico delle applicazioni interno, incluse le richieste da reti VPC condiviso quando instradate tramite l'Application Load Balancer interno
  • Risorse consentite da qualsiasi perimetro dei Controlli di servizio VPC contenente il tuo servizio Cloud Run. Cloud Run deve essere configurato come servizio limitato.
  • Reti VPC che si trovano nello stesso progetto del servizio Cloud Run
  • In entrata VPC condiviso: la rete VPC condivisa a cui è configurata la revisione per inviare il traffico. Per informazioni su quando il traffico del 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 servizio Cloud Run:
Le richieste provenienti da queste origini rimangono all'interno della rete Google, anche se accedono al tuo servizio all'URL run.app. Le richieste da altre origini, tra cui internet, non possono raggiungere il tuo servizio all'URL run.app o in domini personalizzati.

Le richieste a Cloud Run da Cloud Run, Cloud Functions o App Engine devono essere indirizzate alla rete VPC per essere considerate interne. Per instradare le richieste alla rete VPC, utilizza il traffico VPC diretto in uscita o un connettore di accesso VPC serverless e abilita l'accesso privato Google sulla subnet associata al traffico VPC diretto o al connettore.

Non è supportato l'architettura multi-tenancy, ovvero più domini di attendibilità all'interno dello stesso progetto.
Interno e Cloud Load Balancing Consente le richieste dalle seguenti risorse:
  • Risorse consentite dall'impostazione interna più restrittiva
  • Bilanciatore del carico delle applicazioni esterno
Utilizza l'impostazione Bilanciamento interno e Cloud Load Balancing per:
  • Accetta le richieste da internet tramite l'Application Load Balancer esterno. Non sono consentite richieste dirette all'URL run.app da internet.
  • Assicurati che le richieste da internet siano soggette alle funzionalità del bilanciatore del carico delle applicazioni esterno (come Identity-Aware Proxy, Google Cloud Armor e Cloud CDN).
Tutti Livello minimo di restrizioni. Consente tutte le richieste, incluse quelle direttamente da internet all'URL run.app.

Accesso ai servizi interni

Si applicano le seguenti considerazioni aggiuntive:

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

  • Per le richieste da istanze VM di Compute Engine, non sono necessarie ulteriori configurazioni per le macchine con indirizzi IP pubblici o che utilizzano Cloud NAT. Altrimenti, consulta Ricevere richieste dalle reti VPC.

  • Per le richieste da altri servizi Cloud Run o da Cloud Functions nello stesso progetto, connetti il servizio o la funzione a una rete VPC e instrada tutto il traffico in uscita attraverso il connettore, come descritto in VPC con connettori. Tieni presente che l'autorizzazione dell'invotore IAM è ancora applicata.

  • Le richieste da risorse all'interno di reti VPC nello stesso progetto sono classificate come "interne", anche se la risorsa da cui hanno origine ha un indirizzo IP pubblico.

  • Le richieste provenienti da risorse in un progetto separato, ma all'interno dello stesso perimetro dei Controlli di servizio VPC, possono chiamare un servizio interno solo se configuri l'API Cloud Run Admin come servizio con restrizioni nel perimetro di servizio.

  • Per informazioni su quando il traffico del VPC condiviso viene riconosciuto come "interno", consulta Considerazioni speciali per il VPC condiviso.

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

  • Per le richieste da Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, BigQuery e Workflows a un servizio interno, si applicano le seguenti considerazioni:

    • Devi utilizzare l'URL run.app predefinito di Cloud Run per quel servizio, non un dominio personalizzato.
    • Il job, l'attività, la sottoscrizione Pub/Sub, l'evento, il flusso di lavoro o la funzione remota BigQuery deve trovarsi nello stesso progetto o perimetro dei Controlli di servizio VPC del servizio Cloud Run.
  • Puoi chiamare i servizi interni da origini di traffico esterne alla rete VPC utilizzando Cloud Scheduler, Cloud Tasks, Pub/Sub, Eventarc, Workflows o BigQuery dallo stesso progetto o perimetro dei Controlli di servizio VPC.

Impostazione del traffico in entrata

Puoi impostare il traffico in entrata utilizzando uno dei metodi supportati nelle schede:

Console

  1. Vai a Cloud Run

  2. Se stai configurando un nuovo servizio, fai clic su Crea servizio e compila la pagina iniziale delle impostazioni del servizio come preferisci.

  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.

Riga di comando

  1. Se esegui 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

    • INGRESS con una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • SERVICE con il nome del tuo servizio
    • IMAGE_URL con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, è necessario già creare il repository REPO_NAME. L'URL ha la forma 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

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 Cloud Run
    • INGRESS con una delle impostazioni di traffico in entrata disponibili:
      • all
      • internal
      • internal-and-cloud-load-balancing
    • REVISION con un nuovo nome di revisione oppure eliminala (se presente). Se specifichi un nuovo nome, la revisione 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 al tuo file main.tf:

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

Passaggi successivi