Cos'è la sicurezza dei container?

Gruppo multietnico eterogeneo di persone che fissano gli schermi dei computer

Autori

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Cos'è la container security?

La sicurezza dei container protegge le applicazioni containerizzate e l'infrastruttura sottostante durante l'intero ciclo di vita dello sviluppo software, dalla compilazione alla distribuzione e al tempo di esecuzione.

La sicurezza dei container mira a migliorare le misure di protezione e a ridurre al minimo i rischi per la sicurezza.

Anzitutto, chiariamo di cosa stiamo parlando, perché il termine "sicurezza dei container" può avere molteplici significati. I container sono unità software autosufficienti che impacchettano il codice dell'applicazione con tutte le necessarie librerie e dipendenze. Consentono l'esecuzione del codice in qualsiasi ambiente informatico, inclusi desktop, infrastruttura IT tradizionale e cloud. Le sfide di sicurezza che stiamo descrivendo qui si concentrano sui container che contengono e salvaguardano i dati.

I dati sono ora la linfa vitale del commercio e della comunicazione. Senza dati il mondo moderno si fermerebbe, ed è per questo che le informazioni devono essere protette a tutti i costi. L'inganno e il crimine sono ancora aspetti permanenti della condizione umana. Il criminale informatico di oggi ha le stesse motivazioni del ladro di ieri, è solo dotato degli strumenti e del know-how per utilizzare le vulnerabilità della sicurezza.

Design 3D di palline che rotolano su una pista

Le ultime notizie e insight sull'AI


Scopri notizie e insight selezionati da esperti in materia di AI, cloud e molto altro nella newsletter settimanale Think. 

Il ruolo chiave delle applicazioni

Per proteggere completamente i dati, dobbiamo comprendere i container. Inoltre, dobbiamo essere sicuri di comprendere l'importanza delle app perché è quello che contengono i container: app che eseguono una moltitudine di azioni sui dati di un'azienda o di una persona.

Quante app? È un numero difficile da ricavare, ma entro aprile 2025, Google Play e l'Apple App Store offrivano ciascuno circa 2 milioni di app distinte. Che queste app vengano utilizzate da un'organizzazione o da un individuo, quasi certamente si verificano vulnerabilità di sicurezza in base al trasferimento di dati dall'utente dell'app all'app stessa.

Questo trasferimento varia da un individuo che fornisce dati finanziari personali per giocare su un'app di gaming a un'azienda che fornisce dati sensibili e informazioni proprietarie a un'app di contabilità. Se tali informazioni vengono rubate (tramite malware o altri tipi di minacce informatiche) o esposte, potrebbero causare pubbliche relazioni da incubo, perdita di vantaggio competitivo e violazioni di sicurezza. Potrebbe anche causare il furto di dati dei clienti per milioni o addirittura miliardi di dollari.

Quindi, a tutti i livelli, vengono condivise enormi quantità di informazioni private con e tramite le app. La posta in gioco è notevole, motivo per cui mantenere un livello di sicurezza dei container è una parte di vitale importanza della cybersecurity.

Come funzionano i container?

In un contesto di sviluppo software, le tecnologie container comprendono tutto il necessario per l'esecuzione delle applicazioni. Il container impacchetta tutto come un'entità autonoma pronta all'uso e in grado di essere eseguita in modo coerente in vari tipi di ambienti. Tutti i file necessari per eseguire l'app sono qui:

  • Codice dell'applicazione: il codice dell'applicazione include tutti i file eseguibili dell'applicazione, come il codice sorgente e il codice binario compilato.
  • Ambiente del tempo di esecuzione: l'ambiente del tempo di esecuzione del container comprende i framework, le librerie e gli strumenti necessari per eseguire il codice dell'applicazione.
  • Librerie di sistema: le librerie di sistema sono risorse condivise che offrono funzioni comuni come librerie grafiche, librerie di rete e nodo di trasporto di input/output di file.
  • Strumenti di sistema: ogni app richiede utility e strumenti specifici per svolgere correttamente le sue funzioni.
  • File di configurazione: i file di configurazione stabiliscono il modo in cui l'app si comporta e quali impostazioni si applicano ad essa.
  • Dipendenze: le dipendenze sono i framework, i componenti e le librerie posizionati esternamente a cui l'app deve poter accedere per funzionare come previsto.
  • Variabili di ambiente: gli ambienti di sviluppo, test e produzione possono essere modificati in base all'attività di tempo di esecuzione esibita dal container. Le variabili all'interno degli ambienti containerizzati contribuiscono a controllare tali impostazioni.
  • Kernel del sistema operativo: i container non richiedono un sistema operativo (SO) completo. Usano invece un tipo di virtualizzazione del sistema operativo che utilizza le caratteristiche del kernel dell'SO stesso.
  • Impostazioni di sicurezza: queste impostazioni consentono all'utente di personalizzare le misure di sicurezza in atto per regolare variabili come i controlli di accesso, le funzionalità e i limiti delle risorse.
