Informazioni sul firewall di App Engine

Un firewall determina quale traffico di rete può essere trasmesso e quale traffico viene rifiutato. I firewall possono essere applicati al traffico in entrata, in entrata o in uscita. Per App Engine, il firewall di App Engine si applica solo al traffico in entrata indirizzato alla tua applicazione o servizio.

Panoramica

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

Se la tua applicazione è configurata per utilizzare altri servizi o servizi di networking, potrebbe essere necessario creare regole per il controllo del traffico in entrata sia nel firewall di App Engine sia nel firewall o nelle impostazioni di sicurezza di altri prodotti. Questa guida illustra il comportamento generale del firewall App Engine e i dettagli sui 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 le regole che consentono o bloccano gli intervalli IP specificati.

Per impostazione predefinita, qualsiasi richiesta che non corrisponde a una regola può 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), modifica l'azione della default regola in deny.

Funzione firewall

Nell'ambiente standard di App Engine, il firewall di App Engine può consentire ad alcuni tipi di traffico interno di aggirare il firewall. Ciò significa che se imposti la regola default su deny, le richieste provenienti 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 stessa o inviati dalla stessa app. Le richieste che ignorano le regole firewall in questo modo includono:

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 ignorano il firewall.

Autorizzazione delle richieste in arrivo dai servizi

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

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 che utilizzano attività HTTP e App Engine di App Engine in Cloud Tasks (incluse le code di attività App Engine) 0.1.0.2/32, ignora la regola firewall predefinita se impostata su denied 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 denied 0.1.0.1/32 o 0.1.0.2/32
Recupero URL 0.1.0.40/32 0.1.0.40/32
Istanze Compute Engine con accesso privato Google abilitato 0.0.0.0/32 0.0.0.0/32

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

  • Le richieste provenienti dai cron job di App Engine appena creati o aggiornati inviati all'ambiente flessibile o standard di App Engine provengono da 0.1.0.2. Per i cron job creati con versioni gcloud precedenti (precedente alla 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 Convalidare le richieste di 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 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 per il firewall default consente le richieste Cloud Tasks anche se è configurata in 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 flessibile di App Engine

L'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 HTTP App Engine per inviare messaggi a backend_service. Poiché la default regola del firewall rifiuta le richieste Cloud Tasks, devi creare una regola firewall allowper 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 con le regole firewall di App Engine e non vi interagisce. Le regole firewall di App Engine non vengono valutate fino a quando un NEG serverless non indirizza il traffico ad App Engine.
  • Ti consigliamo di utilizzare i controlli in entrata in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico (e il VPC, se lo utilizzi). In caso contrario, gli utenti possono utilizzare l'URL App Engine della tua app per ignorare il bilanciatore del carico, criteri di sicurezza Google Cloud Armor, certificati SSL e chiavi private trasmesse attraverso il bilanciatore del carico.

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

Impedire l'accesso ai contenuti memorizzati nella cache

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

Per informazioni su come cambiare la scadenza predefinita dei contenuti statici o impedire la memorizzazione dei contenuti statici nella cache, consulta la pagina Scadenza della cache.

Per impedire la memorizzazione nella cache del codice dei contenuti dinamici dal codice dell'app, utilizza le intestazioni delle risposte HTTP Cache-Control e Expires. Per ulteriori informazioni su queste intestazioni HTTP, incluso come controllare la memorizzazione nella cache, consulta la sezione Evitare la memorizzazione nella cache.

Passaggi successivi

Segui le istruzioni sulla creazione dei firewall per scoprire come configurare le regole firewall di App Engine.