Usa Google Cloud Armor, il bilanciamento del carico e Cloud CDN per eseguire il deployment di front-end globali programmabili

Last reviewed 2024-04-04 UTC

Questo documento fornisce un'architettura di riferimento per un'applicazione web ospitata su Google Cloud. L'architettura utilizza un frontend globale che incorpora le best practice di Google Cloud per contribuire a scalare, proteggere e accelerare la distribuzione delle tue applicazioni rivolte a internet. L'architettura include il supporto per Cloud Build, nonché strumenti di integrazione continua (CI) e distribuzione continua (CD) di terze parti come Jenkins e GitLab. Questa architettura è pensata per gli sviluppatori e i proprietari di app che vogliono scalare la propria applicazione con un bilanciatore del carico e proteggere le applicazioni da attacchi DDoS (Distributed Denial-of-Service) e basati sul web con un web application firewall (WAF).

Architettura

Il seguente diagramma mostra l'architettura descritta in questo documento.

Architettura delle applicazioni web.

In questa architettura, il bilanciamento del carico dell'applicazione avviene tramite Application Load Balancer esterni globali, che distribuiscono il traffico HTTP e HTTPS in più istanze di backend in diverse regioni. Cloud CDN accelera le applicazioni rivolte a internet utilizzando i punti di presenza (POP) perimetrali di Google e funziona con l'Application Load Balancer esterno globale per fornire contenuti agli utenti. I backend sono protetti dai criteri di sicurezza di Google Cloud Armor che forniscono filtri di livello 7 eseguendo lo scrubbing delle richieste in arrivo per attacchi web comuni o altri attributi di livello 7, contribuendo a bloccare il traffico prima che raggiunga i servizi di backend con bilanciamento del carico. La protezione dagli attacchi DDoS volumetrici è abilitata per impostazione predefinita.

Quando un utente richiede contenuti dal tuo servizio, la richiesta viene inviata al frontend globale per le applicazioni rivolte a internet, fornito dalla rete cross-cloud. La richiesta viene valutata dai criteri di sicurezza di Google Cloud Armor, a partire dai criteri di sicurezza perimetrale di Google Cloud Armor. Se la richiesta è consentita e può essere soddisfatta da Cloud CDN, i contenuti vengono recuperati dalla cache di Google Cloud Armor e inviati all'utente. Se la richiesta genera un fallimento della cache, viene valutata dai criteri di backend e, in base alle regole del criterio, viene rifiutata o completata dal server di backend.

Componenti dell'architettura

Il diagramma precedente include i seguenti componenti:

  • Application Load Balancer esterno globale: questo bilanciatore del carico delle applicazioni è un bilanciatore del carico di livello 7 basato su proxy che ti consente di eseguire e scalare i tuoi servizi. L'Application Load Balancer distribuisce il traffico HTTP e HTTPS ai backend ospitati su varie piattaforme Google Cloud. Il bilanciatore del carico delle applicazioni ha le seguenti funzionalità:

    • Backend configurabile: questa architettura utilizza due gruppi di istanze gestite in diverse regioni, ma puoi configurare qualsiasi backend supportato dal bilanciatore del carico delle applicazioni esterno globale. Puoi utilizzare lo stesso bilanciatore del carico per le applicazioni GKE, Cloud Run, Cloud Functions e App Engine, oltre che per quelle ospitate on-premise e su altri cloud, usando una configurazione di backend diversa. Per saperne di più, vedi Panoramica del bilanciatore del carico delle applicazioni.
    • Suddivisione del traffico: puoi utilizzare il bilanciatore del carico delle applicazioni per la gestione del traffico, inclusa quella delle versioni software, inviando utenti diversi a server di backend diversi. Nell'architettura descritta in questo documento è presente una suddivisione del traffico semplice di 60/40. Tuttavia, puoi modificare questa suddivisione per creare schemi di gestione del traffico più complessi. Per informazioni su opzioni di configurazione aggiuntive, consulta la sezione sui timeout e i nuovi tentativi configurabili e determina la modalità di bilanciamento preferita.
  • Cloud CDN: la piattaforma Cloud CDN funge da cache. Viene eseguito il deployment con il server di origine per fornire la suite completa di funzionalità di Cloud CDN, tra cui QUIC e HTTP/2, oltre ai controlli per il routing e la memorizzazione nella cache. Questo approccio consente alla tua applicazione di scalare a livello globale senza compromettere le prestazioni e di ridurre i costi relativi alla larghezza di banda e al calcolo front-end. La configurazione predefinita utilizzata dal front-end globale si basa sulle best practice per la distribuzione dei contenuti e sulle best practice per la sicurezza web di Cloud CDN.

  • Google Cloud Armor: questo componente include la protezione DDoS e le regole WAF. L'architettura ha la seguente configurazione di base di Google Cloud Armor, che contribuisce a mitigare i vettori di minaccia comuni:

