In un’interpretazione indiretta del principio di Kerckhoff nella crittografia – un sistema crittografico dovrebbe rimanere sicuro anche se tutto sul sistema, tranne la chiave, è noto all’attaccante.
Questo principio è la base di una verità importante sulla sicurezza moderna, ovvero l’oscurità non equivale necessariamente a protezione. Allo stesso modo, la containerizzazione, uno strumento potente nel deployment moderno del software, può prevenire movimenti laterali all’interno di una rete se implementata correttamente, ma non impedisce che un’applicazione all’interno del container venga compromessa.
I container offrono praticità, ma senza una sicurezza solida, comportano anche dei rischi. Non sorprende che il 60% delle immagini container in esecuzione in ambienti di produzione sia affetto da vulnerabilità note, creando una porta aperta alle minacce informatiche.
Come proteggere quindi i container da possibili violazioni? La risposta parte da una checklist completa per la sicurezza dei container che affronti le vulnerabilità a ogni livello, assicurando che nessuna lacuna rimanga esposta.
In questo articolo, condividiamo una checklist per la sicurezza dei container e alcune best practice che ti aiuteranno a creare una fortezza impenetrabile per proteggere i tuoi container.
Cos’è la sicurezza dei container?
La sicurezza dei container è il processo di protezione delle applicazioni containerizzate, insieme all’infrastruttura che le supporta, da vulnerabilità e minacce durante tutto il loro ciclo di vita.
Ciò include la protezione dell’intero stack, dal motore dei container, al sistema operativo host, alla piattaforma di orchestrazione (come Kubernetes) fino ai container stessi.
Una parte fondamentale della sicurezza dei container è la scansione continua, a partire dalle immagini di base fino al codice applicativo all’interno dei container.
Dovresti monitorare attivamente i rischi in fase di runtime che potrebbero indicare un attacco, assicurandoti che le immagini container utilizzate provengano da fonti affidabili e siano prive di vulnerabilità note.
Devi inoltre eseguire l’isolamento del container in modo impeccabile. Ricontrolla eventuali punti deboli—escalation dei privilegi, reti configurate in modo errato, e così via.
Esistono diverse altre misure che puoi adottare per eliminare attivamente le minacce dal tuo ambiente. Con un set solido di protocolli o checklist per la sicurezza dei container che includano una gamma di pratiche, strumenti e policy, puoi proteggere l’intero ciclo di vita del container—dallo sviluppo e deployment fino al runtime e alla dismissione.
Importanza di una checklist per la sicurezza dei container
Gli ambienti container sono un labirinto di componenti in movimento. E se vuoi gestirne la sicurezza, hai bisogno di un sistema. Tenere a portata di mano linee guida o checklist può ridurre il tempo necessario per distribuire con successo un container Docker o Kubernetes completamente sicuro.
Oltre a risparmiare tempo, una checklist di sicurezza offre diversi altri vantaggi:
- Standardizzazione: Standardizzare ogni fase del ciclo di vita del container è fondamentale per garantire uniformità ed evitare errori critici. Quando si lavora in team, c’è sempre il rischio di errore umano. Disporre di linee guida chiare sulle attività mantiene tutti allineati e aiuta a far funzionare tutto senza intoppi.
- Copertura completa: Gli ambienti containerizzati hanno diversi elementi costitutivi, come immagini, registry, reti e runtime. Effettuare un controllo prima che questi elementi vengano introdotti nel sistema dovrebbe essere obbligatorio. Questo può includere la scansione delle immagini, i controlli di accesso, la segmentazione della rete e il monitoraggio del runtime.
- Efficienza e coerenza: Una checklist è un ulteriore passo per garantire la sicurezza del container, offrendo alle operazioni un vantaggio in termini di efficacia e coerenza. Inoltre, i team avranno un punto di riferimento sulle best practice di sicurezza, riducendo così la possibilità di saltare un passaggio.
- Conformità: Considerando il crescente numero di minacce informatiche e violazioni dei dati, governi e organismi di regolamentazione hanno stabilito requisiti normativi stringenti. Una checklist ben definita per la sicurezza dei container aiuta a garantire la conformità applicando best practice come il controllo degli accessi basato sui ruoli (RBAC), la scansione delle immagini e l’adesione ai benchmark CIS per Docker e Kubernetes. Garantisce inoltre la registrazione e il monitoraggio per gli audit e soddisfa i requisiti di framework come GDPR, HIPAA o PCI-DSS.
- Mitigazione proattiva delle minacce: È sempre una buona idea esaminare l’intero ciclo di vita del container due volte prima del deployment, e una checklist ti aiuta a farlo. Il primo passaggio assicura che tutte le misure di sicurezza siano implementate, mentre il secondo serve come fase di validazione per individuare eventuali configurazioni mancanti o minacce emergenti prima che diventino problemi critici.
Le 10 checklist chiave per la sicurezza dei container
Ora che abbiamo chiarito l’importanza della checklist per la sicurezza dei container, è il momento di approfondire e capire quali controlli di sicurezza devi implementare.
Ecco una checklist di sicurezza per Docker e Kubernetes che elenca in modo conciso tutti i passaggi che il tuo protocollo di sicurezza deve includere:
Sicurezza delle immagini
- Utilizza immagini di base affidabili e verificate da repository ufficiali.
- Limita chi può caricare/scaricare immagini dal registry
- Esegui regolarmente la scansione delle immagini container per individuare vulnerabilità.
- Blocca il deployment di immagini vulnerabili o limita il loro accesso alla rete
- Rileva dati sensibili come chiavi o token prima di caricare le immagini
- Assicurati che le immagini siano minimali, contenenti solo le dipendenze necessarie.
- Implementa patching e aggiornamenti automatici delle immagini.
Accesso e permessi
- Evita di eseguire i container con privilegi di root.
- Impedisci ai container di ottenere privilegi eccessivi o di effettuare chiamate di sistema non necessarie.
- Applica il principio del privilegio minimo per container e utenti.
- Controlla quali container possono modificare file o directory specifici.
- Utilizza PodSecurity Admission per limitare l’accesso a capacità e risorse sensibili.
- Utilizza il controllo degli accessi basato sui ruoli (RBAC) per limitare l’accesso a endpoint API critici e azioni sulle risorse dei container come `get`, `list`, `watch`, o `secrets.`
- Utilizza la multi-factor authentication (MFA) per accedere agli ambienti container.
Sicurezza della rete
- Isola i container utilizzando la segmentazione della rete (ad es. policy di rete Docker).
- Proteggi i servizi esposti al pubblico filtrando il traffico su porte e protocolli diversi.
- Utilizza comunicazioni cifrate (ad es. TLS) per i dati in transito.
- Utilizza controlli Layer 7 con un service mesh e ispezione approfondita dei pacchetti per applicare policy HTTP/HTTPS.
- Limita il traffico Layer 3 e 4 utilizzando controlli di accesso basati su IP e porte per limitare l’accesso.
- Certifica che il plugin Container Network Interface (CNI) scelto supporti le Network Policies di Kubernetes.
- Applica policy di rete ingress ed egress a tutti i workload, con policy predefinite che negano tutto il traffico.
- Assicurati che i componenti critici (Kubernetes API, Kubelet API, ecc.) non siano esposti pubblicamente.
- Cifra il traffico e utilizza Mutual TLS (mTLS) per autenticare la comunicazione tra workload all’interno dei cluster.
Sicurezza in fase di runtime
- Monitora il comportamento dei container in runtime per attività sospette.
- Limita l’accesso dei container alle risorse dell’host utilizzando moduli di sicurezza Linux.
- Implementa limiti alle risorse (CPU, memoria) per prevenire attacchi di denial-of-service.
- Limita l’accesso alle API e ai demoni in runtime per evitare manomissioni dei container attivi.
- Registra e audita tutte le attività dei container in tempo reale.
Gestione delle vulnerabilità e delle patch
- Esegui regolarmente la scansione di container e sistemi host per individuare vulnerabilità.
- Scansiona i file di configurazione per la conformità nella pipeline di integrazione continua e integra controlli automatici per la rilevazione di configurazioni errate.
- Utilizza la firma delle immagini (Docker Content Trust) per verificare l’integrità delle immagini container.
- Esegui analisi statica del codice per individuare vulnerabilità nel codice applicativo e nelle sue dipendenze.
Gestione dei segreti
- Archivia i dati sensibili (API key, password) in strumenti di gestione dei segreti.
- Evita di inserire segreti hard-coded nelle immagini container o nelle variabili d’ambiente.
- Esegui audit periodici e verifica chi ha accesso alle API dei segreti e ruota le chiavi di cifratura.
- Cifra i dati a riposo configurando il server API di Kubernetes per cifrare i dati dei segreti in etcd, per un ulteriore livello di protezione.
- Configura i token con periodi di scadenza più brevi per ridurre l’impatto di un token compromesso.
Sicurezza dell’orchestrazione
- Proteggi gli orchestrator dei container (ad es. Docker) con controlli di accesso rigorosi.
- Abilita il controllo degli accessi basato sui ruoli (RBAC) e garantisci il privilegio minimo per utenti e service account.
- Implementa il controllo di versione (come Git) per le definizioni e le configurazioni dei servizi dell’orchestrator.
- Abilita la registrazione di tutte le richieste API al control plane dell’orchestrator (ad esempio, audit log in Kubernetes)
Configurazione sicura
- Disabilita servizi o porte non necessari nei container.
- Utilizza file system in sola lettura per i container che non necessitano di accesso in scrittura.
- Assicurati che i container siano stateless e immutabili quando possibile.
Backup e disaster recovery
- Esegui regolarmente il backup delle configurazioni dei container e dei dati applicativi.
- Assicurati che i backup siano consistenti utilizzando i comandi di salvataggio snapshot di etcd per eseguire backup puntuali.
- Esegui simulazioni di disaster recovery in cui si forza il guasto di un componente del cluster e si verifica che il processo di ripristino funzioni come previsto.
Conformità e auditing
- Garantisci la conformità agli standard di sicurezza del settore (ad es. GDPR, PCI-DSS).
- Audita regolarmente le policy di sicurezza dei container, i log e le configurazioni dei controlli di accesso.
- Esegui regolarmente penetration test di sicurezza sugli ambienti container.
Guida al mercato CNAPP
La guida di mercato Gartner per le piattaforme di protezione delle applicazioni cloud-native fornisce informazioni chiave sullo stato del mercato delle CNAPP.
Leggi la guidaBest practice per la sicurezza dei container
Sebbene ti abbiamo fornito una checklist per la sicurezza dei container, ecco alcune best practice che rafforzano i tuoi ambienti containerizzati:
- Utilizza immagini di base affidabili: La base del tuo container sono le immagini. Assicurati quindi di ottenerle da una fonte affidabile. Scegli anche uno strumento di scansione automatica delle immagini e patching regolare. Utilizza strumenti che si integrano direttamente nella pipeline CI/CD per controllare le immagini di base in ogni fase.
- Applica il principio del privilegio minimo: Tieni sotto controllo i privilegi dei container. Evita di eseguire i container come root e limita l’accesso alle risorse di sistema per prevenire potenziali vettori di minaccia. Utilizza i benchmark CIS per rafforzare l’OS host assicurando che siano attivi solo i servizi minimi e considera strumenti come SentinelOne per ridurre la superficie di attacco a livello di chiamata di sistema. Questo è importante poiché i container condividono il kernel dell’host.
- Proteggi l’Infrastructure as Code (IaC): Per evitare che configurazioni rischiose raggiungano la produzione, puoi utilizzare template IaC come i manifest Kubernetes che eseguono la scansione di violazioni di policy e configurazioni errate (come ruoli IAM troppo permissivi o porte esposte) prima del deployment.
- Rafforza la configurazione cloud: Garantire l’isolamento delle risorse cloud tramite VPC e reti private, e rafforza i servizi cloud utilizzando il controllo degli accessi a privilegio minimo. Implementa il monitoraggio continuo delle configurazioni errate nel cloud (come bucket S3 aperti o interfacce di gestione esposte).
- Riduci le vulnerabilità esterne: Le vulnerabilità nelle dipendenze di terze parti (spesso rilevate durante la build) possono introdurre debolezze nelle applicazioni. Puoi automatizzare la scansione delle dipendenze per CVE noti sia nelle dipendenze OS che applicative. Aggiorna regolarmente librerie e pacchetti.
- Controlli di benchmark per orchestrator e runtime: Utilizza controlli di sicurezza dell’orchestrator come i controller di ammissione Kubernetes per applicare policy di sicurezza prima del deployment. Implementa controlli di benchmark in runtime (ad es. benchmark CIS Kubernetes) per audit regolari sia sugli orchestrator che sui container in esecuzione.
- Segmentazione della rete: Crea e applica policy per controllare il traffico dei container e ridurre la superficie di attacco. La micro-segmentazione dei workload containerizzati limita l’impatto di una violazione e migliora la sicurezza della rete.
- Limitazione delle risorse: Applicando limiti alle risorse di CPU, memoria e storage di ciascun container, puoi evitare che un container esaurisca le risorse di sistema. Se le risorse di sistema vengono esaurite, potresti avere problemi di servizio e altre criticità operative.
- Monitora e registra le attività: Devi rispondere alle minacce di sicurezza in tempo reale. Utilizza strumenti che offrano visibilità sul comportamento dei container, consentendoti di identificare e mitigare rapidamente le minacce.
- Proteggi la pipeline CI/CD: Assicurati che la pipeline CI/CD sia sicura integrando controlli di sicurezza in ogni fase del ciclo di vita del container, dal commit del codice al deployment. Questo aiuta a prevenire l’introduzione di vulnerabilità durante lo sviluppo.
- Automatizza gli aggiornamenti di sicurezza: Utilizza strumenti di automazione per applicare patch e aggiornamenti di sicurezza a container e orchestrator senza causare downtime.
- Conformità e enforcement delle policy: Audita regolarmente i container per garantire la conformità alle policy organizzative e normative. Utilizza strumenti di enforcement delle policy per applicare le regole di sicurezza in tutti gli ambienti e mantenere standard e conformità coerenti.
Errori comuni nella sicurezza dei container da evitare
Nel febbraio 2019, il team Docker ha annunciato pubblicamente la vulnerabilità CVE-2019-5736. A causa di questa debolezza, gli attaccanti potevano sovrascrivere il binario dell’host, ottenere accesso al sistema host ed eseguire comandi come root all’interno di un container.
Diverse organizzazioni, tra cui AWS, RedHat e Microsoft Azure, hanno individuato questa vulnerabilità e applicato patch ai loro prodotti.
Nel 2021, la vulnerabilità CVE-2021-3490 ha sfruttato una falla nel kernel Linux relativa all’extended Berkeley Packet Filter (eBPF).
Questa debolezza consentiva agli attaccanti di eseguire codice arbitrario sull’host da container compromessi che avevano accesso a eBPF tramite i profili seccomp predefiniti di Kubernetes. Questi profili non limitavano le syscall richieste, lasciando alcune configurazioni esposte.
Questi incidenti dimostrano che anche una piccola disattenzione nella sicurezza dei container può compromettere l’integrità delle applicazioni ed esporre l’ambiente a rischi.
Altri errori comuni nella sicurezza dei container da evitare sono:
- Supporre che le immagini pubbliche siano sicure può portare a deployment compromessi. Non fidarti mai di immagini esterne senza una revisione approfondita da parte di sviluppatori esperti.
- Esporre i container a troppi canali aperti aumenta la superficie di attacco. Evita di lasciare i container esposti con permessi di root e rivedi le interazioni di rete per individuare possibili punti deboli.
- Non verificare e scansionare le librerie di codice per vulnerabilità prima di integrarle nei container
- Non mantenere registri accurati delle attività di logging può rendere difficile individuare rapidamente i problemi di sicurezza.
- Ignorare la sicurezza della pipeline CI/CD, ad esempio saltando i controlli di sicurezza durante la build e il deployment, può introdurre vulnerabilità già nelle prime fasi di sviluppo.
SentinelOne Cloud Workload Security per container
Hai bisogno di una strategia unificata su tutti i nodi per proteggere efficacemente tutti i tuoi ambienti containerizzati. Q2 è un importante fornitore di servizi finanziari per oltre 1200 banche, unioni e istituzioni finanziarie. Con oltre 22 milioni di utenti finali e 65.000 container nel cloud pubblico, Q2 ha implementato SentinelOne Cloud Workload Security per container in tutti i suoi ambienti. E come Q2, anche tu puoi beneficiare di numerose funzionalità e vantaggi di questa soluzione, restare sempre aggiornato su eventuali anomalie e mantenere una postura di sicurezza solida.
Funzionalità e vantaggi principali
- Protezione completa dei workload in ambienti cloud ibridi e multi-cloud, inclusi AWS, Azure, GCP e data center on-premises
- Blocca ransomware, exploit zero-day, crypto miner e attacchi fileless
- Architettura agent eBPF che offre visibilità in tempo reale a livello di processo del sistema operativo, fornendo telemetria approfondita senza dipendere da moduli kernel
- Motore Static AI che analizza le architetture dei file sfruttando un dataset di oltre 500 milioni di firme malware
- Motore Behavioral AI che utilizza analisi temporale, valutando i pattern nel tempo per rilevare comportamenti malevoli che possono sfuggire al rilevamento statico
- Rilevamento in tempo reale di attacchi a velocità macchina su server VMS, container e Kubernetes
- Ripristino automatico, per la massima disponibilità dei workload
- Accelera le indagini e l’IR, potenzia le attività di threat hunting
- Workload Flight Data RecorderTM.
- Accelera l’innovazione con la sicurezza in runtime che non ostacola le operazioni.
- Nessuna dipendenza dal kernel. Basso impatto su CPU e memoria.
- Architettura eBPF, per stabilità e performance
- Supporta Docker, container e runtime cri-o
- Protezione auto-scalabile
- CWPP in tempo reale
- Supporta servizi K8s gestiti e self-managed
- Supporta 14 principali distribuzioni Linux, inclusa Amazon Linux 2023
- Integrazione con Snyk (acquistabile separatamente)
Inoltre, la Cloud-Native Application Protection Platform (CNAPP) di SentinelOne ti aiuta a rafforzare la sicurezza dei container con funzionalità come Kubernetes Security Posture Management (KSPM) e Cloud Security Posture Management (CSPM), assicurando che le tue applicazioni cloud-native rimangano conformi e sicure.
Protezione dei carichi di lavoro cloud (CWPP) basata su AI per server, VM e container, che rileva e blocca le minacce in tempo reale durante l'esecuzione.
FAQ
Per garantire la sicurezza dei container, è necessario adottare un approccio ampio che copra diversi livelli. Inizia da:
- Utilizzare immagini di base affidabili e sottoporle frequentemente a scansioni per le vulnerabilità, mantenendo le immagini minimali per ridurre la superficie di attacco.
- Applicare il principio del privilegio minimo limitando i container solo alle autorizzazioni necessarie e senza mai eseguirli come root.
- Monitorare continuamente l'attività dei container in tempo reale per rilevare comportamenti sospetti ed eseguire scansioni delle vulnerabilità in ogni fase, dalla build all'esecuzione.
- Infine, assicurarsi che l'host e l'orchestratore siano adeguatamente rafforzati con patch di sicurezza e policy di rete per limitare la comunicazione tra container e ridurre le potenziali minacce.
La Container Security Initiative (CSI) comprende sette elementi principali. Questi includono:
- Analisi delle immagini
- Protezione del runtime
- Controllo degli accessi
- Protezione delle reti
- Gestione della conformità
- Monitoraggio
- Risposta agli incidenti.
SentinelOne Singularity Cloud Workload Security (CWS) svolge un ruolo fondamentale nella sicurezza dei container. Protegge le applicazioni containerizzate durante tutto il loro ciclo di vita. La piattaforma automatizza la protezione del runtime, gestisce le vulnerabilità e applica la conformità. Funziona con Kubernetes e altri sistemi per monitorare e proteggere i container in tempo reale, sia in cloud pubblici che privati.
Il ciclo di vita della sicurezza dei container comprende cinque fasi principali:
- Sicurezza delle immagini: Inizia con immagini verificate sicure e controllale spesso per individuare vulnerabilità.
- Sicurezza della build: Assicurati che il processo di build del container segua regole e metodologie sicure.
- Sicurezza del deployment: Applica policy di sicurezza, concedi solo i privilegi minimi necessari e configura reti sicure durante il rilascio dei container.
- Sicurezza in fase di esecuzione: Monitora i container per rilevare comportamenti anomali, applica policy di sicurezza in fase di runtime e mantieni la separazione delle reti.
- Decommissioning: Disattiva i container assicurandoti di eliminare tutti i dati sensibili.

