Questo principio del pilastro della sicurezza del Google Cloud framework Well-Architected ti aiuta a identificare controlli pratici che puoi implementare nelle prime fasi del ciclo di vita dello sviluppo del software per migliorare la tua postura di sicurezza. Fornisce consigli che ti aiutano a implementare barriere di sicurezza preventive e controlli di sicurezza post-deployment.
Panoramica del principio
Shift-left security significa adottare pratiche di sicurezza nelle prime fasi del ciclo di vita di sviluppo del software. Questo principio ha i seguenti obiettivi:
- Evita difetti di sicurezza prima di apportare modifiche al sistema. Implementa misure protettive per la sicurezza preventive e adotta pratiche come Infrastructure as Code (IaC), Policy as Code e controlli di sicurezza nella pipeline CI/CD. Puoi anche utilizzare altre funzionalità specifiche della piattaforma, come Organization Policy Service e cluster GKE rafforzati in Google Cloud.
- Rileva e correggi i bug di sicurezza in modo rapido, affidabile e tempestivo dopo l'applicazione di qualsiasi modifica al sistema. Adotta pratiche come le revisioni del codice, analisi delle vulnerabilità post-deployment e i test di sicurezza.
I principi Implementa la sicurezza by design e Shift-Left Security sono correlati, ma differiscono per ambito. Il principio della sicurezza by design ti aiuta a evitare difetti di progettazione fondamentali che richiederebbero la riprogettazione dell'intero sistema. Ad esempio, un esercizio di modellazione delle minacce rivela che la progettazione attuale non include un criterio di autorizzazione e che tutti gli utenti avrebbero lo stesso livello di accesso senza di esso. La sicurezza shift-left ti aiuta a evitare difetti di implementazione (bug ed errori di configurazione) prima che vengano applicate le modifiche e consente correzioni rapide e affidabili dopo la distribuzione.
Consigli
Per implementare il principio di sicurezza shift-left per i tuoi workload cloud, prendi in considerazione i suggerimenti nelle sezioni seguenti:
- Adottare controlli di sicurezza preventivi
- Automatizzare il provisioning e la gestione delle risorse cloud
- Automatizzare le release sicure delle applicazioni
- Assicurarsi che i deployment delle applicazioni seguano i processi approvati.
- Esegui la scansione per verificare la presenza di vulnerabilità note prima del deployment dell'applicazione
- Monitorare il codice dell'applicazione per verificare la presenza di vulnerabilità note
Adottare controlli di sicurezza preventivi
Questo consiglio è pertinente alle seguenti aree di interesse:
- Gestione di identità e accessi
- Governance, rischio e conformità del cloud
I controlli di sicurezza preventivi sono fondamentali per mantenere una solida postura di sicurezza nel cloud. Questi controlli ti aiutano a ridurre i rischi in modo proattivo. Puoi prevenire configurazioni errate e accessi non autorizzati alle risorse, consentire agli sviluppatori di lavorare in modo efficiente e contribuire a garantire la conformità agli standard di settore e alle norme interne.
I controlli di sicurezza preventivi sono più efficaci se implementati utilizzando Infrastructure as Code (IaC). Con IaC, i controlli di sicurezza preventivi possono includere controlli più personalizzati sul codice dell'infrastruttura prima del deployment delle modifiche. Se combinati con l'automazione, i controlli di sicurezza preventivi possono essere eseguiti come parte dei controlli automatici della pipeline CI/CD.
I seguenti prodotti e funzionalità possono aiutarti a implementare controlli preventivi nel tuo ambiente: Google Cloud
- Vincoli del servizio Policy dell'organizzazione: configura vincoli predefiniti e personalizzati con controllo centralizzato.
- Controlli di servizio VPC: crea perimetri intorno ai tuoi servizi Google Cloud .
- Identity and Access Management (IAM), Privileged Access Manager, e policy di Principal Access Boundary: limitano l'accesso alle risorse.
- Policy Controller e Open Policy Agent (OPA): applica i vincoli IaC nella pipeline CI/CD ed evita errori di configurazione del cloud.
IAM ti consente di autorizzare chi può agire su risorse specifiche in base alle autorizzazioni. Per saperne di più, consulta la pagina Controllo dell'accesso per le risorse dell'organizzazione con IAM.
Il servizio Criteri dell'organizzazione consente di impostare restrizioni sulle risorse per specificare come possono essere configurate. Ad esempio, puoi utilizzare un criterio dell'organizzazione per quanto segue:
- Limitare la condivisione delle risorse in base al dominio.
- Limita l'utilizzo dei service account.
- Limitare la posizione fisica delle risorse appena create.
Oltre a utilizzare i criteri dell'organizzazione, puoi limitare l'accesso alle risorse utilizzando i seguenti metodi:
- Tag con IAM: assegna un tag a un insieme di risorse e poi imposta la definizione di accesso per il tag stesso, anziché definire le autorizzazioni di accesso per ogni risorsa.
- Condizioni IAM: definiscono controllo dell'accesso condizionale basato su attributi per le risorse.
- Difesa in profondità: utilizza Controlli di servizio VPC per limitare ulteriormente l'accesso alle risorse.
Per ulteriori informazioni sulla gestione delle risorse, vedi Decidere una gerarchia delle risorse per la tua Google Cloud landing zone.
Automatizza il provisioning e la gestione delle risorse cloud
Questo consiglio è pertinente alle seguenti aree di interesse:
- Sicurezza delle applicazioni
- Governance, rischio e conformità del cloud
L'automazione del provisioning e della gestione delle risorse e dei carichi di lavoro cloud è più efficace quando adotti anche IaC dichiarativa, anziché scripting imperativo. IaC non è uno strumento o una pratica di sicurezza in sé, ma ti aiuta a migliorare la sicurezza della tua piattaforma. L'adozione di IaC consente di creare un'infrastruttura ripetibile e fornisce al team operativo uno stato noto e valido. Inoltre, IaC migliora l'efficienza dei rollback, delle modifiche di controllo e della risoluzione dei problemi.
Se combinata con pipeline CI/CD e automazione, IaC ti offre anche la possibilità di adottare pratiche come policy as code con strumenti come OPA. Puoi controllare le modifiche all'infrastruttura nel tempo ed eseguire controlli automatici sul codice dell'infrastruttura prima che vengano implementate le modifiche.
Per automatizzare il deployment dell'infrastruttura, puoi utilizzare strumenti come Config Controller, Terraform, Jenkins e Cloud Build. Per aiutarti a creare un ambiente applicativo sicuro utilizzando IaC e l'automazione, Google Cloud fornisce il progetto base per le fondamenta aziendali. Questo progetto è la progettazione soggettiva di Google che segue tutte le nostre pratiche e configurazioni consigliate. Il blueprint fornisce istruzioni passo passo per configurare e implementare la topologia Google Cloud utilizzando Terraform e Cloud Build.
Puoi modificare gli script del progetto base per le fondamenta dell'impresa per configurare un ambiente che segua i consigli di Google e soddisfi i tuoi requisiti di sicurezza. Puoi sviluppare ulteriormente il progetto con altri progetti o progettare la tua automazione. Il Google Cloud Architecture Center fornisce altri progetti che possono essere implementati sopra il progetto di fondazione dell'azienda. Di seguito sono riportati alcuni esempi di questi progetti:
- Esegui il deployment di una piattaforma aziendale per sviluppatori su Google Cloud
- Esegui il deployment di un'architettura serverless sicura utilizzando Cloud Run
- Crea ed esegui il deployment di modelli di AI generativa e machine learning in un'azienda
- Importare dati da Google Cloud in un data warehouse BigQuery protetto
Automatizzare le release sicure delle applicazioni
Questo consiglio è pertinente alla seguente area di interesse: Sicurezza delle applicazioni.
Senza strumenti automatizzati, può essere difficile implementare, aggiornare e applicare patch ad ambienti applicativi complessi per soddisfare requisiti di sicurezza coerenti. Ti consigliamo di creare pipeline CI/CD automatizzate per il ciclo di vita dello sviluppo del software (SDLC). Le pipeline CI/CD automatizzate ti aiutano a eliminare gli errori manuali, forniscono cicli di feedback di sviluppo standardizzati e consentono iterazioni efficienti del prodotto. La continuous delivery è una delle best practice consigliate dal framework DORA.
L'automazione dei rilasci delle applicazioni tramite le pipeline CI/CD consente di migliorare la tua capacità di rilevare e correggere i bug di sicurezza in modo rapido, affidabile e tempestivo. Ad esempio, puoi eseguire automaticamente la scansione delle vulnerabilità di sicurezza quando vengono creati gli artefatti, restringere l'ambito delle revisioni di sicurezza ed eseguire il rollback a una versione nota e sicura. Puoi anche definire criteri per ambienti diversi (ad esempio ambienti di sviluppo, test o produzione) in modo che vengano implementati solo gli artefatti verificati.
Per aiutarti ad automatizzare le release delle applicazioni e a incorporare i controlli di sicurezza nella pipeline CI/CD, Google Cloud fornisce più strumenti, tra cui Cloud Build, Cloud Deploy, Web Security Scanner e Autorizzazione binaria.
Per stabilire un processo che verifichi più requisiti di sicurezza nel tuo SDLC, utilizza il framework Supply-chain Levels for Software Artifacts (SLSA), definito da Google. SLSA richiede controlli di sicurezza per il codice sorgente, il processo di compilazione e la provenienza del codice. Molti di questi requisiti possono essere inclusi in una pipeline CI/CD automatizzata. Per capire in che modo Google applica internamente queste pratiche, consulta l'approccio diGoogle Cloudal cambiamento.
Assicurarsi che i deployment delle applicazioni seguano i processi approvati.
Questo consiglio è pertinente alla seguente area di interesse: Sicurezza delle applicazioni.
Se un malintenzionato compromette la pipeline CI/CD, l'intero stack di applicazioni può essere interessato. Per proteggere la pipeline, devi applicare un processo di approvazione stabilito prima di eseguire il deployment del codice in produzione.
Se utilizzi Google Kubernetes Engine (GKE), GKE Enterprise o Cloud Run, puoi stabilire una procedura di approvazione utilizzando l'autorizzazione binaria. Autorizzazione binaria associa firme configurabili alle immagini container. Queste firme (chiamate anche attestazioni) contribuiscono a convalidare l'immagine. Al momento del deployment, Autorizzazione binaria utilizza queste attestazioni per determinare se un processo è stato completato. Ad esempio, puoi utilizzare Autorizzazione binaria per eseguire le seguenti operazioni:
- Verifica che un sistema di compilazione o una pipeline CI specifici abbiano creato un'immagine container.
- Verifica che un'immagine container sia conforme a una policy di firma delle vulnerabilità.
- Verifica che un'immagine container soddisfi i criteri per la promozione all'ambiente di deployment successivo, ad esempio dallo sviluppo al QA.
Utilizzando l'autorizzazione binaria, puoi imporre l'esecuzione solo di codice attendibile sulle piattaforme di destinazione.
Eseguire la scansione per rilevare vulnerabilità note prima del deployment dell'applicazione
Questo consiglio è pertinente alla seguente area di interesse: Sicurezza delle applicazioni.
Ti consigliamo di utilizzare strumenti automatizzati in grado di eseguire continuamente scansioni delle vulnerabilità sugli artefatti dell'applicazione prima del deployment in produzione.
Per le applicazioni containerizzate, utilizza Artifact Analysis per eseguire automaticamente le scansioni delle vulnerabilità per le immagini container. Artifact Analysis esegue la scansione delle nuove immagini quando vengono caricate in Artifact Registry. La scansione estrae informazioni sui pacchetti di sistema nel contenitore. Dopo la scansione iniziale, Artifact Analysis monitora continuamente i metadati delle immagini analizzate in Artifact Registry per rilevare nuove vulnerabilità. Quando Artifact Analysis riceve informazioni nuove e aggiornate sulle vulnerabilità dalle origini delle vulnerabilità, esegue le seguenti operazioni:
- Aggiorna i metadati delle immagini scansionate per mantenerli aggiornati.
- Crea nuove occorrenze di vulnerabilità per le nuove note.
- Elimina le occorrenze di vulnerabilità non più valide.
Monitorare il codice dell'applicazione per verificare la presenza di vulnerabilità note.
Questo consiglio è pertinente alla seguente area di interesse: Sicurezza delle applicazioni.
Utilizza strumenti automatizzati per monitorare costantemente il codice dell'applicazione alla ricerca di vulnerabilità note, come quelle dell'OWASP Top 10. Per saperne di più sui Google Cloud prodotti e sulle funzionalità che supportano le tecniche di mitigazione OWASP Top 10, consulta Opzioni di mitigazione OWASP Top 10 su Google Cloud.
Utilizza Web Security Scanner per identificare le vulnerabilità di sicurezza nelle tue applicazioni web App Engine, Compute Engine e GKE. Lo scanner esegue la scansione dell'applicazione, segue tutti i link nell'ambito degli URL di partenza e tenta di attivare il maggior numero possibile di input utente e gestori di eventi. Può eseguire automaticamente la scansione e rilevare vulnerabilità comuni, tra cui cross-site scripting, code injection, contenuti misti e librerie obsolete o non sicure. Web Security Scanner fornisce l'identificazione precoce di questi tipi di vulnerabilità senza distrarti con falsi positivi.
Inoltre, se utilizzi GKE Enterprise per gestire parchi risorse di cluster Kubernetes, la dashboard sulla postura di sicurezza mostra suggerimenti attendibili e strategici per migliorare la postura di sicurezza del tuo parco risorse.