Implementare la sicurezza by design

Last reviewed 2025-02-05 UTC

Questo principio del pilastro della sicurezza del Google Cloud Well-Architected Framework fornisce consigli per incorporare funzionalità, controlli e pratiche di sicurezza robusti 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 Panoramica dell'impegno di Google per la sicurezza by design, sicurezza per impostazione predefinita e sicurezza by design vengono 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 a migliorare la sicurezza, ma differiscono per ambito e implementazione:

  • Sicurezza 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.
  • Sicurezza by design: sottolinea l'incorporamento proattivo delle considerazioni sulla sicurezza durante il ciclo di vita di sviluppo di un sistema. Questo approccio consiste nell'anticipare potenziali minacce e vulnerabilità e nel fare scelte di progettazione che mitighino i rischi. Questo approccio prevede l'utilizzo di pratiche di codifica sicura, l'esecuzione di revisioni di sicurezza e l'integrazione della sicurezza nel processo di progettazione. L'approccio progettato per la sicurezza è 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 carichi di lavoro cloud, prendi in considerazione i consigli nelle sezioni seguenti:

Scegli i componenti di sistema che contribuiscono a proteggere i carichi di lavoro

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 piattaforma, la soluzione o il 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, astrazioni e framework applicativi semplici, sicuri e affidabili per eliminare le classi di vulnerabilità. Per eseguire la scansione delle 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 rete, 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 rivolti a internet sia per quelli interni.

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 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 piattaforma. Per limitare l'accesso e identificare i limiti del potenziale impatto (ovvero il raggio di impatto) in caso di incidente di sicurezza:

  • Semplifica la progettazione del sistema per consentire la flessibilità, ove possibile.
  • Documenta i requisiti di sicurezza di ogni componente.
  • Incorpora un meccanismo sicuro e robusto 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 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 relativi controlli di sicurezza per mitigarli.

Quando esegui la valutazione dei rischi, ricorda che hai un accordo di responsabilità condivisa con il tuo fornitore 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, il fornitore di servizi cloud si assume questi rischi. Inoltre, ricorda che i limiti delle responsabilità condivise variano tra i servizi IaaS, PaaS e SaaS per ogni fornitore di servizi 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 delle applicazioni OWASP, ti aiuta a identificare potenziali lacune e suggerisce azioni per colmarle.

Utilizza infrastrutture e servizi protetti e attestati

Questo consiglio è pertinente per tutte le aree di interesse.

Un programma di sicurezza maturo mitiga le nuove vulnerabilità come descritto nei bollettini di sicurezza. Il programma di sicurezza deve anche fornire una correzione per risolvere le vulnerabilità nei deployment esistenti e proteggere le immagini VM e container. Puoi utilizzare guide di protezione specifiche per il sistema operativo e l'applicazione delle immagini, nonché benchmark come quello fornito dal Center of Internet Security (CIS).

Se utilizzi immagini personalizzate per le VM Compute Engine, devi applicare le patch alle immagini. In alternativa, puoi utilizzare le immagini del sistema operativo curate da Google , a cui vengono applicate regolarmente le patch. 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 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 a cui vengono applicate automaticamente le patch. 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 carichi di lavoro sensibili, utilizza Shielded VM, che impedisce il caricamento di codice dannoso durante il ciclo di avvio della VM. Le istanze Shielded VM forniscono sicurezza di avvio, monitorano l'integrità e utilizzano il Virtual Trusted Platform Module (vTPM).

Per proteggere l'accesso SSH, OS Login consente ai dipendenti di connettersi alle VM utilizzando le autorizzazioni Identity and Access Management (IAM) come fonte di verità 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 con il 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 senza stato e immutabili. Il principio di immutabilità significa che i dipendenti non modificano il container né vi accedono in modo interattivo. Se il container deve essere modificato, crei una nuova immagine ed esegui di nuovo il deployment di questa immagine. Abilita l'accesso SSH ai container sottostanti solo in scenari di debug specifici.

Per proteggere a livello globale le configurazioni nel tuo ambiente, puoi utilizzare le policy dell'organizzazione per impostare vincoli o guardrail 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' Google Cloud organizzazione 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 località geografiche specifiche.
  • Disattiva la creazione di service account o delle relative chiavi.

Cripta 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 fondamentale per proteggere le informazioni sensibili e una parte fondamentale della governance dei dati. Una strategia di protezione dei dati efficace include il controllo dell'accesso, la segmentazione dei dati e la residenza geografica, l'audit e l'implementazione della crittografia basata su una valutazione accurata dei requisiti.

Per impostazione predefinita, Google Cloud cripta i dati dei clienti archiviati a riposo, senza che tu debba compiere alcuna azione. 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 alle tue esigenze in termini di generazione, archiviazione e rotazione delle chiavi, sia che tu scelga le chiavi per l'archiviazione, il calcolo o 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 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).

Ti 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 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 by using funzionalità di sicurezza like TLS e mTLS configurations in Apigee and Cloud Service Mesh for applicazioni containerizzate.

Per impostazione predefinita, Google Cloud cripta i dati at-rest e in transito su lla 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 le 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 carichi di lavoro di calcolo. Per ulteriori informazioni, consulta la panoramica di Confidential VM.