Un firewall determina quale traffico di rete può essere trasmesso e quale viene rifiutato. I firewall possono essere applicati al traffico in entrata (ingress), al traffico in uscita (egress) o a entrambi. Per App Engine, il firewall di App Engine si applica solo al traffico in entrata indirizzato alla tua app 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
o al dominio personalizzato dell'app. - Richieste che arrivano da Cloud Load Balancing.
- Traffico da origini interne come le macchine virtuali (VM) Compute Engine e Cloud Tasks.
Se la tua app è configurata per utilizzare altri servizi o prodotti di rete, potresti dover creare regole per controllare il traffico in entrata sia nel firewall di App Engine sia nelle impostazioni di sicurezza o del firewall di altri prodotti. Questa guida illustra il comportamento generale del firewall di App Engine e i dettagli di questi casi d'uso speciali.
Regole firewall di App Engine
Puoi configurare le regole del firewall di App Engine utilizzando la console Google Cloud, Google Cloud CLI o l'API Admin specificando regole che consentono o bloccano intervalli IP specifici.
Per impostazione predefinita, a qualsiasi richiesta che non corrisponde a una regola è consentito l'accesso alla tua app. Se devi bloccare tutte le richieste che non corrispondono a una regola specifica (escluse le richieste provenienti da servizi interni consentiti per impostazione predefinita), imposta l'azione della regola default
su deny
.
Funzionalità del firewall
Nell'ambiente standard di App Engine, il firewall di App Engine può consentire a determinate tipologie di traffico interno di bypassare il firewall. Ciò significa che se imposti la regola default
su
deny
, le richieste di determinati servizi destinate all'ambiente standard di App Engine non vengono bloccate. Si tratta di tutti i tipi di traffico richiesti nella configurazione dell'app o inviati dalla stessa app. Le richieste che aggirano le regole del firewall in questo modo includono:
- Richieste di warmup
- Job Cloud Scheduler che utilizzano HTTP di App Engine (incluso App Engine Cron)
- Attività App Engine in Cloud Tasks (incluse le code di attività App Engine)
Per le app che utilizzano l'ambiente standard di App Engine e i servizi in bundle con i runtime di prima generazione, anche le notifiche dell'API Mail precedente aggirano il firewall.
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 che utilizzi dipende dal fatto che le richieste in entrata vengano inviate a una versione che funziona 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 |
---|---|---|
Cron di App Engine | 0.1.0.1/32 o 0.1.0.2/32, aggira la regola firewall predefinita se impostata su Rifiuta | 0.1.0.1/32 o 0.1.0.2/32 |
Istanze Compute Engine con indirizzi IP esterni | Indirizzo IP esterno dell'istanza | Indirizzo IP esterno dell'istanza |
Istanze Compute Engine senza un indirizzo IP esterno | 0.0.0.0/32 | 0.0.0.0/32 |
Istanze Compute Engine senza un indirizzo IP esterno che utilizzano Cloud NAT per le connessioni in uscita | 0.0.0.0/32 | 0.0.0.0/32 |
Job Cloud Scheduler che utilizzano attività HTTP e App Engine in Cloud Tasks (incluse le code di attività App Engine) | 0.1.0.2/32, aggira la regola firewall predefinita se impostata su Rifiuta | 0.1.0.2/32 |
Cloud Storage o Blobstore | 0.1.0.30/32 | Non applicabile |
Recupero URL | 0.1.0.40/32 | 0.1.0.40/32 |
Richieste di riscaldamento | 0.1.0.3/32, aggira la regola firewall predefinita se impostata su Rifiuta | Non applicabile |
A seconda del caso d'uso, potrebbero essere applicate queste istruzioni aggiuntive durante la configurazione delle regole firewall di App Engine:
- Le richieste dei cron job di App Engine appena creati o aggiornati inviati all'ambiente standard o flessibile di App Engine provengono da
0.1.0.2
. Per i cron job creati con versioni precedenti di gcloud (precedenti alla 326.0.0), le richieste di Cron provengono da0.1.0.1
. Per scoprire di più su come identificare le richieste dal servizio Cron di App Engine, consulta Convalida delle 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 di ambiente standard di App Engine
La tua app in esecuzione nell'ambiente standard ha due servizi: frontend_service
e backend_service
. frontend_service
utilizza Cloud Tasks con HTTP App Engine per inviare messaggi a backend_service
. Poiché la regola firewall default
consente le richieste di Cloud Tasks anche se configurata su deny
, non è necessario creare una regola firewall per Cloud Tasks.
Tuttavia, se vuoi limitare l'accesso alla tua app e bloccare esplicitamente le richieste di Cloud Tasks, devi creare una regola firewall deny
per l'intervallo IP 0.1.0.2/32
.
Esempio di ambiente flessibile di App Engine
La tua app in esecuzione nell'ambiente flessibile ha due servizi:
frontend_service
e backend_service
e un firewall configurato per negare
il traffico per impostazione predefinita. frontend_service
utilizza Cloud Tasks con HTTP App Engine per inviare messaggi a backend_service
. Poiché la regola firewall default
nega le richieste di 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 NEG serverless, tieni presente quanto segue:
- Il bilanciatore del carico non interferisce né interagisce con le regole firewall di App Engine. Le regole firewall di App Engine non vengono valutate finché un NEG serverless non indirizza il traffico ad App Engine.
Ti consigliamo di utilizzare i controlli di immissione in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico (e dalla VPC, se la utilizzi). In caso contrario, gli utenti possono utilizzare l'URL App Engine della tua app per bypassare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private trasmessi tramite il bilanciatore del carico.
Se i controlli di ingresso sono impostati per ricevere traffico
internal-and-cloud-load-balancing
, lascia invariata la regola firewall di App Engine predefinita (allow
) e utilizza le regole WAF (Web Application Firewall) di Google Cloud Armor.
Impedire l'accesso ai contenuti memorizzati nella cache
Il firewall di App Engine si trova dietro i meccanismi che memorizzano nella cache i contenuti, ad esempio proxy web e browser. Quando i contenuti vengono memorizzati nella cache, vengono pubblicati pubblicamente dall'URL specifico fino alla scadenza e possono essere accessibili anche dopo la creazione di nuove regole firewall.
Per informazioni su come modificare la data e l'ora di scadenza predefinite per i contenuti statici o impedire la memorizzazione nella cache dei contenuti statici, consulta Scadenza della cache.Per impedire la memorizzazione nella cache dell'output dei contenuti dinamici del codice dell'app, utilizza le intestazioni di risposta HTTP Cache-Control
e Expires
. Per ulteriori informazioni su queste intestazioni HTTP, inclusa la modalità di controllo della memorizzazione nella cache, consulta Evitare la memorizzazione nella cache.
Passaggi successivi
Segui le istruzioni riportate in Creazione di firewall per scoprire come configurare le regole firewall di App Engine.