Prodotti utilizzati

Questa architettura di riferimento utilizza i seguenti prodotti Google Cloud:

Note sul layout

Questa sezione fornisce indicazioni per aiutarti a utilizzare questo documento come punto di partenza per sviluppare un'architettura che soddisfi i tuoi requisiti specifici di sicurezza, affidabilità, efficienza operativa, costi e prestazioni.

Sicurezza, privacy e conformità

In questa sezione vengono descritti fattori aggiuntivi da considerare quando utilizzi questa architettura di riferimento per eseguire il deployment dell'applicazione web.

Stabilisci una base di riferimento per la sicurezza

Per migliorare ulteriormente la sicurezza, l'architettura descritta in questo documento è compatibile anche con il progetto di base della piattaforma Enterprise. Il progetto aiuta le organizzazioni che utilizzano Google Cloud a stabilire una base di riferimento sicura per tutti i carichi di lavoro futuri, inclusa la configurazione di Identity and Access Management (IAM), Cloud Key Management Service e Security Command Center.

Proteggi i dati utente con Cloud CDN

In questa architettura, consigliamo di non memorizzare nella cache i contenuti specifici dell'utente. Per la memorizzazione nella cache di tipi di contenuti HTML (text/html) e JSON (application/json), imposta intestazioni esplicite di controllo della cache nella risposta di Cloud CDN. Assicurati di non memorizzare nella cache i dati di un utente e distribuirli a tutti gli utenti.

Controllare l'accesso all'applicazione con IAP

L'architettura è compatibile anche con Identity-Aware Proxy (IAP). IAP verifica l'identità di un utente, quindi determina se l'utente deve essere autorizzato ad accedere a un'applicazione. Per abilitare IAP per il bilanciatore del carico delle applicazioni sia per la modalità esterna globale che per la modalità classica, devi abilitarlo sui servizi di backend del bilanciatore del carico. Le richieste HTTP/HTTPS in entrata vengono valutate da Google Cloud Armor prima di essere inviate per il bilanciamento del carico dall'Application Load Balancer. Se Google Cloud Armor blocca una richiesta, IAP non valuta la richiesta. Se Google Cloud Armor consente una richiesta, IAP la valuta. La richiesta è bloccata se IAP non autentica la richiesta. Per saperne di più, consulta Integrazione di Google Cloud Armor con altri prodotti Google.

Ottimizzazione dei costi

Come linea guida generale, l'utilizzo di Cloud CDN insieme a Google Cloud Armor può aiutare a ridurre al minimo l'effetto degli addebiti per il trasferimento di dati in uscita.

Cloud CDN

Gli oggetti statici pubblicati per il client dalla cache non transitano attraverso il bilanciatore del carico. Una strategia di memorizzazione nella cache efficace può ridurre la quantità di dati in uscita elaborati dal bilanciatore del carico e i costi.

Google Cloud Armor

Google Cloud Armor ti aiuta a ridurre i costi evitando che al tuo account vengano addebitati costi per traffico indesiderato. Le richieste bloccate da Google Cloud Armor non generano una risposta dalla tua app, riducendo di fatto la quantità di dati in uscita elaborati dal bilanciatore del carico. L'effetto sui costi dipende dalla percentuale di traffico indesiderato bloccato dai criteri di sicurezza di Google Cloud Armor implementati.

Anche i costi finali possono variare, a seconda del numero di servizi o applicazioni che vuoi proteggere, del numero di criteri e regole di Google Cloud Armor esistenti, di riempimento e traffico in uscita della cache e del volume di dati. Per scoprire di più, consulta le seguenti risorse:

Deployment

Per eseguire il deployment di questa architettura di riferimento, utilizza l'esempio Terraform. Per scoprire di più, consulta il file README. La cartella web_app_protection_example include il file (main.tf). Il codice in questo file crea l'architettura descritta in questo documento e fornisce ulteriore supporto per il deployment automatico.

La struttura delle cartelle della cartella Terraform è la seguente:

Quando esegui il commit di una modifica in un ramo su cui si basa la tua pipeline, le modifiche attivano l'esecuzione della pipeline e, al termine, le modifiche vengono integrate in una nuova release. La prima volta che esegui il pull del toolkit, la soluzione viene caricata nel progetto Google Cloud che hai scelto.

Passaggi successivi

Scopri di più sulle best practice per i prodotti Google Cloud utilizzati in questa architettura di riferimento:

Collaboratori

Autori:

Altri collaboratori: