Questo principio del pilastro della sicurezza del Google Cloud Well-Architected Framework fornisce consigli per incorporare funzionalità, controlli e pratiche di sicurezza efficaci nella progettazione di applicazioni, servizi e piattaforme cloud. Dall'ideazione alle operazioni, la sicurezza è più efficace se è integrata come parte integrante di ogni fase del processo di progettazione.
Panoramica del principio
Come spiegato in Panoramica dell'impegno di Google per la sicurezza by design, sicurezza per impostazione predefinita e sicurezza by design sono spesso usati in modo intercambiabile, ma rappresentano approcci distinti alla creazione di sistemi sicuri. Entrambi gli approcci mirano a ridurre al minimo le vulnerabilità e migliorare la sicurezza, ma differiscono per ambito e implementazione:
- Sicuro per impostazione predefinita: si concentra sul garantire che le impostazioni predefinite di un sistema siano impostate su una modalità sicura, riducendo al minimo la necessità che utenti o amministratori intraprendano azioni per proteggere il sistema. Questo approccio mira a fornire un livello di sicurezza di base per tutti gli utenti.
- Secure by design: sottolinea l'incorporamento proattivo di considerazioni sulla sicurezza durante il ciclo di vita dello sviluppo di un sistema. Questo approccio consiste nell'anticipare tempestivamente potenziali minacce e vulnerabilità e nel fare scelte di progettazione che mitighino i rischi. Questo approccio prevede l'utilizzo di pratiche di codifica sicure, l'esecuzione di revisioni della sicurezza e l'integrazione della sicurezza durante il 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 ripensamento, ma una parte integrante della progettazione di un sistema.
Consigli
Per implementare il principio di sicurezza by design per i tuoi workload cloud, prendi in considerazione i consigli nelle sezioni seguenti:
- Scegliere i componenti di sistema che contribuiscono a proteggere i tuoi carichi di lavoro
- Creare un approccio alla sicurezza a più livelli
- Utilizzare servizi e infrastrutture protetti e certificati
- Crittografare i dati at-rest e in transito
Scegli i componenti di sistema che contribuiscono a proteggere i tuoi workload
Questo consiglio è pertinente a tutte le aree di interesse.
Una decisione fondamentale per una sicurezza efficace è la selezione di componenti di sistema robusti, inclusi componenti hardware e software, che costituiscono la tua piattaforma, la tua soluzione o il tuo servizio. Per ridurre la superficie di attacco alla sicurezza e limitare i potenziali danni, devi anche valutare attentamente i pattern di deployment di questi componenti e le loro configurazioni.
Nel codice dell'applicazione, ti consigliamo di utilizzare librerie, astrazioni e framework dell'applicazione semplici, sicuri e affidabili per eliminare classi di vulnerabilità. Per cercare vulnerabilità nelle librerie software, puoi utilizzare strumenti di terze parti. Puoi anche utilizzare Assured Open Source Software, che contribuisce a ridurre i rischi per la catena di fornitura software utilizzando pacchetti software open source (OSS) che Google utilizza e protegge.
La tua infrastruttura deve utilizzare opzioni di networking, archiviazione e calcolo che supportino il 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 carichi di lavoro interni sia per quelli rivolti a internet.
Per informazioni su altre soluzioni Google che supportano questo consiglio, consulta Implementare la sicurezza shift-left.
Crea un approccio alla sicurezza a più livelli
Questo consiglio è 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 in 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 limiti del potenziale impatto (ovvero il raggio d'azione) in caso di incidente di sicurezza, procedi nel seguente modo:
- Semplifica la progettazione del sistema per garantire flessibilità, ove possibile.
- Documenta i requisiti di sicurezza di ogni componente.
- Incorpora un meccanismo sicuro e solido per soddisfare i requisiti di resilienza e ripristino.
Quando progetti i livelli di sicurezza, esegui una valutazione dei rischi 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 valutazione del rischio standard del settore che si applichi agli ambienti cloud e che sia pertinente ai tuoi requisiti normativi. Ad esempio, la Cloud Security Alliance (CSA) fornisce la Cloud Controls Matrix (CCM). La valutazione dei rischi fornisce un catalogo dei rischi e dei controlli di sicurezza corrispondenti per mitigarli.
Quando esegui la valutazione del rischio, ricorda che hai un accordo di responsabilità condivisa con il tuo provider di servizi cloud. 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, questi rischi sono a carico del cloud provider. Inoltre, ricorda che i limiti delle responsabilità condivise variano 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.
Utilizzare infrastrutture e servizi protetti e attestati
Questo consiglio è pertinente a 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 anche fornire la correzione per risolvere le vulnerabilità nelle implementazioni esistenti e proteggere le immagini VM e container. Puoi utilizzare guide di hardening specifiche per il sistema operativo e l'applicazione delle tue immagini, nonché benchmark come quello fornito dal Center of Internet Security (CIS).
Se utilizzi immagini personalizzate per le tue VM Compute Engine, devi applicare le patch alle immagini autonomamente. In alternativa, puoi utilizzare le immagini del sistema operativo curate fornite da Google, che vengono patchate regolarmente. Per eseguire container sulle VM Compute Engine, utilizza le immagini Container-Optimized OS curate da Google. Google applica regolarmente patch e aggiornamenti a queste immagini.
Se utilizzi GKE, ti consigliamo di attivare l'upgrade automatico 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 applicate le patch automaticamente. Per ridurre ulteriormente la superficie di attacco dei container, puoi utilizzare immagini distroless. Le immagini Distroless sono ideali per applicazioni, microservizi e situazioni sensibili alla sicurezza in cui è fondamentale ridurre al minimo le dimensioni dell'immagine e la superficie di attacco.
Per i workload sensibili, utilizza 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 proteggere l'accesso SSH, OS Login consente ai tuoi dipendenti di connettersi alle tue VM utilizzando le autorizzazioni Identity and Access Management (IAM) come fonte attendibile anziché affidarsi alle chiavi SSH. Pertanto, non devi gestire le chiavi SSH in tutta l'organizzazione. OS Login collega l'accesso di un amministratore al ciclo di vita dei dipendenti, quindi quando i dipendenti cambiano ruolo o lasciano l'organizzazione, il loro accesso viene revocato insieme al loro account. L'accesso OS supporta anche l'autenticazione a due fattori di Google, che aggiunge un ulteriore livello di sicurezza contro gli attacchi di compromissione dell'account.
In GKE, le istanze dell'applicazione vengono eseguite all'interno di container Docker. Per attivare 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à implica che i tuoi dipendenti non modifichino il container né vi accedano in modo interattivo. Se il container deve essere modificato, devi creare una nuova immagine ed eseguire nuovamente il deployment. Abilita l'accesso SSH ai container sottostanti solo in scenari di debug specifici.
Per proteggere le configurazioni a livello globale nel tuo ambiente, puoi utilizzare i criteri dell'organizzazione per impostare vincoli o misure di protezione sulle risorse che influiscono sul comportamento delle tue risorse cloud. Ad esempio, puoi definire i seguenti criteri dell'organizzazione e applicarli a livello globale in un'organizzazione Google Cloud oppure in modo selettivo a livello di cartella o progetto:
- Disattiva l'allocazione di indirizzi IP esterni alle VM.
- Limita la creazione di risorse a specifiche località geografiche.
- Disattiva la creazione di service account o delle relative chiavi.
Crittografare i dati at-rest e in transito
Questo consiglio è 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 efficace di protezione dei dati include controllo dell'accesso, segmentazione dei dati e residenza geografica, audit, e implementazione della crittografia basata su un'attenta valutazione dei requisiti.
Per impostazione predefinita, Google Cloud cripta i dati archiviati non attivi dei clienti, senza che sia richiesta alcuna azione da parte tua. Oltre alla crittografia predefinita, Google Cloud offre opzioni per la crittografia envelope e la gestione delle chiavi di crittografia. Devi identificare le soluzioni più adatte alle tue esigenze in termini di generazione, archiviazione e rotazione delle chiavi, che si tratti di scegliere le chiavi per l'archiviazione, per il calcolo o per i carichi di lavoro 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 chiavi CMEK. Inoltre, puoi portare 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 crittografa 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 viene criptato. Puoi utilizzare MACsec per criptare il traffico sulle connessioni Cloud Interconnect. IPsec fornisce la crittografia per il traffico sulle connessioni Cloud VPN. Puoi proteggere il traffico da applicazione ad applicazione 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 inattivi e in transito sulla rete. Tuttavia, i dati non vengono criptati per impostazione predefinita mentre sono in uso in memoria. Se la tua organizzazione gestisce dati riservati, devi mitigare qualsiasi minaccia che comprometta la riservatezza e l'integrità dell'applicazione o dei dati nella memoria di sistema. Per ridurre queste minacce, puoi utilizzare Confidential Computing, che fornisce un ambiente di esecuzione attendibile per i tuoi carichi di lavoro di calcolo. Per maggiori informazioni, consulta la panoramica di Confidential VM.