Informazioni sul firewall di App Engine

Un firewall determina quale traffico di rete è consentito passare e quale traffico viene rifiutato. I firewall possono essere applicati al traffico in entrata, a quello in uscita o a entrambi. Per App Engine, il firewall di App Engine si applica solo al traffico in entrata indirizzato alla tua applicazione o al tuo servizio.

Panoramica

Il firewall di App Engine viene controllato per tutti i tipi di richieste alla tua app, tra cui:

  • Traffico web regolare indirizzato all'indirizzo appspot.com dell'app o al dominio personalizzato.
  • Richieste provenienti da Cloud Load Balancing.
  • Traffico da origini interne come macchine virtuali (VM) Compute Engine e Cloud Tasks.

Nei casi in cui la tua app è configurata per utilizzare altri servizi o prodotti di networking, potresti dover creare regole per il controllo del traffico in entrata sia nel firewall di App Engine sia nelle impostazioni di firewall o di sicurezza di altri prodotti. Questa guida illustra il comportamento generale del firewall di App Engine e i dettagli relativi a questi casi d'uso speciali.

Regole firewall di App Engine

Puoi configurare le regole firewall di App Engine utilizzando Google Cloud Console, l'interfaccia a riga di comando di Google Cloud o l'API Admin, specificando regole che consentono o bloccano gli intervalli IP specificati.

Per impostazione predefinita, tutte le richieste che non corrispondono a una regola sono autorizzate ad accedere alla tua app. Se devi bloccare tutte le richieste che non soddisfano una regola specifica (escluse le richieste dei servizi interni consentite per impostazione predefinita), imposta l'azione default della regola su deny.

In certe circostanze, è possibile che l'ambiente flessibile di App Engine configuri automaticamente le regole firewall a livello del Virtual Private Cloud (VPC), ma tieni presente che il firewall VPC non interagisce con il firewall di App Engine.

Consentire le richieste in arrivo dai tuoi servizi

La tabella seguente elenca gli intervalli IP e il comportamento del firewall di App Engine per i servizi comuni. L'intervallo IP utilizzato dipende dal fatto che le richieste in entrata vengano recapitate a una versione eseguita nell'ambiente standard o nell'ambiente flessibile di App Engine.

Servizio Intervallo IP per le richieste inviate all'ambiente standard di App Engine Intervallo IP per le richieste inviate all'ambiente flessibile di App Engine
Cloud Storage o Blobstore 0.1.0.30/32 Non applicabile
Job Cloud Scheduler con attività App Engine HTTP e App Engine in Cloud Tasks (incluse le code di attività di App Engine) 0.1.0.2/32 ignora la regola firewall predefinita se impostata su deny 0.1.0.2/32
Cron di App Engine 0.1.0.1/32 o 0.1.0.2/32 ignora la regola firewall predefinita se impostata su deny 0.1.0.1/32 o 0.1.0.2/32
Recupero URL 0.1.0.40/32 0.1.0.40/32
Istanze di Compute Engine con accesso privato Google abilitato 0.0.0.0/32 0.0.0.0/32

A seconda del caso d'uso, queste istruzioni aggiuntive potrebbero essere applicate durante la configurazione delle regole firewall di App Engine:

  • Le richieste dai cron di App Engine creati o aggiornati, inviate all'ambiente standard o flessibile di App Engine, provengono da 0.1.0.2. Per i cron job creati con versioni gcloud precedenti (precedenti a 326.0.0), le richieste cron provengono da 0.1.0.1. Per ulteriori informazioni su come identificare le richieste dal servizio Cron di App Engine, vedi Convalida di richieste cron.
  • Se la tua app interagisce con Cloud Load Balancing o è connessa a una rete VPC, consulta la sezione Interazione con altri prodotti o servizi di seguito.

Esempio standard di App Engine

L'app eseguita nell'ambiente standard ha due servizi: frontend_service e backend_service. frontend_service utilizza Cloud Tasks con il protocollo HTTP App Engine per inviare messaggi a backend_service. Poiché la regola firewall default consente le richieste Cloud Tasks anche se configurata su deny, non è necessario creare una regola firewall per Cloud Tasks.

Tuttavia, se vuoi limitare l'accesso all'app e bloccare esplicitamente le richieste Cloud Tasks, devi creare una regola firewall deny per l'intervallo IP 0.1.0.2/32.

Esempio flessibile di App Engine

La tua app in esecuzione nell'ambiente flessibile ha due servizi: frontend_service e backend_service e ha un firewall configurato per rifiutare il traffico per impostazione predefinita. frontend_service utilizza Cloud Tasks con il protocollo HTTP App Engine per inviare messaggi a backend_service. Poiché la regola firewall default rifiuta le richieste Cloud Tasks, devi creare una regola firewall allow per 0.1.0.2/32.

Interazione con altri prodotti o servizi