OpenShift 

Scopri come funzionano i container nel cloud con OpenShift

I container semplificano la creazione, l'esecuzione e lo spostamento delle applicazioni in ambienti diversi. Questo video mostra come OpenShift su IBM® Cloud aiuta i team a gestire le applicazioni containerizzate in modo efficiente, rendendo lo sviluppo del cloud più veloce e affidabile.

Cosa sono le immagini dei container?

Le immagini container sono file statici e immutabili che contengono codice eseguibile e operano in modo isolato sull'infrastruttura IT. L'immagine del container contiene i componenti necessari per creare un container su un sistema operativo. Le immagini del container vengono aggregate con diversi strati e funzionano come i modelli.

Le immagini dei container sono il formato predefinito per la distribuzione di applicazioni in ambienti cloud-native, ed è qui che inizia la loro sicurezza. L'immagine di base è critica per la sicurezza, in quanto è il fondamento per tutte le immagini derivate. La sicurezza dei container inizia con l'utilizzo di fonti affidabili, garantendo che l'immagine provenga da un'organizzazione rispettabile, sia ospitata in un registro affidabile e includa codice sorgente accessibile per tutti i componenti.

È fondamentale impiegare una gestione proattiva delle vulnerabilità durante tutto il ciclo di vita, anche quando si parte da un'immagine di base affidabile. Analizza regolarmente tutte le immagini del container utilizzando uno scanner di immagini, integrato nel registro o fornito come strumento separato. Inoltre, identifica le immagini dei container che violano le policy o le best practice, comunemente note come configurazioni errate dei container.

Sicurezza dei container durante il ciclo di vita dello sviluppo del software

Il ciclo di vita dello sviluppo del software (SDLC) regola le "stagioni" di vita del software e la sua esistenza operativa. Le sette fasi qui descritte sono tutte necessarie e dovrebbero essere eseguite in sequenza.

Numerose tecnologie chiave funzionano di pari passo con queste fasi di sviluppo e queste soluzioni (e le misure di sicurezza che forniscono) vengono discusse anche nel momento in cui dovrebbero essere adottate nell'SDLC.

Pianificazione

La fase iniziale consiste nella definizione di tutti gli aspetti del progetto, ovvero delineare anzitutto l'ambito del progetto, nonché gli obiettivi previsti e le risorse disponibili per lo sforzo. Detto questo, include in genere anche altre attività come l'analisi costi-benefici, gli studi di fattibilità e la programmazione.

Si suggerisce di discutere le seguenti due tecnologie correlate durante la fase di pianificazione, poiché entrambe possono essere implementate in qualsiasi parte dell'SDLC:

  • Supply chain: le supply chain rappresentano un altro esempio di tecnologia correlata, completamente intrecciata con gli elementi di sicurezza dei container. I team di sicurezza che lavorano per rafforzare la sicurezza dei container della supply chain effettuano una scansione regolare delle immagini dei container e dei relativi componenti. In questo modo è possibile gestire le nuove minacce informatiche e le vulnerabilità note.

Analisi dei requisiti

La fase successiva prevede l'approfondimento delle esigenze del progetto, viste attraverso la lente delle esigenze dei stakeholder e degli utenti. Tutti i vari requisiti che si applicano al progetto devono essere raccolti, analizzati e gestiti.

Progettazione

In questa fase, solitamente, la centralità spetta al progettista, perché è il momento di convogliare tutte le informazioni raccolte sui requisiti in un progetto software praticabile. Questo blueprint descrive l'architettura necessaria, le strutture dati richieste e l'interfaccia utente che dovrebbe essere adottata.

Esistono quattro tecnologie correlate che idealmente andrebbero prese in considerazione durante la fase di progettazione, se si desidera utilizzarle.

  • Cloud: l'adozione diffusa dei container ha coinciso con l'adozione altrettanto ampia del cloud computing. I container vengono ora utilizzati in gran numero all'interno del cloud per creare applicazioni cloud-native. La responsabilità della protezione degli asset basati su cloud ricade sui cloud service come IBM Cloud, Google Cloud, Microsoft Azure e Amazon Web Services (AWS). Stabilire la sicurezza del cloud implica l'adozione di misure di sicurezza che promuovano la protezione dei dati, la sicurezza dell'infrastruttura e la gestione delle identità. I workload spostati nel cloud hanno a che fare con gli stessi problemi di sicurezza di base; gli archivi di immagini necessitano ancora di una scansione di routine per garantirne la fattibilità, anche se archiviati in ambienti cloud. L'implementazione del cloud dovrebbe idealmente iniziare durante la fase di progettazione dell'SDLC, in quanto influisce in modo significativo sull'architettura e sulla pianificazione delle risorse, entrambi aspetti che devono essere affrontati prima dell'inizio dello sviluppo.
  • Linux: Linux svolge un ruolo fondamentale della sicurezza dei container. La piattaforma open source fornisce i blocchi costitutivi di base utilizzati nella sicurezza del container e le caratteristiche di sicurezza necessarie come il firewall. I namespace di Linux sono luoghi in cui isolare efficacemente i container in esecuzione all'interno del loro ambiente e ridurre al minimo l'accesso alle risorse mantenendo un funzionamento coerente delle operazioni. I container Linux impiegano appieno le funzionalità del kernel Linux utilizzando vari metodi per limitare e isolare i workload containerizzati. Linux è il luogo in cui vengono finalizzati i dettagli chiave del programma e inizia la codifica effettiva. Pertanto, può avvenire durante la fase di progettazione o successiva implementazione.
  • Microservizi: come per Linux, i microservizi utilizzano i container per imporre l'isolamento a ciascun microservizio e fornire un ambiente "sandbox" separato dal sistema operativo host e da altri servizi. In questo modo si riduce la superficie di attacco e si migliorano le funzionalità difensive, oltre a offrire ai container dei microservizi una maggiore scalabilità. Come altre best practice per la sicurezza dei container, i microservizi utilizzano il principio del least privilege, in base al quale a un container vengono assegnati solo i privilegi minimi assolutamente necessari per poter eseguire la sua funzione come previsto ma non superare la capacità di accedere alle risorse o influire su altri container. In una modalità ottimale, i microservizi dovrebbero essere utilizzati durante la fase di progettazione perché è lì che le app monolitiche vengono suddivise in servizi più piccoli che possono poi essere implementati indipendentemente. Tuttavia, in alcune circostanze, i microservizi possono essere utilizzati anche durante la fase di implementazione.
  • Macchine virtuali: le macchine virtuali (VM) possono garantire una maggiore sicurezza dei container perché offrono un ulteriore livello di isolamento. Le VM hanno un proprio sistema operativo indipendente, riducendo il rischio che i container vengano contaminati tramite l'interazione con altri container, poiché non devono contattare un sistema host per reperire risorse. Le VM presentano anche un limite di sicurezza più rigoroso rispetto ai soli container, contribuendo a ridurre la possibilità che una violazione di sicurezza si diffonda in tutto il file system e influisca negativamente sui workflow in fase di elaborazione. L'uso delle macchine virtuali dovrebbe avvenire in fase di progettazione perché è lì che l'architettura e la struttura di un sistema vengono teorizzate e pianificate.  

Sviluppo

Con tutto il lavoro di "preparazione" svolto, è finalmente giunto il momento di creare il software utilizzando le specifiche di progettazione fornite dal progettista. Lo sviluppatore scrive il codice, crea delle application programming interface (API) e verifica che i componenti siano integrati secondo necessità.

Sebbene Linux sia tipicamente utilizzato durante la fase di progettazione, lo è anche durante lo sviluppo, perché quello è il momento in cui vengono scelte l'architettura e la piattaforma del software e in cui inizia il processo di codifica del software.

Test

La creazione di un sistema di test adeguato garantisce che il codice creato funzioni come previsto e rimanga privo di bug. È importante automatizzare le politiche che segnalano le build con problemi di sicurezza, in particolare quando vengono scoperte nuove vulnerabilità. L'applicazione di patch ai container non è efficace quanto la loro ricostruzione, quindi i test di sicurezza dovrebbero includere politiche che attivino ricostruzioni automatiche. La fase di test può includere l'integration testing, i test unitari e il test di sistema.

Distribuzione

Presumendo che tutti i passaggi precedenti siano stati completati, è arrivato il momento di pubblicare il software e rilasciarlo agli utenti. L'implementazione copre tutte le attività correlate necessarie per la preparazione del prodotto software per la distribuzione di massa, come la creazione di pacchetti e la configurazione del software.

Kubernetes

