Questo documento fornisce un'architettura di riferimento per un'applicazione web ospitati su Google Cloud. L'architettura utilizza un front-end globale che incorpora le best practice di Google Cloud per aiutarti a scalare, proteggere la distribuzione delle tue applicazioni per internet. L'architettura include l'assistenza per Cloud Build, nonché l'integrazione continua (CI) e di distribuzione continua (CD) come Jenkins e GitLab. Questa architettura È destinata a sviluppatori e proprietari di app che vogliono scalare la propria applicazione con di un bilanciatore del carico e di proteggere le applicazioni dagli attacchi Distributed Denial of Service (DDoS) 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 per 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 protette dai criteri di sicurezza di Google Cloud Armor che consentono di applicare filtri di livello 7 tramite lo scrubbing in arrivo per attacchi web comuni o altri attributi di livello 7, contribuendo bloccare il traffico prima che raggiunga i servizi di backend con bilanciamento del carico. Protezione contro gli attacchi DDoS volumetrici è abilitata per impostazione predefinita.
Quando un utente richiede contenuti dal tuo servizio, tale richiesta viene inviata al frontend globale per le applicazioni per internet, fornito dal la rete cross-cloud. La richiesta viene valutata in base ai criteri di sicurezza di Google Cloud Armor, a partire da con i criteri di sicurezza perimetrale di Google Cloud Armor. Se la richiesta è consentita che può essere completata da Cloud CDN, il contenuto viene recuperato Cache di Google Cloud Armor e inviata all'utente. Se la richiesta risulta in un fallimento della cache, viene valutato dai criteri di backend e poi, in base al di regole del criterio, negate o soddisfatte 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 i servizi di machine learning. L'Application Load Balancer distribuisce il traffico HTTP e HTTPS ospitati su varie piattaforme Google Cloud. La Il bilanciatore del carico delle applicazioni include le seguenti funzionalità:
- Backend configurabile: questa architettura utilizza due gruppi di istanze gestite in regioni diverse, ma puoi configurare qualsiasi backend che il bilanciatore del carico delle applicazioni esterno supportato. Puoi usare lo stesso carico per GKE, Cloud Run, Cloud Functions e le applicazioni App Engine, oltre a quelle ospitate on-premise e su altre 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 software diversi utenti a server di backend differenti. Nell'architettura descritta in questo documento, esiste una suddivisione del traffico semplice 60/40. Tuttavia, puoi modificare questa suddivisione per creare schemi di gestione del traffico più complessi. Per informazioni sulle opzioni di configurazione aggiuntive, consulta la timeout e nuovi tentativi e scegli la soluzione che preferisci modalità di bilanciamento.
Cloud CDN: la piattaforma Cloud CDN funge da cache. È distribuito con il server di origine per fornire la suite completa di funzionalità di Cloud CDN, inclusi QUIC e HTTP/2, nonché i controlli di routing e memorizzazione nella cache. Questo consente di scalare l'applicazione a livello globale senza compromettere delle prestazioni, oltre a ridurre i costi di calcolo front-end e della larghezza di banda. La la configurazione predefinita su cui si basa il front-end globale Best practice per la distribuzione dei contenuti e best practice per la sicurezza web di Cloud CDN.
Google Cloud Armor: questo componente include la protezione dagli attacchi DDoS e regole WAF. L'architettura presenta le seguenti caratteristiche di base di Google Cloud Armor di sicurezza, che aiuta a mitigare i vettori di minaccia più 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 anziché dover definire manualmente ciascuna firma.
Una configurazione di base del criterio di sicurezza perimetrale di Google Cloud Armor da filtrare richieste in entrata e controllare l'accesso ai servizi di backend di archiviazione dei 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, l'affidabilità, l'efficienza operativa, i costi e le prestazioni.
Sicurezza, privacy e conformità
Questa sezione descrive altri fattori da prendere in considerazione quando utilizzi di questa architettura di riferimento per eseguire il deployment dell'applicazione web.
Stabilisci una base di sicurezza
Per contribuire a migliorare ulteriormente la sicurezza, l'architettura descritta in è compatibile anche con il progetto di base Enterprise. Il progetto aiuta le organizzazioni che utilizzano Google Cloud per 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 contenuti specifici dell'utente.
Per i tipi di contenuti HTML (text/html
) e JSON (application/json
) della memorizzazione nella cache, imposta intestazioni cache-control esplicite nel
Risposta di Cloud CDN. Assicurati di non memorizzare nella cache i dati di un utente
a tutti gli utenti.
Controlla l'accesso alla tua applicazione con IAP
L'architettura è compatibile anche con Identity-Aware Proxy (IAP). IAP verifica l'identità di un utente e quindi determina se 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, lo abiliti sulla di backend del bilanciatore del carico. Le richieste HTTP/HTTPS in entrata vengono valutate da Google Cloud Armor prima che vengano inviate per il bilanciamento del carico dal bilanciatore del carico delle applicazioni. Se Google Cloud Armor blocca una richiesta, IAP non valuta il richiesta. Se Google Cloud Armor consente una richiesta, IAP valuta a quella richiesta. La richiesta viene bloccata se IAP non autentica il richiesta. Per scoprire di più, consulta Integrazione di Google Cloud Armor con altri prodotti Google.
Ottimizzazione dei costi
Come regola generale, l'uso di Cloud CDN insieme 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 vengono trasferiti. attraverso il bilanciatore del carico. Una strategia di memorizzazione nella cache efficace può ridurre di dati in uscita elaborati dal bilanciatore del carico e riduce i costi.
Google Cloud Armor
Google Cloud Armor ti aiuta a ridurre i costi impedendo al tuo account di ti viene addebitato il traffico indesiderato. Richieste bloccate da Google Cloud Armor non genera una risposta dalla tua app, riducendo la quantità di dati in uscita elaborati dal bilanciatore del carico. L'effetto sui costi dipende dalla percentuale di traffico indesiderato bloccato Criteri di sicurezza di Google Cloud Armor che implementi.
Anche i costi finali possono variare a seconda del numero di servizi o applicazioni da proteggere, il numero di criteri e regole di Google Cloud Armor traffico in uscita e riempimento della cache e 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 la Calcolatore prezzi di Google Cloud
Deployment
Per eseguire il deployment di questa architettura di riferimento, utilizza
Esempio Terraform.
Per scoprire di più, consulta il file README
.
La cartella web_app_protection_example
include
(main.tf
)
. Il codice in questo file crea l'architettura descritta in questo documento,
e fornisce un supporto aggiuntivo per il deployment automatico.
La struttura delle cartelle nella cartella Terraform è la seguente:
- Repository di codice sorgente: Esempio di protezione delle applicazioni web 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 che contiene le regole eseguite dalla pipeline GitLab.
- Cloud Build: questo repository include File Cloud Build che contiene le regole basate sui nomi dei rami.
- Il repository include un'opzione per più ambienti (produzione e sviluppo)
e deployment continuo. Per ulteriori informazioni, consulta
File
README
.
Quando esegui il commit di una modifica in qualsiasi ramo su cui si basa la tua pipeline, le modifiche attivano l'esecuzione di una pipeline e le modifiche sono integrate in una nuova release una volta completato. Quando estrai il toolkit per la prima volta, la soluzione verrà caricato 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 Standard di Google Cloud Armor. Registrazione del progetto in Cloud Armor Enterprise consente di usare funzionalità aggiuntive come le seguenti:
- Informazioni sulle minacce che ti consente di consentire o bloccare il traffico verso bilanciatori del carico delle applicazioni esterni sulla base di diverse categorie di dati di threat intelligence.
- Adaptive Protection, che aiuta a proteggere applicazioni, siti web, e servizi contro gli attacchi DDoS di livello 7, come i flood HTTP, nonché come le altre attività dannose di livello 7 ad alta frequenza (a livello di applicazione). Adaptive Protection crea modelli di machine learning che rilevano e avvisare le attività anomale, generare una firma che descriva potenziale attacco, e genera una regola WAF personalizzata di Google Cloud Armor per bloccare la firma.
- Visibilità sugli attacchi DDoS, che offre visibilità attraverso le metriche, oltre al logging di eventi come il livello 3 4 tentativi di attacco volumetrici.
- 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 Centro architetture cloud.
Collaboratori
Autori:
- Lihi Shadmi | Product manager
- Davide Tu | Customer Engineer
Altri collaboratori:
- Andrea Rossi | Architetto aziendale
- Andrea Rossi | Customer Engineer
- Concedi Sorbo | Architetto di soluzioni
- Michele Chubirka | Consulente per la sicurezza cloud
- Rob Harman | Responsabile Technical Solutions Engineer
- Giulia Ferrara | Product manager di outbound