‫Cosa ne pensi delle immagini senza distruzioni?
‫È un buon compromesso tra dimensioni e sicurezza?
‫Direi che se riesci a fare immagini
‫senza distrazioni, e cosa intendiamo con questo, il
‫termine è in evoluzione.
‫Sento che le immagini senza distruzioni
‫sono complicate. Sento che solo dire immagini graffiate
‫potrebbe essere un modo più semplice per dirlo. Ma è corretto dire un'immagine
‫distrolta, nel senso che non esiste un sistema di pacchetti di
‫base. Non c'è apt. Non c'è Yum.
‫Non ci sono tutti quei diversi comandi
‫che potresti assumere in un contenitore se usi
‫una delle immagini ufficiali. Il fatto è che le immagini
‫senza distruzioni non sono molto comuni a causa di due motivi.
‫Uno, la maggior parte dei programmi
‫ha bisogno di tutte quelle cose per funzionare.
‫Hanno bisogno delle dipendenze dei pacchetti apt.
‫Hanno bisogno
‫delle loro librerie SSL aperte. Hanno bisogno di ogni genere di roba in aggiunta
‫al programma che c'è, giusto.
‫Questa è la maggior parte delle applicazioni oggi.
‫Golang, C, alcune altre lingue possono creare binari
‫singoli che sostanzialmente hanno tutto ciò di cui
‫hanno bisogno per funzionare, tranne
‫il kernel. Queste cose sono tecnicamente
‫in grado di rimuovere tutto ciò che c'è sotto.
‫Tutti i livelli e l'immagine potrebbero scomparire.
‫Non li vedo ancora molto allo stato brado perché
‫non lavoro con Google, Netflix e grandi gruppi di
‫persone che sono super professionali in questo.
‫I due motivi qui sono, uno, devi avere
‫un linguaggio che lo supporti e devi avere un
‫team che capisca come costruirli correttamente.
‫Quindi, devi davvero essere bravo nella risoluzione dei problemi e come funzionano
‫i contenitori negli spazi dei nomi.
‫Poiché il minuto in cui l'immagine senza distruzioni viene eseguita
‫in un contenitore e hai un problema, non puoi
‫nemmeno sgusciarci dentro.
‫Non c'è shell. Non puoi entrarci.
‫Non puoi guardarlo. Quindi, ora i tuoi
‫strumenti sono limitati e devi iniziare a cercare altri modi
‫per collegare i tuoi strumenti in quei contenitori.
‫Questo esiste. Ci sono quelle cose là
‫fuori che lo faranno per te, ma dipende in gran parte dalle tue abilità in
‫termini di come gestisci gli spazi dei nomi.
‫Come puoi saltare come sidecar in un container in
‫esecuzione nel suo spazio dei nomi dalla riga di comando
‫senza utilizzare Docker?
‫Questi sono i tipi di problemi che insorgono quando si ha a
‫che fare con la risoluzione dei problemi o il monitoraggio e
‫la manutenzione del sistema quando si hanno immagini senza problemi.
‫Per tutti quelli con cui lavoro che iniziano
‫con i contenitori, i loro primi due
‫progetti in contenitori, non menziono queste cose perché le dimensioni sono solo dimensioni.
‫Puoi sempre aggiungere più spazio su disco a un server, giusto.
‫Nessun motivo per far girare un intero team in giro imparando ogni
‫sorta di nuovi strumenti e cose solo in modo da poter avere meno
‫spazio su disco utilizzato su un server.
‫Personalmente non mi importa delle dimensioni.
‫La sicurezza è una cosa teorica.
‫In teoria, tutte quelle cose che vengono
‫rimosse da un'immagine contenitore potrebbero renderla
‫più sicura. Parliamo di fuori allo stato brado, però.
‫Quante opportunità ha qualcuno che deve scherzare con
‫altri strumenti nel tuo contenitore al di fuori
‫della tua app? Diciamo che cURL ha una vulnerabilità, ma
‫la tua app non usa cURL.
‫Capita solo di essere nell'immagine.
‫Come potrà accedervi qualcuno, giusto?
‫Dovranno sfondare la tua app.
‫Quindi, la tua app deve avere un exploit.
‫Quindi, in teoria, potrebbero eseguire il comando cURL
‫nel contenitore, giusto. Quindi, questo è
‫davvero ciò che riguarda questa roba senza distruzioni sono i
‫bonus di sicurezza teorici di non includere altre applicazioni.
‫La realtà è, tuttavia, una volta creato un
‫binario statico, stai già includendo molte di quelle librerie
‫che potrebbero essere vulnerabili come SSL aperto,
‫che è un modo comune per connettere le applicazioni con la
‫sicurezza SSL, giusto.
‫Bene, se questo ha una vulnerabilità e la crei staticamente nella
‫tua app, è ancora lì.
‫Non è solo un file separato sul contenitore.
‫È nella tua app in un unico binario.
‫In realtà, rende più difficile eseguire la scansione
‫di sicurezza perché, poiché ora, ogni scanner che conosco
‫non catturerà quel binario SSL aperto se
‫è integrato. Quindi, molte di queste cose sono teoriche.
‫Non tendo a spingere i team verso
‫funzionalità di sicurezza teoriche. Guardo di più quello
‫che succede in natura, giusto.
‫I daemon Docker vengono esposti.
‫Kubernetes non ha un'autenticazione adeguata, quindi
‫viene esposto. Questi sono i veri problemi
‫che vedo sono le cose su cui ci concentriamo sono le
‫cose di cui continuiamo a sentir parlare nelle notizie
‫con cui le persone vengono hackerate, giusto. Questo tipo di cose con
‫sicurezza teorica nella rimozione di file dalle immagini.
‫Questo è solo di più nel regno teorico.
‫Non è un motivo per non farlo.
‫Proprio come questo elenco, tutto in questo elenco,
‫farei prima di iniziare a percorrere quella strada
‫di cose difficili.
‫Considero le immagini senza difficoltà relativamente difficili.
‫A meno che tu non sia già un programmatore Go e già
‫tutto il tuo team sia davvero bravo negli spazi dei nomi,
‫con comandi Docker e cose del genere.
‫Non intendo solo i normali comandi Docker.
‫Intendo cose complicate che ti aiutano a risolvere i
‫contenitori che non contengono shell, per esempio.
‫Quindi è un'ottima domanda.
‫Viene sempre.
‫Tutti me lo chiedono quando discutiamo di sicurezza perché
‫è un argomento popolare. Ma non è nemmeno nella
‫mia top ten.
‫Spero che aiuti.