Kubernetes supporta gli sforzi di orchestrazione e la sicurezza dei container fornendo una piattaforma automatizzata e open source per la salvaguardia delle app containerizzate. Gli ambienti Kubernetes offrono caratteristiche di sicurezza come il controllo degli accessi basato sui ruoli (RBAC), le politiche di rete che regolano la comunicazione tra i pod (come Kubernetes si riferisce ai container). Offrono anche la gestione dei segreti (che assegna la priorità allo storage sicuro dei dati sensibili, come password, chiavi API , chiavi di crittografia e token).

I processi di sicurezza di Kubernetes applicano un monitoraggio regolare su tutti i cluster Kubernetes alla ricerca di possibili configurazioni errate, qualsiasi impostazione che possa aprire la porta a rischi di sicurezza ed esporre vulnerabilità. E mentre, tecnicamente, Kubernetes può essere utilizzato durante qualsiasi fase del percorso del software, l'uso principale riconosciuto di Kubernetes è la gestione dell'implementazione e della scalabilità delle app containerizzate.

Come accennato in precedenza, i microservizi possono essere utilizzati anche durante la fase di implementazione.

Manutenzione

L'ultima fase del processo SDLC consiste nel fornire supporto continuativo per il software. Questa fase può comportare la generazione di miglioramenti del programma, correzioni di bug e altri tipi di miglioramenti delle prestazioni.

Best practice per la sicurezza dei container

Esistono varie misure di routine che le organizzazioni possono adottare per contribuire a sottolineare l'efficacia delle politiche di sicurezza. La maggior parte di essi riflette approcci di buon senso e utilizza principi comprovati di gestione delle vulnerabilità:

Limita l'accesso

Molte misure di sicurezza dei container limitano l'accesso, in qualche modo. Ad esempio, concedi i privilegi ai container con parsimonia, in base al principio del privilegio minimo, dando ai container solo le autorizzazioni necessarie per operare. Allo stesso modo, limita i controlli di accesso per consentire solo agli utenti autorizzati di accedere e manipolare le immagini nei container registry. Segui le regole del controllo degli accessi basato sui ruoli (RBAC) per garantire la corretta autenticazione degli utenti e prevenire gli accessi non autorizzati. Infine, assicurati che le immagini di base per i container provengano solo da fonti approvate. Controlla le immagini di base prima dell'implementazione per verificare che siano state controllate correttamente e provengano da fonti ufficialmente riconosciute.

Riduci l'esposizione

Per limitare efficacemente le vulnerabilità, le organizzazioni devono ridurre la superficie di attacco eliminando le immagini container e rimuovendo servizi, processi e pacchetti non necessari. L'obiettivo è ridurre al minimo i potenziali vettori di attacco mirati alle immagini dei container.

Esegui la scansione di routine delle vulnerabilità

Utilizza gli strumenti di sicurezza dei container per eseguire scansioni di routine delle vulnerabilità dell'ambiente container. Scansiona inoltre le immagini a intervalli regolari e aggiorna periodicamente le immagini dei container, insieme al motore di container che sta utilizzando, come Docker.

Rimani sulla difensiva

Le vulnerabilità possono insorgere in qualsiasi momento, quindi è buona norma rimanere vigili eseguendo regolarmente il monitoraggio del tempo di esecuzione e salvaguardandone la sicurezza. Presta attenzione anche ai potenziali problemi di sicurezza della rete. Il lavoro di squadra rafforza la sicurezza: tutti in azienda dovrebbero contribuire e rimanere concentrati sulla causa sempre più importante della sicurezza dei container.

Soluzioni correlate
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud è una OpenShift Container Platform (OCP) completamente gestita.

Esplora Red Hat OpenShift
Soluzioni container

Le soluzioni basate su container eseguono e scalano workload containerizzati con sicurezza, innovazione open source e implementazione rapida.

Esplora i container
Servizi di consulenza cloud 

Sblocca nuove funzionalità e promuovi l'agilità aziendale con i servizi di consulenza cloud di IBM. Scopri come creare insieme soluzioni, accelerare la trasformazione digitale e ottimizzare le prestazioni attraverso strategie di hybrid cloud e partnership di esperti.

Servizi cloud
Fai il passo successivo

Modernizza la tua infrastruttura con le soluzioni container di IBM. Esegui, scala e gestisci i workload basati su container in tutti gli ambienti con flessibilità, sicurezza ed efficienza utilizzando la piattaforma container completa di IBM.

Esplora le soluzioni container Crea un account IBM Cloud gratuito