Questo principio del pilastro della sicurezza del Google Cloud Architecture 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 dei principi
Come spiegato in Panoramica dell'impegno di Google per la sicurezza per progettazione, per impostazione predefinita e per progettazione vengono spesso utilizzati in modo intercambiabile, ma rappresentano approcci distinti per la creazione di sistemi sicuri. Entrambi gli approcci hanno lo scopo di ridurre al minimo le vulnerabilità e migliorare la sicurezza, ma differiscono per ambito e implementazione:
- Sicuro per impostazione predefinita: si concentra sull'assicurarsi 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.
- Sicuro per progettazione: dà risalto all'integrazione proattiva di considerazioni di sicurezza durante l'intero 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 mitigano i rischi. Questo approccio prevede l'utilizzo di pratiche di codifica sicura, la conduzione di revisioni di sicurezza e l'integrazione della sicurezza in tutto 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'aggiunta tardiva, ma parte integrante della progettazione di un sistema.
Consigli
Per implementare il principio di sicurezza per progettazione per i tuoi carichi di lavoro cloud, prendi in considerazione i consigli riportati nelle seguenti sezioni:
- Scegliere componenti di sistema che contribuiscono a proteggere i workload
- Creare un approccio alla sicurezza a più livelli
- Utilizza servizi e infrastrutture rafforzati e attestati
- Crittografare i dati at-rest e in transito
Scegli componenti di sistema che contribuiscono a proteggere i tuoi workload
Questo consiglio è pertinente per 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, soluzione o servizio. Per ridurre la superficie di attacco della 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, astratti e framework di applicazioni semplici, sicuri e affidabili per eliminare le classi di vulnerabilità. Per eseguire la ricerca di 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 i pacchetti di software open source (OSS) che Google utilizza e protegge.
L'infrastruttura deve utilizzare opzioni di networking, archiviazione e calcolo che supportino un funzionamento sicuro e siano in linea con i 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 per le 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 dell'applicazione e dell'infrastruttura adottando 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 d'azione) in caso di incidente di sicurezza:
- Semplifica la progettazione del sistema per garantire la flessibilità, ove possibile.
- Documenta i requisiti di sicurezza di ogni componente.
- Incorpora un meccanismo consolidato e sicuro per soddisfare i requisiti di resilienza e recupero.
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 di settore applicabile agli ambienti cloud e pertinente ai requisiti normativi. Ad esempio, Cloud Security Alliance (CSA) fornisce la Cloud Controls Matrix (CCM). La valutazione dei rischi fornisce un catalogo di rischi e i controlli di sicurezza corrispondenti per mitigarli.
Quando esegui la valutazione del rischio, ricorda che hai un contratto di responsabilità condivisa con il tuo provider 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à del tuo stack hardware. Al contrario, in un ambiente cloud, questi rischi sono a carico del cloud provider. Inoltre, ricorda che i confini delle responsabilità condivise differiscono tra i servizi IaaS, PaaS e SaaS per ciascun provider cloud.
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 per le applicazioni OWASP, ti aiuta a identificare potenziali lacune e a suggerire azioni per risolverle.
Utilizzare servizi e infrastrutture rafforzati e attestati
Questo consiglio è 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 anche fornire una soluzione per correggere le vulnerabilità nei deployment esistenti e proteggere le immagini VM e dei contenitori. Puoi utilizzare guide per l'applicazione di misure di protezione 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 OS selezionate fornite da Google, che vengono sottoposte a patch regolarmente. Per eseguire i container sulle VM di Compute Engine, utilizza immagini del sistema operativo ottimizzate per i container selezionate da Google. Google applica patch e aggiorna regolarmente queste immagini.
Se utilizzi 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 piani di controllo GKE, che vengono aggiornati e sottoposti a patch automaticamente. Per ridurre ulteriormente la superficie di attacco dei container, puoi utilizzare immagini senza i pacchetti di distribuzione. Le immagini senza distribuzione 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 carichi di lavoro sensibili, utilizza le VM Shielded, che impediscono il caricamento di codice dannoso durante il ciclo di avvio della VM. Le istanze VM schermate forniscono sicurezza di avvio, monitorano l'integrità e utilizzano il Virtual Trusted Platform Module (vTPM).
Per contribuire a proteggere l'accesso SSH, OS Login consente ai dipendenti di connettersi alle VM utilizzando le autorizzazioni IAM (Identity and Access Management) come fonte attendibile anziché fare affidamento sulle chiavi SSH. Pertanto, non devi gestire le chiavi SSH in tutta l'organizzazione. L'accesso al sistema operativo lega l'accesso di un amministratore al ciclo di vita del dipendente, pertanto quando i dipendenti cambiano ruolo o lasciano l'organizzazione, il loro accesso viene revocato con il loro account. Accedi con il sistema operativo supporta anche l'autenticazione a due fattori di Google, che aggiunge un ulteriore livello di sicurezza contro gli attacchi di acquisizione dell'account.
In GKE, le istanze di applicazione vengono eseguite all'interno di container Docker. Per attivare un profilo di rischio definito e impedire ai dipendenti di apportare modifiche ai contenitori, assicurati che i contenitori siano senza stato e immutabili. Il principio di immutabilità prevede che i dipendenti non modifichino il contenitore o non vi accedano in modo interattivo. Se il contenitore deve essere modificato, devi creare una nuova immagine ed eseguirne nuovamente il deployment. Attiva l'accesso SSH ai contenitori di base solo in scenari di debug specifici.
Per contribuire a proteggere le configurazioni a livello globale nell'intero ambiente, puoi utilizzare i criteri dell'organizzazione per impostare vincoli o guardrail sulle risorse che influiscono sul comportamento dei asset cloud. Ad esempio, puoi definire i seguenti criteri dell'organizzazione e applicarli a livello globale in un' Google Cloud organizzazione o selettivamente a livello di cartella o progetto:
- Disattiva l'allocazione di indirizzi IP esterni alle VM.
- Limita la creazione di risorse a località geografiche specifiche.
- Disattiva la creazione di account di servizio o delle relative chiavi.
Crittografare i dati at-rest e in transito
Questo consiglio è pertinente per le seguenti aree di interesse:
- Sicurezza dell'infrastruttura
- Sicurezza dei dati
La crittografia dei dati è un controllo di base per proteggere le informazioni sensibili ed è un elemento chiave della governance dei dati. Una strategia di protezione dei dati efficace include il controllo dell'accesso, la segmentazione dei dati e la residenza geografica, il controllo e l'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 dell'involucro 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, indipendentemente dal fatto che tu scelga le chiavi per lo spazio di 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 ti consente di automatizzare il provisioning e l'assegnazione dei 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 crittografa e autentica i dati in transito su uno o più livelli di rete quando i dati si spostano al di fuori di 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 la crittografia del 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 Anthos Service Mesh per le applicazioni containerizzate.
Per impostazione predefinita, Google Cloud cripta i dati at-rest 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 eventuali minacce che minano la riservatezza e l'integrità dell'applicazione o dei dati nella memoria di sistema. Per ridurre al minimo queste minacce, puoi utilizzare Confidential Computing, che fornisce un ambiente di esecuzione attendibile per i tuoi carichi di lavoro di calcolo. Per ulteriori informazioni, consulta la Panoramica delle VM riservate.