Panoramica
Con sicurezza dei container si intende la protezione dell'integrità dei container, dalle applicazioni che contengono all'infrastruttura su cui si basano. Quella dei container deve essere una sicurezza integrata e continua. In generale, questo significa che l'azienda deve:
- Proteggere il flusso dei container e l'applicazione
- Proteggere l'ambiente di deployment e l'infrastruttura dei container
La sicurezza secondo l'approccio DevOps
La sicurezza delle app basate sui container è cambiata. Guarda il video per scoprire il ruolo della sicurezza nelle iniziative DevOps e scopri le soluzioni offerte da Red Hat.
Integrare la sicurezza nel flusso dei container
Segui questi passaggi:
Acquisizione delle immagini
I container sono costituiti da livelli di file che la community definisce immagini container. L'immagine di base è la più importante per la sicurezza, perché rappresenta il punto di partenza dalla quale vengono create le immagini derivate. La sicurezza del container inizia con l'individuazione di origini affidabili per le immagini di base. Anche se si usano immagini affidabili, l'aggiunta delle applicazioni e delle configurazioni introduce nuove variabili. Quando si introduce il contenuto esterno con il quale vengono realizzate le app, è necessario prevederne una gestione proattiva.
- Integrare gli strumenti di sicurezza di livello enterprise e rispettare o migliorare i criteri di sicurezza esistenti
L'ampia diffusione dei container è dovuta alla facilità di compilare, raggruppare e promuovere un'applicazione o un servizio, e tutte le relative dipendenze, per l'intero ciclo di vita e su diversi ambienti e destinazioni di deployment. Rispetto alla sicurezza, tuttavia, i container presentano alcune complessità. Criteri e checklist di sicurezza statici non sono scalabili per i container dell'azienda. La catena di fornitura esige più servizi correlati ai criteri di sicurezza. I team devono compensare le esigenze di networking e governance dei container. È necessario separare strumenti e servizi di creazione e runtime.

