‫Tutto ok. Sappiamo di non funzionare come root nel contenitore.
‫Ma, al di fuori del contenitore, la radice nel contenitore,
‫a proposito, non ha un accesso diretto a nulla sull'host,
‫giusto. Solo perché sei
‫root in un contenitore, sei ancora imprigionato lì dentro.
‫Ma, se vuoi
‫passare a quel livello successivo, dove se l'utente ha anche il root
‫nel contenitore, vuole sfuggire all'host, perché c'è
‫un kernel di vulnerabilità di cui
‫abbiamo parlato, come Cow sporca o un'altra vulnerabilità in
‫Docker o qualcosa.
‫Quindi, il passaggio successivo che fai qui è abilitare gli spazi dei nomi utente,
‫che non è abilitato per impostazione predefinita.
‫Ho un link qui che porta a un articolo di
‫blog che ne parla tutto.
‫Fondamentalmente, è un'impostazione per host che hai impostato nella configurazione
‫Docker. The Docker JSON.
‫Indica a Docker che ogni volta che crea
‫un nuovo contenitore
‫per eseguirlo come utente non root sull'host.
‫Quindi, fondamentalmente ci sono un
‫paio di programmi lì, containerd e runC, che sono altri programmi
‫che Docker utilizza per avviare il contenitore.
‫Per impostazione predefinita, quelli vengono eseguiti come root.
‫Una caratteristica che Docker ha è quella di abilitare gli
‫spazi dei nomi degli utenti,
‫il che significa essenzialmente che Docker crea questi contenitori, non li
‫genererà come un processo secondario in esecuzione come root come Docker.
‫Li genererà come utenti ad alto numero.
‫Una sorta di, non necessariamente un utente casuale, ma un utente
‫di alto livello.
‫Ciò significa che se quel contenitore ha
‫mai delle vulnerabilità di sicurezza in cui
‫l'utente è in grado di sfuggire al contenitore, ci sarà comunque
‫solo un utente sull'host. Perché è che agiranno
‫come l'utente utilizzato dal processo che esegue quel
‫contenitore. Il runC essenzialmente.
‫Il programma runC è ciò che avvia quel contenitore
‫e verrà eseguito come utente con numero elevato,
‫non come root. Quell'utente non ha davvero alcun
‫privilegio al di fuori di quel contenitore. Pertanto, quella funzione è
‫un'impostazione per host, non un'impostazione per contenitore e non
‫tutto funziona negli spazi dei nomi utente.
‫Dovrai solo provare ed esercitarti.
‫Dovrai abilitarlo su alcuni server, provare le tue applicazioni
‫su quel server, vedere se funzionano.
‫In caso contrario, dovrai segmentare la
‫tua architettura. Ogni volta che implemento
‫spazi dei nomi utente in un cluster, in genere abbiamo nodi di lavoro
‫specifici con spazi dei nomi utente abilitati.
‫Ecco dove vengono eseguiti quei programmi che possono supportarlo, che
‫funzionano con esso.
‫Tutto il resto deve essere eseguito su normali server Docker
‫da qualche altra parte. È un po 'come lo segmentiamo.
‫Segmentiamo in due classi di server.
‫Che, sai, come se stessi eseguendo una DMZ, è quello che vorrei
‫fare se avessi eseguito, avrei abilitato, nella DMZ, tutti gli spazi
‫dei nomi utente, su tutti i server e
‫quindi i contenitori che eseguono ci dovrebbe essere, dovrebbe supportare gli spazi
‫dei nomi degli utenti.
‫Non puoi andare a guardare le applicazioni e scoprire se supportano gli spazi
‫dei nomi degli utenti.
‫È un... gli spazi dei nomi utente non sono
‫necessariamente una funzione specifica Docker. Significa essenzialmente che il tuo
‫contenitore è in esecuzione in uno spazio dei
‫nomi e ora anche l'applicazione che esegue quel contenitore è un
‫po 'bloccata.
‫Non tutto può supportarlo. Dovrai solo
‫esercitarti o forse fare qualche ricerca per vedere
‫se altre persone sono state in grado
‫di farlo funzionare lì sotto. Sai, per cose comuni come MySQL
‫e cose del genere. Ma ovviamente, per
‫i tuoi programmi che stai sviluppando, dovrai solo testarli
‫per vedere se funzioneranno. Direi che la maggior
‫parte dei programmi e delle lingue comuni che eseguo funzionano
‫perfettamente negli spazi dei nomi degli utenti. Il vero problema con
‫gli spazi dei nomi degli utenti è quando si ha un'applicazione
‫che deve scrivere su volumi o associare montaggi,
‫che forse hai caricamenti di file utente e
‫li condividi su molti contenitori diversi. Ecco dove gli spazi dei nomi degli utenti non sono impossibili.
‫Diventa solo un po 'complicato perché i file che
‫ora sono scritti su disco sull'host vengono ora scritti
‫come un altro utente.
‫Perché quel processo sull'host che gestisce il contenitore
‫è un altro utente.
‫Quindi, vedrai diversi ID utente su quei file e
‫dovrai solo occupartene.
‫Ci sono permessi Linux standard a quel punto, e
‫devi solo automatizzare e risolvere quei problemi in
‫vari modi standard Linux.
‫Non è nemmeno davvero un problema Docker a quel punto.
‫È solo un problema di autorizzazioni sull'host.