Questo principio del pilastro della sicurezza del Google Cloud Well-Architected Framework fornisce suggerimenti per incorporare funzionalità di sicurezza efficaci, controlli e pratiche nella progettazione di applicazioni, servizi e piattaforme cloud. Dall'ideazione alle operazioni, la sicurezza è più efficace quando è integrata come parte integrante di ogni fase del processo di progettazione.
Panoramica del principio
Come spiegato in An Overview of Google's Commitment to Secure by Design, sicuro di default e sicuro by design vengono spesso utilizzati in modo intercambiabile, ma rappresentano approcci distinti alla creazione di sistemi sicuri. Entrambi gli approcci mirano a ridurre al minimo le vulnerabilità e a migliorare la sicurezza, ma differiscono per ambito e implementazione:
- Sicuro di default: si concentra sulla garanzia che le impostazioni predefinite di un sistema siano impostate su una modalità sicura, riducendo al minimo la necessità per gli utenti o gli amministratori di intraprendere azioni per proteggere il sistema. Questo approccio mira a fornire un livello di sicurezza di base per tutti gli utenti.
- Sicurezza by design: sottolinea l'importanza di incorporare in modo proattivo le considerazioni sulla sicurezza durante tutto il ciclo di vita di sviluppo di un sistema. Questo approccio consiste nell'anticipare tempestivamente potenziali minacce e vulnerabilità e nel fare scelte di progettazione che mitigano i rischi. Questo approccio prevede l'utilizzo di pratiche di programmazione sicure, l'esecuzione di revisioni della sicurezza e l'integrazione della sicurezza nell'intero processo di progettazione. L'approccio secure-by-design è una filosofia generale che guida il processo di sviluppo e contribuisce a garantire che la sicurezza non sia un'aggiunta tardiva, ma una parte integrante della progettazione di un sistema.
Consigli
Per implementare il principio di sicurezza fin dalla progettazione per i tuoi workload cloud, prendi in considerazione i suggerimenti riportati nelle sezioni seguenti:
- Scegli i componenti di sistema che contribuiscono a proteggere i tuoi workload
- Crea un approccio alla sicurezza a più livelli
- Utilizza infrastrutture e servizi con protezione avanzata e attestati
- Cripta i dati at-rest e in transito
Scegli i componenti di sistema che contribuiscono a proteggere i tuoi workload
Questo suggerimento è pertinente per tutte le aree di interesse.
Una decisione fondamentale per una sicurezza efficace è la selezione di componenti di sistema solidi, sia hardware che software, che costituiscono la tua piattaforma, soluzione o servizio. Per ridurre la superficie di attacco alla sicurezza e limitare i potenziali danni, devi anche considerare attentamente i pattern di deployment di questi componenti e le relative configurazioni.
Nel codice dell'applicazione, ti consigliamo di utilizzare librerie, astrazioni e framework di applicazioni semplici, sicuri e affidabili per eliminare le classi di vulnerabilità. Per rilevare le vulnerabilità nelle librerie software, puoi utilizzare strumenti di terze parti. Puoi anche utilizzare Assured Open Source Software, che aiuta a ridurre i rischi per la catena di fornitura software utilizzando pacchetti di software open source (OSS) utilizzati e protetti da Google.
La tua infrastruttura deve utilizzare opzioni di networking, archiviazione e computing che supportino un funzionamento sicuro e siano in linea con i tuoi requisiti di sicurezza e i livelli di accettazione del rischio. La sicurezza dell'infrastruttura è importante sia per i workload con accesso a internet sia per quelli interni.
Per informazioni su altre soluzioni Google che supportano questo suggerimento, consulta Implementa la sicurezza shift-left.
Crea un approccio alla sicurezza a più livelli
Questo suggerimento è pertinente alle seguenti aree di interesse:
- Sicurezza di AI e ML
- Sicurezza dell'infrastruttura
- Gestione di identità e accessi
- Sicurezza dei dati
Ti consigliamo di implementare la sicurezza a ogni livello dello stack di applicazioni e infrastrutture applicando un approccio di difesa in profondità.
Utilizza le funzionalità di sicurezza in ogni componente della tua piattaforma. Per limitare l'accesso e identificare i confini del potenziale impatto (ovvero il raggio di esplosione) in caso di incidente di sicurezza, segui questi passaggi:
- Semplifica la progettazione del sistema per consentire la flessibilità, ove possibile.
- Documenta i requisiti di sicurezza di ogni componente.
- Incorpora un solido meccanismo di sicurezza per soddisfare i requisiti di resilienza e ripristino.
Quando progetti i livelli di sicurezza, esegui un'analisi del rischio per determinare le funzionalità di sicurezza necessarie per soddisfare i requisiti di sicurezza interni e i requisiti normativi esterni. Ti consigliamo di utilizzare un framework di analisi del rischio standard di settore che si applichi agli ambienti cloud e che sia pertinente ai tuoi requisiti normativi. Ad esempio, Cloud Security Alliance (CSA) fornisce la Cloud Controls Matrix (CCM). L'analisi del rischio ti fornisce un catalogo dei rischi e dei controlli di sicurezza corrispondenti per mitigarli.
Quando esegui l'analisi del rischio, ricorda che hai un accordo di responsabilità condivisa con il tuo cloud provider. Pertanto, i rischi in un ambiente cloud sono diversi da quelli in un ambiente on-premise. Ad esempio, in un ambiente on-premise, devi mitigare le vulnerabilità dello stack hardware. Al contrario, in un ambiente cloud, è il cloud provider a farsi carico di questi rischi. Inoltre, ricorda che i limiti delle responsabilità condivise differiscono tra i servizi IaaS, PaaS e SaaS per ogni cloud provider.
Dopo aver identificato i potenziali rischi, devi progettare e creare un piano di mitigazione che utilizzi controlli tecnici, amministrativi e operativi, nonché protezioni contrattuali e attestazioni di terze parti. Inoltre, un metodo di modellazione delle minacce, come il metodo di modellazione delle minacce delle applicazioni OWASP, ti aiuta a identificare potenziali lacune e suggerisce azioni per colmarle.
Utilizza infrastrutture e servizi con protezione avanzata e attestati
Questo suggerimento è pertinente per tutte le aree di interesse.
Un programma di sicurezza maturo mitiga le nuove vulnerabilità come descritto nei bollettini sulla sicurezza. Il programma di sicurezza deve inoltre fornire soluzioni per correggere le vulnerabilità nei deployment esistenti e proteggere le immagini VM e container. Puoi utilizzare le guide di protezione specifiche per il sistema operativo e l'applicazione delle tue immagini, nonché i benchmark come quello fornito dal Center of Internet Security (CIS).
Se utilizzi immagini personalizzate per le VM di Compute Engine, devi applicare le patch alle immagini autonomamente. In alternativa, puoi utilizzare le immagini sistema operativo selezionate fornite da Google, che vengono aggiornate regolarmente. Per eseguire container su VM di Compute Engine, utilizza le immagini Container-Optimized OS curate da Google. Google applica regolarmente patch e aggiornamenti a queste immagini.
Se utilizzi Google Kubernetes Engine (GKE), ti consigliamo di attivare gli upgrade automatici dei nodi in modo che Google aggiorni i nodi del cluster con le patch più recenti. Google gestisce i control plane GKE, che vengono aggiornati e corretti automaticamente. Per ridurre ulteriormente la superficie di attacco dei container, puoi utilizzare immagini distroless. Le immagini distroless sono ideali per applicazioni sensibili alla sicurezza, microservizi e situazioni in cui è fondamentale ridurre al minimo le dimensioni dell'immagine e la superficie di attacco.
Per i workload sensibili, utilizza una Shielded VM, che impedisce il caricamento di codice dannoso durante il ciclo di avvio della VM. Le istanze Shielded VM forniscono sicurezza all'avvio, monitorano l'integrità e utilizzano il Virtual Trusted Platform Module (vTPM).
Per contribuire a proteggere l'accesso SSH, OS Login consente ai tuoi dipendenti di connettersi alle tue VM utilizzando le autorizzazioni di Identity and Access Management (IAM) come fonte di attendibilità, anziché fare affidamento sulle chiavi SSH. Pertanto, non è necessario gestire le chiavi SSH in tutta l'organizzazione. OS Login associa l'accesso di un amministratore al ciclo di vita del dipendente, quindi quando i dipendenti cambiano ruolo o lasciano l'organizzazione, il loro accesso viene revocato insieme al loro account. OS Login supporta anche l'autenticazione a due fattori di Google, che aggiunge un ulteriore livello di sicurezza contro gli attacchi di takeover dell'account.
In GKE, le istanze dell'applicazione vengono eseguite all'interno di container Docker. Per abilitare un profilo di rischio definito e impedire ai dipendenti di apportare modifiche ai container, assicurati che i container siano stateless e immutabili. Il principio di immutabilità significa che i tuoi dipendenti non modificano il container né vi accedono in modo interattivo. Se il container deve essere modificato, crei una nuova immagine e ne esegui nuovamente il deployment. Abilita l'accesso SSH ai container sottostanti solo in scenari di debug specifici.
Per contribuire a proteggere le configurazioni a livello globale nel tuo ambiente, puoi utilizzare le policy dell'organizzazione per impostare vincoli o misure di sicurezza sulle risorse che influiscono sul comportamento dei tuoi asset cloud. Ad esempio, puoi definire le seguenti policy dell'organizzazione e applicarle a livello globale in un'organizzazione Google Cloud o in modo selettivo a livello di cartella o progetto:
- Disattiva l'allocazione di indirizzi IP esterni alle VM.
- Limita la creazione di risorse a posizioni geografiche specifiche.
- Disattivare la creazione di service account o delle relative chiavi.
Cripta i dati at-rest e in transito
Questo suggerimento è pertinente alle seguenti aree di interesse:
- Sicurezza dell'infrastruttura
- Sicurezza dei dati
La crittografia dei dati è un controllo fondamentale per proteggere le informazioni sensibili ed è una parte fondamentale della governance dei dati. Una strategia di protezione dei dati efficace include controllo dell'accesso, la segmentazione dei dati e la residenza geografica, l'audit e l'implementazione della crittografia basata su un'attenta valutazione dei requisiti.
Per impostazione predefinita, Google Cloud cripta i dati dei clienti archiviati at-rest, senza che sia richiesta alcuna azione da parte tua. Oltre alla crittografia predefinita,Google Cloud fornisce opzioni per la crittografia envelope e la gestione delle chiavi di crittografia. Devi identificare le soluzioni più adatte ai tuoi requisiti per la generazione, l'archiviazione e la rotazione delle chiavi, sia che tu scelga le chiavi per i workload di archiviazione, di computing o di big data. Ad esempio, le chiavi di crittografia gestite dal cliente (CMEK) possono essere create in Cloud Key Management Service (Cloud KMS). Le CMEK possono essere basate su software o protette da HSM per soddisfare i requisiti normativi o di conformità, ad esempio la necessità di ruotare regolarmente le chiavi di crittografia. Cloud KMS Autokey consente di automatizzare il provisioning e l'assegnazione delle CMEK. Inoltre, puoi utilizzare le tue chiavi provenienti da un sistema di gestione delle chiavi di terze parti utilizzando Cloud External Key Manager (Cloud EKM).
Consigliamo vivamente di criptare i dati in transito. Google cripta e autentica i dati in transito su uno o più livelli di rete quando i dati si spostano all'esterno dei confini fisici non controllati da Google o per conto di Google. Tutto il traffico da VM a VM all'interno di una rete VPC e tra reti VPC in peering è criptato. Puoi utilizzare MACsec per la crittografia del traffico sulle connessioni Cloud Interconnect. IPsec fornisce la crittografia per il traffico sulle connessioni Cloud VPN. Puoi proteggere il traffico tra applicazioni nel cloud utilizzando funzionalità di sicurezza come le configurazioni TLS e mTLS in Apigee e Cloud Service Mesh per le applicazioni containerizzate.
Per impostazione predefinita, Google Cloud cripta i dati at-rest e i dati in transito sulla rete. Tuttavia, i dati non vengono criptati per impostazione predefinita mentre sono in uso nella memoria. Se la tua organizzazione gestisce dati riservati, devi mitigare eventuali minacce che compromettono la riservatezza e l'integrità dell'applicazione o dei dati nella memoria di sistema. Per mitigare queste minacce, puoi utilizzare Confidential Computing, che fornisce un Trusted Execution Environment per i tuoi workload di computing. Per ulteriori informazioni, consulta la panoramica di Confidential VM.