Cloud Load Balancing

Se utilizzi Cloud Load Balancing e i NEG serverless, tieni presente quanto segue:

  • Il bilanciatore del carico non interferisce o interagisce con le regole firewall di App Engine. Le regole firewall di App Engine vengono valutate solo quando un NEG serverless indirizza il traffico ad App Engine.
  • Ti consigliamo di utilizzare i controlli in entrata in modo che la tua applicazione riceva solo le richieste inviate dal bilanciatore del carico (e dal VPC se lo utilizzi). In caso contrario, gli utenti possono utilizzare l'URL di App Engine dell'app per aggirare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private trasmesse attraverso il bilanciatore del carico.

  • Se i controlli in entrata sono impostati per ricevere traffico internal-and-cloud-load-balancing, lascia la regola firewall predefinita di App Engine così com'è (allow) e utilizza le regole delle applicazioni web firewall (WAF) di Google Cloud Armor.

Firewall VPC

I firewall di App Engine vengono configurati e applicati in modo indipendente rispetto ai firewall basati su VPC. Le regole del firewall VPC si applicano alle risorse in esecuzione nella rete VPC, come le macchine virtuali Compute Engine, mentre le regole firewall di App Engine si applicano alle richieste in arrivo all'app o al servizio.

Se nell'ambiente di rete sono configurate regole firewall basate su VPC (ad esempio regole firewall VPC o criteri firewall gerarchici), sia i firewall firewall a livello di VPC che i firewall di App Engine devono consentire a un'app IP di richiesta in entrata per ricevere l'app App Engine.

Per i firewall a livello di VPC, i criteri firewall gerarchici vengono valutati prima delle regole firewall VPC e seguono una sequenza durante la valutazione del firewall VPC. Le richieste consentite sia dal firewall a livello di VPC sia dal firewall di App Engine vengono ricevute dall'app o dal servizio App Engine. Se il firewall VPC nega le richieste dallo stesso intervallo IP consentito dal firewall di App Engine, l'accesso all'app App Engine non è consentito.

VPC condiviso

L'ambiente flessibile di App Engine può creare firewall a seconda che la tua app sia configurata per utilizzare una rete VPC mediante VPC condiviso.

Se la tua app flessibile di App Engine utilizza VPC condiviso, l'ambiente flessibile di App Engine non crea automaticamente regole del firewall. Se devi controllare l'accesso e consentire il traffico sulla rete VPC, puoi creare regole del firewall sulla rete VPC condivisa.

Inoltre, per consentire le richieste da una sorgente di traffico, devi consentire lo stesso intervallo IP nel firewall VPC e nel firewall di App Engine. Se non specifichi l'intervallo IP in entrambe le posizioni (firewall VPC e firewall di App Engine), l'intervallo IP non potrà accedere all'app o al servizio App Engine.

Se l'app dell'ambiente flessibile di App Engine non è configurata per utilizzare la rete VPC condivisa, l'ambiente flessibile di App Engine crea fino a due regole firewall VPC nascoste, a seconda che l'app utilizzi controlli di integrità suddivisi (controllo di integrità) o legacy. Queste regole firewall nascoste consentono di gestire il traffico e il controllo di integrità nell'ambiente flessibile:

  • Nome rete: la rete specificata in app.yaml o la rete predefinita, se non è configurata alcuna rete.
  • Tag di destinazione: l'elemento instance_tags specificato nel file app.yaml. Per impostazione predefinita, se non vengono forniti tag di destinazione, l'ambiente flessibile di App Engine genera un tag univoco che interessa solo le istanze nella versione flessibile specifica e la regola firewall sceglie come target questo tag.
  • Direzione del traffico: Ingress
  • Azione in caso di corrispondenza: consenti
  • Intervalli IP di origine: 35.191.0.0/16 e 130.211.0.0/22
  • Protocolli e porte:
    • tcp: 8443 (per i controlli di integrità legacy) o 10402 (per i controlli di integrità suddivisi)
  • Priorità: 1000

Impedire l'accesso ai contenuti memorizzati nella cache

Il firewall di App Engine si trova all'interno di meccanismi che memorizzano nella cache i contenuti, ad esempio browser web e browser. Quando i contenuti vengono memorizzati nella cache, vengono pubblicati pubblicamente dall'URL specifico fino alla scadenza e sono accessibili anche dopo la creazione di nuove regole del firewall.

Per evitare che i contenuti vengano memorizzati nella cache, utilizza le intestazioni della risposta HTTP Cache-Control e Expires. Per ulteriori informazioni su queste intestazioni HTTP, incluse le istruzioni su come controllare la memorizzazione nella cache, consulta Evitare la memorizzazione nella cache.

Passaggi successivi

Segui le istruzioni in Creazione dei firewall per scoprire come configurare le regole firewall di App Engine.