Per ottenere container affidabili e scalabili, è necessario integrare la sicurezza già nel flusso dei container e proteggere l'infrastruttura. Senti cos'hanno da dire gli esperti in merito alla protezione dello stack applicativo e del ciclo di vita dei container grazie a questa serie di webinar.
Durante l'acquisizione delle immagini container, occorre porsi le seguenti domande:
- Le immagini container sono firmate? Provengono da origini affidabili?
- I livelli relativi a runtime e sistema operativo sono aggiornati?
- Con quale frequenza e velocità vengono aggiornati i container?
- I problemi noti vengono identificati? Come vengono tracciati?
Gestione dell'accesso
Dopo aver ottenuto le immagini, il passo successivo consiste nella gestione dell'accesso e nella promozione di tutte le immagini container usate dal team, il che significa proteggere sia le immagini scaricate che quelle realizzate. L'impiego di un registro privato consente di controllare l'accesso con assegnazioni basate su ruoli, agevolando la gestione del contenuto tramite l'associazione dei metadati al container. I metadati forniscono informazioni come l'identificazione e la registrazione di vulnerabilità note. Il registro privato consente inoltre di automatizzare e assegnare criteri per le immagini container archiviate, riducendo gli errori umani che possono introdurre vulnerabilità nel container.
Nel processo decisionale sulla gestione degli accessi occorre chiedersi quanto segue:
- Quali controlli degli accessi basati su ruoli è possibile usare per gestire immagini container?
- È possibile aggiungere tag per agevolare l'ordinamento delle immagini? È possibile applicare tag alle immagini solo per la fase di sviluppo, quindi per quella di test e infine per quella di produzione?
- Il registro offre metadati visibili che consentono di tenere traccia delle vulnerabilità note?
- È possibile usare il registro per assegnare e automatizzare i criteri (ad esempio controllando firme, scansioni di codici e così via)?
Integrare i test di sicurezza e automatizzare il deployment
L'ultima fase del flusso è il deployment. Una volta completate, le build devono essere gestite nel rispetto degli standard di settore. In questa fase è necessario comprendere come automatizzare i criteri affinché vengano contrassegnate le build con problemi di sicurezza, soprattutto quando vengono individuate nuove vulnerabilità. Poiché applicare patch ai container non è mai una soluzione valida quanto ricrearli, l'integrazione dei test di sicurezza deve tenere conto dei criteri che generano nuove build automatiche. La prima parte di questo passaggio consiste nell'esecuzione di strumenti di analisi dei componenti in grado di registrare e contrassegnare i problemi. La seconda fase consiste nel definire gli strumenti necessari per un deployment automatico e basato su criteri.
Al momento di integrare i test di sicurezza e automatizzare il deployment, occorre porsi le domande seguenti:
- Come impedire alle patch di eseguire i container e utilizzare invece trigger per ricreare e sostituire i container con aggiornamenti automatizzati?
Sicurezza dell'infrastruttura dei container
Un altro livello di sicurezza dei container è l'isolamento fornito dal sistema operativo host. È necessario un SO host che offra al container il massimo isolamento possibile. Questo rappresenta un elemento di assoluta importanza nella difesa dell'ambiente di deployment del container. Il SO host viene abilitato mediante un runtime del container, gestito idealmente tramite un sistema di orchestrazione. Per rendere resiliente la piattaforma containerizzata, lo spazio dei nomi di rete viene usato per isolare applicazioni e ambienti; lo storage viene connesso tramite montaggi protetti. Una soluzione di gestione delle API deve includere funzionalità di autenticazione e autorizzazione, integrazione LDAP, controlli dell'accesso agli endpoint e limitazione della velocità.
Per decidere come proteggere l'infrastruttura dei container, occorre tenere conto dei seguenti aspetti:
- Quali container devono poter accedere ad altri? In che modo vengono rilevati?
- Come viene effettuato il controllo degli accessi e la gestione delle risorse condivise (ad esempio rete e storage)?
- Come vengono gestiti gli aggiornamenti dell'host? Tutti i container devono essere aggiornati nello stesso momento?
- In che modo viene monitorata l'integrità del container?
- In che modo avviene la scalabilità automatica della capacità delle applicazioni per soddisfare la domanda?
Soluzioni Red Hat per la sicurezza dei container
Red Hat® OpenShift® include Red Hat Enterprise Linux®. Automatizza il ciclo di vita dell'applicazione containerizzata, integra la sicurezza nel flusso del container ed è progettato per i team DevOps. Il nostro catalogo di container permette di accedere a un gran numero di immagini container certificate, runtime di linguaggio, database e middleware, che possono essere eseguiti ovunque venga eseguito Red Hat Enterprise Linux®. Le immagini Red Hat sono sempre firmate e verificate, per confermarne origine e integrità.
Red Hat monitora le sue immagini container per individuare vulnerabilità recenti appena riscontrate (con un indice di integrità costantemente aggiornato e pubblicamente visibile), oltre a rilasciare aggiornamenti della sicurezza e container ricompilati e pubblicati nel registro pubblico. Puoi sempre dare un'occhiata al nostro rapporto annuale sui rischi per la sicurezza dei prodotti Red Hat, che descrive in dettaglio la nostra risposta alle vulnerabilità di sicurezza note che ogni anno colpiscono il software aziendale in tutto il mondo.
I partner di Red Hat che offrono soluzioni di sicurezza possono fornire integrazioni certificate per estendere e migliorare le funzionalità di protezione dei container. Red Hat OpenShift integra nella piattaforma funzioni di sicurezza che completano quelle offerte dalle soluzioni dei partner, per proteggere applicazioni e container lungo l'intero ciclo di vita DevOps.
Offre inoltre molto altro materiale utile:
- Orchestrazione e gestione di container web scale
- Console web completa con funzionalità di collaborazione multiutente
- Interfacce CLI e IDE
- Automazione di build e source to image
- Integrazione con CI
- Automazione del deployment
- Supporto per volumi di storage remoti
- Installazione e amministrazione semplificate
- Una vasta gamma di linguaggi di programmazione, framework e servizi supportati