Questo documento fornisce un'architettura di riferimento per un'applicazione web ospitata su Google Cloud. L'architettura utilizza un front-end globale che incorpora Google Cloud le best practice per scalare, proteggere e accelerare la distribuzione delle applicazioni rivolte a internet. L'architettura include il supporto per Cloud Build, nonché per strumenti di integrazione continua (CI) e distribuzione continua (CD) di terze parti come Jenkins e GitLab. Questa architettura è destinata a sviluppatori e proprietari di app che vogliono scalare la propria applicazione con un bilanciatore del carico e proteggerla da attacchi DDoS (Distributed Denial of Service) e basati sul web con un WAF (Web Application Firewall).
Architettura
Il seguente diagramma mostra l'architettura descritta in questo documento.
In questa architettura, l'applicazione viene bilanciata dal carico con i bilanciatori del carico delle applicazioni esterni globali, che distribuiscono il traffico HTTP e HTTPS su più istanze di backend in più regioni. Cloud CDN accelera le applicazioni rivolte a internet utilizzando i punti di presenza (PoP) perimetrali di Google e funziona con il bilanciatore del carico delle applicazioni esterno globale per fornire contenuti agli utenti. I backend sono protetti dalle policy di sicurezza di Google Cloud Armor che forniscono filtri di livello 7 ripulendo le richieste in entrata da 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 da Cross-Cloud Network. La richiesta viene valutata dalle policy di sicurezza di Cloud Armor, a partire dalle policy di sicurezza perimetrali di Cloud Armor. Se la richiesta è consentita e può essere soddisfatta da Cloud CDN, i contenuti vengono recuperati dalla cache di Cloud Armor e inviati all'utente. Se la richiesta genera un fallimento della cache, viene valutata dalle policy di backend e poi, in base alle regole della policy, viene negata 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 ti consente di eseguire e scalare i tuoi servizi. Il bilanciatore del carico delle applicazioni distribuisce il traffico HTTP e HTTPS ai backend ospitati su una varietà di Google Cloud piattaforme. Il bilanciatore del carico delle applicazioni ha le seguenti funzionalità:
- Backend configurabile: questa architettura utilizza due gruppi di istanze gestite (MIG) in regioni diverse, 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 Run Functions e App Engine, nonché per quelle ospitate on-premise e su altri cloud utilizzando una configurazione di backend diversa. Per saperne di più, consulta la 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. Nell'architettura descritta in questo documento, è presente una semplice suddivisione del traffico 60/40. Tuttavia, puoi modificare questa suddivisione per creare schemi di gestione del traffico più complessi. Per scoprire di più sulle opzioni di configurazione aggiuntive, consulta i timeout e i 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, nonché controlli di routing e memorizzazione nella cache. Questo approccio consente alla tua applicazione di scalare a livello globale senza compromettere le prestazioni e di ridurre i costi di larghezza di banda e di computing del frontend. La configurazione predefinita utilizzata dal front-end globale si basa sulle best practice per la distribuzione di contenutidi Cloud CDN e sulle best practice per la sicurezza web.
Cloud Armor: questo componente include la protezione DDoS e le regole WAF. L'architettura ha la seguente configurazione di base di Cloud Armor, che aiuta a mitigare i vettori di minaccia comuni:
Protezione predefinita dagli attacchi DDoS volumetrici (livello 3 e livello 4).
Regole WAF preconfigurate basate su ModSecurity Core Rule Set CRS 3.3. Queste regole consentono a Cloud Armor di valutare decine di firme di traffico distinte facendo riferimento a regole con nomi predefiniti, anziché richiedere di definire manualmente ogni firma.
Una configurazione di base della policy di sicurezza perimetrale di Cloud Armor per filtrare le richieste in entrata e controllare l'accesso ai servizi di backend protetti e ai bucket Cloud Storage.
Prodotti utilizzati
Questa architettura di riferimento utilizza i seguenti Google Cloud prodotti:
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à
Questa sezione descrive i fattori aggiuntivi da considerare quando utilizzi questa architettura di riferimento per eseguire il deployment dell'applicazione web.
Stabilire una baseline di sicurezza
Per migliorare ulteriormente la sicurezza, l'architettura descritta in questo documento è compatibile anche con il progetto base per le aziende. Il progetto base aiuta le organizzazioni che utilizzano Google Cloud a stabilire una baseline 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.
Proteggere i dati utente con Cloud CDN
In questa architettura, ti consigliamo di non memorizzare nella cache i contenuti specifici dell'utente.
Per memorizzare nella cache i tipi di contenuti HTML (text/html) e JSON (application/json), imposta intestazioni cache-control esplicite nella risposta di
Cloud CDN. Assicurati di non memorizzare nella cache i dati di un utente e di non fornirli 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 e poi determina se può accedere a un'applicazione. Per attivare IAP per il bilanciatore del carico delle applicazioni sia in modalità esterna globale sia in modalità classica, devi attivarlo nei servizi di backend del bilanciatore del carico. Le richieste HTTP/HTTPS in entrata vengono valutate da Cloud Armor prima di essere inviate per il bilanciamento del carico dal bilanciatore del carico delle applicazioni. Se Cloud Armor blocca una richiesta, IAP non la valuta. Se Cloud Armor consente una richiesta, IAP la valuta. La richiesta viene bloccata se IAP non la autentica. Per saperne di più, consulta Integrazione di Cloud Armor con altri prodotti Google.
Ottimizzazione dei costi
In generale, l'utilizzo di Cloud CDN insieme a Cloud Armor può contribuire a ridurre al minimo l'effetto delle tariffe per il trasferimento dei dati in uscita.
Cloud CDN
Gli oggetti statici che vengono pubblicati per il client dalla cache non passano attraverso il bilanciatore del carico. Un'efficace strategia di memorizzazione nella cache può ridurre la quantità di dati in uscita elaborati dal bilanciatore del carico e abbassare i costi.
Google Cloud Armor
Cloud Armor ti aiuta a ridurre i costi impedendo che al tuo account vengano addebitati costi per il traffico indesiderato. Le richieste bloccate da Cloud Armor non generano una risposta dalla tua app, riducendo efficacemente la quantità di dati in uscita elaborati dal bilanciatore del carico. L'impatto sui costi dipende dalla percentuale di traffico indesiderato bloccato dalle policy di sicurezza di Cloud Armor che implementi.
I costi finali possono variare anche a seconda del numero di servizi o applicazioni che vuoi proteggere, del numero di policy e regole di Cloud Armor che hai, del riempimento e dell'uscita della cache e del volume di dati. Per saperne di più, consulta:
- Prezzi di Cloud Armor
- Prezzi di Cloud Load Balancing
- Prezzi di Cloud CDN
- Per trovare il prezzo per il tuo scenario di deployment specifico, consulta il Google Cloud Calcolatore prezzi
Deployment
Per eseguire il deployment di questa architettura di riferimento, utilizza l'
esempio di Terraform.
Per saperne di più, consulta il file README.
La cartella web_app_protection_example include il
(main.tf)
file. 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: l'esempio di protezione delle applicazioni web fa parte del repository Web Application and API Protection (WAAP).
- CD e CI: La cartella 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 che contiene 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 multiambiente (produzione e sviluppo). Per saperne di più, consulta il
READMEfile.
Quando esegui il commit di una modifica a un ramo su cui si basa la pipeline, le modifiche attivano un'esecuzione della pipeline e vengono integrate in una nuova release al termine. Quando estrai il toolkit per la prima volta, la soluzione viene caricata nel progetto che hai scelto Google Cloud .
Passaggi successivi
Scopri di più sulle best practice per i Google Cloud prodotti utilizzati in questa architettura di riferimento:
- Best practice per la sicurezza web
- Best practice per le prestazioni del bilanciatore del carico delle applicazioni esterno
- Best practice per la distribuzione di contenuti
- Best practice per l'ottimizzazione delle regole WAF di Cloud Armor
Cloud Armor Enterprise: le funzionalità di Cloud Armor in questa architettura sono disponibili nel livello Cloud Armor Standard. La registrazione del progetto a Cloud Armor Enterprise ti consente di utilizzare funzionalità aggiuntive come le seguenti:
- Threat Intelligence, che ti consente di consentire o bloccare il traffico verso i bilanciatori del carico delle applicazioni esterni in base a diverse categorie di dati di threat intelligence.
- Adaptive Protection, che ti aiuta a proteggere le tue applicazioni, i tuoi siti web e i tuoi servizi dagli attacchi DDoS di livello 7, come gli attacchi HTTP flood, nonché altre attività dannose di livello 7 (a livello di applicazione) ad alta frequenza. Google Cloud Adaptive Protection crea modelli di machine learning che rilevano e inviano avvisi in caso di attività anomale, generano una firma che descrive il potenziale attacco e generano una regola WAF di Cloud Armor personalizzata per bloccare la firma.
- Visibilità degli attacchi DDoS, che fornisce visibilità tramite metriche, nonché logging di eventi come i tentativi di attacchi volumetrici di livello 3 e 4.
- Servizi aggiuntivi come il supporto per la risposta DDoS e la protezione delle fatture DDoS. Per saperne di più, consulta la panoramica di Cloud Armor Enterprise
Per ulteriori 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 | Cloud Security Advocate
- Rob Harman | Technical Solutions Engineer Manager
- Susan Wu | Outbound Product Manager