Comprensione del 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 (in entrata), in uscita (in uscita) o a entrambi. Per App Engine, il firewall di App Engine si applica solo al traffico in entrata instradato verso l'app o il servizio.

Panoramica

Viene controllato il firewall di App Engine per controllare 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 provenienti da Cloud Load Balancing.
  • Traffico proveniente da origini interne come macchine virtuali (VM) Compute Engine e Cloud Tasks.

Se la tua app è configurata per l'utilizzo di altri servizi o prodotti di networking, potresti dover creare delle regole per controllare il 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 di App Engine e i dettagli su questi casi d'uso speciali.

Regole firewall di App Engine

Puoi configurare le regole firewall di App Engine utilizzando la console Google Cloud, Google Cloud CLI o l'API Admin specificando regole che consentono o bloccano intervalli IP specificati.

Per impostazione predefinita, tutte le richieste che non corrispondono a una regola possono accedere alla tua app. Se devi bloccare tutte le richieste che non corrispondono a una regola specifica (escluse le richieste da servizi interni consentiti per impostazione predefinita), cambia l'azione della regola default in deny.

Funzionalità firewall

Nell'ambiente standard di App Engine, il firewall di App Engine può consentire a un determinato 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 aggirano le regole firewall in questo modo includono:

  • Richieste di riscaldamento
  • Job Cloud Scheduler che utilizzano HTTP di App Engine (tra cui App Engine Cron

    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 legacy ignorano 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 consegnate 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 le attività HTTP e di App Engine di 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 negazione 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 negazione 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 l'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 da cron job di App Engine appena 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 precedenti di gcloud (precedenti alla 326.0.0), le richieste cron proverranno da 0.1.0.1. Per scoprire di più su come identificare le richieste dal servizio App Engine Cron, 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 standard App Engine

    L'app in esecuzione nell'ambiente standard ha due servizi: frontend_service e backend_service. frontend_service utilizza Cloud Tasks con il protocollo HTTP di 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 utilizzo dell'ambiente flessibile 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 il protocollo HTTP di App Engine per inviare messaggi a backend_service. Poiché la regola firewall default rifiuta 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 in entrata in modo che la tua app 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 bypassare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private che vengono trasmesse tramite il bilanciatore del carico.

    • Se i controlli in entrata sono impostati per ricevere traffico internal-and-cloud-load-balancing, lascia invariata la regola firewall predefinita di App Engine (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 è protetto da meccanismi che memorizzano nella cache i contenuti, ad esempio proxy web e browser. I contenuti memorizzati nella cache vengono pubblicati pubblicamente dall'URL specifico fino alla scadenza e sono accessibili anche dopo la creazione di nuove regole firewall.

    Per informazioni sulla modifica della scadenza predefinita per i contenuti statici o su come impedire la memorizzazione nella cache di contenuti statici, consulta Scadenza della cache.

    Per impedire che l'output dei contenuti dinamici dal codice della tua app venga memorizzato nella cache, 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 Evitare la memorizzazione nella cache.

    Passaggi successivi

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