2016-03-02 17 views
5

Vogliamo evitare di includere "yum update" all'interno del dockerfiile, in quanto potrebbe generare un contenitore diverso in base a quando vengono create le immagini docker, ma ovviamente questo potrebbe comportare alcuni problemi di sicurezza se è necessario aggiornare un sistema di base. L'opzione migliore è davvero quella di avere un'immagine di sistema di base a livello di organizzazione e aggiornarla? Il problema sarebbe che richiedesse la ricostruzione e l'implementazione di tutte le applicazioni nell'intera organizzazione ogni volta che viene applicato un aggiornamento di sicurezza.Come posso gestire gli aggiornamenti di sicurezza nei miei contenitori docker?

Un alterativo che sembra un po 'fuori per me, sarebbe semplicemente ignorare gli aggiornamenti di sicurezza all'interno del contenitore e preoccuparsi solo di loro sul computer host. Qui il processo di pensiero sarebbe che per un attaccante entrare in un contenitore, ci sarebbe bisogno di una vulnerabilità sul computer host, un'altra vulnerabilità all'interno del motore di docker per entrare nel contenitore e quindi un'ulteriore vulnerabilità per sfruttare qualcosa all'interno del contenitore, che sembra una serie incredibilmente improbabile di eventi. Con l'introduzione di namespacing utente e profili seccomp, questo sembra ridurre ulteriormente il rischio.

In ogni caso, come posso gestire gli aggiornamenti di sicurezza all'interno dei container, con un impatto minimo sulla pipeline CI/CD o, idealmente, non dover ridistribuire l'intera infrastruttura ogni tanto?

+1

dovresti leggere https://jpetazzo.github.io/2015/05/27/docker-images-vulnerabilities/ – user2915097

+0

Questa è una risorsa fantastica! Grazie per l'articolo – jaumann

+0

Un collaboratore mi ha inviato questo articolo questa mattina che sembra anche affrontare questo problema specifico, senza dover ridistribuire l'intera infrastruttura: https://www.hastexo.com/blogs/florian/2016/02/ 21/containers-just-because-everyone-else/#. VsmK2oUo_qD – jaumann

risposta

1

È possibile ridurre l'irripetibilità delle build introducendo un livello di aggiornamento intermedio.

creare un'immagine simile:

FROM centos:latest 
RUN yum update -y 

generi l'immagine, tag e spingerlo. Ora le tue build non cambieranno se non decidi di cambiarle.

È possibile puntare gli altri Dockerfiles su myimage:latest per ottenere gli aggiornamenti automatici una volta che si decide di farlo o puntare a una versione specifica.

Il modo in cui ho installato il mio sistema CI è che una build (manuale) di successo dell'immagine di base con aggiornamenti attiva una build di qualsiasi immagine che dipende da esso.

Viene segnalato un problema di sicurezza? Verifica che un pacchetto aggiornato sia disponibile o esegui una correzione temporanea nel Dockerfile. Attiva una build. Tra poco avrai a disposizione versioni fisse di tutte le tue app pronte per essere distribuite.

+0

Penso che questo sarà il modo in cui alla fine andremo. Non è l'ideale, dal momento che richiede ancora un'implementazione completa dell'implementazione quando qualcosa viene riparato, ma potrebbe essere solo qualcosa con cui dobbiamo convivere. – jaumann

1

La maggior parte delle principali distribuzioni rilascerà frequentemente una nuova immagine di base che include gli ultimi aggiornamenti critici e le correzioni di sicurezza necessarie. Ciò significa che puoi semplicemente tirare l'ultima immagine di base per ottenere quelle correzioni e ricostruire la tua immagine.

Ma anche dal momento che i contenitori utilizzano yum, puoi usare yum per controllare quali pacchetti aggiorni. Yum ti consente di impostare una versione di rilascio in modo da poter aggiungere gli aggiornamenti a una versione specifica del sistema operativo.

Ad esempio, se si sta utilizzando RHEL 7.2, si potrebbe avere un Dockerfile che sembra qualcosa di simile:

FROM rhel:7.2 
RUN echo "7.2" > /etc/yum/vars/releasever 
RUN yum update -y && yum clean all 

Questo assicura che vi rimarrà su RHEL 7.2 e ricevere solo gli aggiornamenti critici del pacchetto, anche quando fai un aggiornamento completo di yum.

Per ulteriori informazioni sulle variabili yum disponibili o su altre opzioni di configurazione, basta guardare la pagina man 'yum.conf'.

Inoltre, se è necessario un controllo più dettagliato degli aggiornamenti, è possibile controllare il pacchetto "yum-plugin-versionlock", ma è più che probabile eccessivo per le proprie esigenze.

Problemi correlati