Questo documento fornisce un'architettura di riferimento per un'applicazione web ospitata su Google Cloud. L'architettura utilizza un front-end globale che incorpora le best practice di Google Cloud per scalare, proteggere e accelerare la distribuzione delle tue applicazioni per internet. L'architettura include 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 sviluppatori e proprietari di app che vogliono scalare le loro applicazioni con un bilanciatore del carico e proteggere le loro applicazioni da attacchi DDoS (Distributed Denial of Service) e attacchi basati sul web con un web application firewall (WAF).
Architettura
Il seguente diagramma mostra l'architettura descritta in questo documento.
In questa architettura, il bilanciamento del carico dell'applicazione viene eseguito con Application Load Balancer esterni globali, che distribuiscono il traffico HTTP e HTTPS su più istanze di backend in più regioni. Cloud CDN accelera le applicazioni per internet utilizzando i punti di presenza (POP) perimetrali) di Google e collabora con il bilanciatore del carico delle applicazioni esterno globale per distribuire contenuti agli utenti. I backend sono protetti dai criteri di sicurezza di Google Cloud Armor che forniscono i filtri di livello 7 eseguendo lo scrubbing delle richieste in arrivo per rilevare 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 per internet, che viene 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 nuovamente all'utente. Se la richiesta determina un fallimento della cache, viene valutata dai criteri di backend e, secondo le regole del criterio, viene rifiutata o soddisfatta dal server di backend.
Componenti dell'architettura
Il diagramma precedente include i seguenti componenti:
Bilanciatore del carico delle applicazioni esterno globale: questo bilanciatore del carico delle applicazioni è un bilanciatore del carico di livello 7 basato su proxy che consente di eseguire e scalare i servizi. L'Application Load Balancer distribuisce il traffico HTTP e HTTPS ai backend ospitati su diverse piattaforme Google Cloud. Il bilanciatore del carico delle applicazioni include 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, nonché per quelle ospitate on-premise e su altri cloud, utilizzando una configurazione 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 la gestione delle versioni del software, inviando utenti diversi a server di backend diversi. L'architettura descritta in questo documento prevede una suddivisione del traffico semplice di 60/40. Tuttavia, puoi modificare questa suddivisione per creare schemi di gestione del traffico più complessi. Per saperne di più sulle opzioni di configurazione aggiuntive, consulta timeout e nuovi tentativi configurabili e determina la modalità di bilanciamento che preferisci.
Cloud CDN: la piattaforma Cloud CDN funge da cache. Il deployment viene eseguito con il server di origine per fornire la suite completa di funzionalità di Cloud CDN, inclusi QUIC e HTTP/2, nonché controlli di routing e memorizzazione nella cache. Questo approccio consente all'applicazione di scalare a livello globale senza compromettere le prestazioni, nonché di ridurre i costi di calcolo della larghezza di banda e del front-end. La configurazione predefinita utilizzata dal front-end globale si basa sulle best practice per la consegna dei contenuti e sulle best practice per la sicurezza web di Cloud CDN.
Google Cloud Armor: questo componente include la protezione dagli attacchi DDoS e le regole WAF. L'architettura ha la seguente configurazione di base di Google Cloud Armor, che aiuta a mitigare i vettori di minaccia comuni:
Protezione predefinita contro gli attacchi DDoS volumetrici (livello 3 e 4).
Regole WAF preconfigurate basate su ModSecurity Core Rule Set CRS 3.3. Queste regole consentono a Google Cloud Armor di valutare decine di firme di traffico distinte facendo riferimento a regole già denominate, invece di dover definire manualmente ogni firma.
Una configurazione di base del criterio di sicurezza perimetrale di Google Cloud Armor per filtrare le richieste in arrivo e controllare l'accesso ai servizi di backend protetti e ai bucket Cloud Storage.
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 in termini di sicurezza, affidabilità, efficienza operativa, costi e prestazioni.
Sicurezza, privacy e conformità
Questa sezione descrive i fattori aggiuntivi da prendere in considerazione quando utilizzi questa architettura di riferimento per eseguire il deployment dell'applicazione web.
Stabilisci una base di sicurezza
Per migliorare ulteriormente la sicurezza, l'architettura descritta in questo documento è compatibile anche con il progetto di base Enterprise. Il progetto aiuta le organizzazioni che utilizzano Google Cloud a stabilire una base sicura per tutti i carichi di lavoro futuri, tra cui 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 contenuti specifici dell'utente.
Per i tipi di contenuti HTML (text/html
) e JSON (application/json
) della memorizzazione nella cache, imposta intestazioni esplicite di controllo della cache nella
risposta di Cloud CDN. Assicurati di non memorizzare nella cache i dati di un utente e di non pubblicarli per tutti gli utenti.
Controlla l'accesso alla tua applicazione con IAP
L'architettura è compatibile anche con Identity-Aware Proxy (IAP). IAP verifica l'identità dell'utente e determina se quest'ultimo deve essere autorizzato ad accedere a un'applicazione. Per abilitare IAP per il bilanciatore del carico delle applicazioni sia per la modalità esterna globale sia 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 la valuta. Se Google Cloud Armor consente una richiesta, IAP la valuta. La richiesta viene bloccata se IAP non la autentica. Per scoprire di più, consulta Integrazione di Google Cloud Armor con altri prodotti Google.
Ottimizzazione dei costi
Come regola 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 forniti al client dalla cache non passano 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 effettivamente 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.
Inoltre, i costi finali possono variare a seconda del numero di servizi o applicazioni da proteggere, del numero di criteri e regole di Google Cloud Armor attivi, di riempimento e traffico in uscita della cache e del volume di dati. Per saperne di più, consulta quanto segue:
- Prezzi di Google Cloud Armor
- Prezzi di Cloud Load Balancing
- Prezzi di Cloud CDN
- Per trovare il prezzo per il tuo scenario di deployment specifico, consulta il Calcolatore prezzi di Google Cloud
Deployment
Per eseguire il deployment di questa architettura di riferimento, utilizza
l'esempio di 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 nella cartella Terraform è la seguente:
- Repository di codice sorgente: Web Application Protection Example fa parte del repository Web Application and API Protection (WAAP).
- CD e CI: la cartella di build
contiene i seguenti file descrittivi per Jenkins, GitLab e Cloud Build:
- Jenkins: questo repository include il file Jenkins che contiene le regole eseguite dalla pipeline.
- GitLab: questo repository include un file YAML.gitlab-ci contenente le regole eseguite dalla pipeline GitLab.
- Cloud Build: questo repository include il file Cloud Build che contiene le regole basate sui nomi dei rami.
- Il repository include un'opzione per il deployment in più ambienti (produzione e sviluppo). Per maggiori informazioni, consulta il file
README
.
Quando esegui il commit di una modifica in un ramo su cui si basa la pipeline, queste modifiche attivano un'esecuzione della pipeline e le modifiche vengono integrate in una nuova release una volta completata. Quando esegui il pull del toolkit per la prima volta, 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:
- Best practice per la sicurezza sul web
- Best practice per le prestazioni del bilanciatore del carico delle applicazioni esterno
- Best practice per l'importazione dei contenuti
- Best practice per l'ottimizzazione delle regole WAF di Google Cloud Armor
Cloud Armor Enterprise: le funzionalità di Google Cloud Armor in questa architettura sono disponibili nel livello Google Cloud Armor Standard. La registrazione del progetto in Cloud Armor Enterprise ti consente di utilizzare funzionalità aggiuntive come:
- Threat Intelligence, che consente di consentire o bloccare il traffico verso bilanciatori del carico delle applicazioni esterni in base a diverse categorie di dati di threat intelligence.
- Adaptive Protection, che contribuisce a proteggere le applicazioni, i siti web e i servizi Google Cloud dagli attacchi DDoS di livello 7, come flood HTTP, e da altre attività dannose ad alta frequenza di livello 7 (a livello di applicazione). Adaptive Protection crea modelli di machine learning che rilevano attività anomale e avvisano in caso di attività anomale, generano una firma che descrive il potenziale attacco e genera una regola WAF personalizzata di Google Cloud Armor per bloccare la firma.
- Visibilità sugli attacchi DDoS, che fornisce visibilità attraverso le metriche e logging di eventi come i tentativi di attacco volumetrici di livello 3 di livello 4.
- Servizi aggiuntivi come il supporto della risposta DDoS e la protezione delle fatture in caso di attacchi DDoS. Per saperne di più, consulta la panoramica di Cloud Armor Enterprise
Per altre architetture di riferimento, diagrammi e best practice, esplora il Cloud Architecture Center.
Collaboratori
Autori:
- Lihi Shadmi | Product manager
- David Tu | Customer Engineer
Altri collaboratori:
- Alex Maclinovsky | Enterprise Architect
- Anderson Duboc | Customer Engineer
- Grant Sorbo | Solutions Architect
- Michele Chubirka | Consulente per la sicurezza cloud
- Rob Harman | Responsabile Technical Solutions Engineer
- Susan Wu | Outbound Product Manager