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.

Funzionalità firewall

Nell'ambiente standard di App Engine, il firewall di App Engine può consentire a determinati tipi di traffico interno di bypassare il firewall. Ciò significa che se imposti la regola default su deny, le richieste da determinati servizi destinati all'ambiente standard di App Engine non vengono bloccate. Questi sono tutti i tipi di traffico richiesti nella configurazione dell'app o inviati dalla stessa app. Le richieste che ignorano le regole firewall in questo modo includono:

Per le app che utilizzano l'ambiente standard e i servizi App Engine in bundle con i runtime di prima generazione, le notifiche dell'API Mail legacy ignorano anche 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 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.

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 informazioni su come modificare la scadenza predefinita dei contenuti statici o impedire che vengano memorizzati nella cache, consulta Scadenza della cache.

Per evitare l'output dei contenuti dinamici dal codice della cache dell'app, usa le intestazioni delle risposte HTTP Cache-Control e Expires. Per ulteriori informazioni su queste intestazioni HTTP, incluso 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.