Utilizza Google Cloud Armor, il bilanciamento del carico e Cloud CDN per eseguire il deployment di frontend globali programmabili

Last reviewed 2024-04-04 UTC

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 contribuire a scalare, proteggere e accelerare la distribuzione delle tue applicazioni rivolte a 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.

Architettura delle applicazioni web.

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 protetti dai criteri di sicurezza di Google Cloud Armor che forniscono il filtro a livello 7 analizzando le richieste in entrata 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. 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 applicazioni per internet, fornito dal la rete cross-cloud. La richiesta viene valutata dai criteri di sicurezza di Google Cloud Armor, a partire dai criteri di sicurezza perimetrali 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 non trova una corrispondenza nella cache, viene valutata dalle norme di backend e, in base alle regole delle norme, 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 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. Il bilanciatore del carico delle applicazioni ha le seguenti funzionalità:

    • Backend configurabile: questa architettura utilizza due gruppi di istanze gestite in regioni diverse, ma puoi configurare qualsiasi backend che un bilanciatore del carico delle applicazioni esterno supporta Puoi utilizzare lo stesso bilanciatore del carico per GKE, Cloud Run, le funzioni Cloud Run e le applicazioni 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 software, inviando utenti diversi a server di backend diversi. 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 scoprire di più sulle opzioni di configurazione aggiuntive, consulta i tempi di attesa e le ripetizioni configurabili e scegli la modalità di bilanciamento che preferisci.
  • 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 approccio consente alla tua applicazione di scalare a livello globale senza compromettere le prestazioni e di ridurre anche la larghezza di banda e i costi di 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 dagli attacchi DDoS e le 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:

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 altri fattori da considerare quando utilizzi questa architettura di riferimento per il deployment dell'applicazione web.

Stabilisci una base di sicurezza

Per contribuire a migliorare ulteriormente la sicurezza, l'architettura descritta in questo documento è compatibile anche con il progetto della piattaforma di 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.

Proteggere i dati utente con Cloud CDN

In questa architettura, consigliamo di non memorizzare nella cache 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 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 attivare l'IAP per il bilanciatore del carico delle applicazioni sia per la modalità esterna globale che per la modalità classica, devi attivarlo 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 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 l'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'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 che vengono inviati al client dalla cache non transitano tramite 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 che al tuo account vengano addebitati costi per 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 dai criteri di sicurezza di Google Cloud Armor che implementi.

I costi finali possono variare anche in base al numero di servizi o applicazioni che vuoi proteggere, al numero di criteri e regole di Google Cloud Armor di cui disponi, al riempimento della cache e all'uscita e al volume dei dati. Per saperne di più, consulta le seguenti risorse:

Deployment

Per eseguire il deployment di questa architettura di riferimento, utilizza Esempio Terraform. Per saperne 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 assistenza per il deployment automatico.

La struttura delle cartelle nella cartella Terraform è la seguente:

Quando effettui il commit di una modifica a un ramo su cui si basa la pipeline, queste modifiche attivano un'esecuzione della pipeline e vengono integrate in una nuova release al termine dell'esecuzione. Quando estrai il toolkit per la prima volta, la soluzione verrà caricata nel progetto Google Cloud scelto.

Passaggi successivi

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

Collaboratori

Autori:

Altri collaboratori: