La maggior parte del file Docker si trova su Internet ed esegue i software come root! Questo deve spaventare tutti, giusto? ... ma non sembra essere il caso ...Procedure consigliate per la docker per la sicurezza
Quindi il pb è che l'esecuzione di un server come root, anche in un contenitore, È PERICOLOSO, perché la radice all'interno di un contenitore è praticamente la stessa di root fuori dal contenitore.
Una delle soluzioni è creare correttamente un file Docker utilizzando l'istruzione "USER" come this example for a tor relay.
Un'altra soluzione è utilizzare "spazi dei nomi utente linux" per "mappare" UID/GID all'interno del contenitore su UID/GID all'esterno di un contenitore. per esempio root (uid = 0) all'interno di un contenitore può essere mappato sul tuo account utente personale all'interno dell'host, quindi i file creati in un volume condiviso hanno buone autorizzazioni.
Quindi la mia domanda è: qual è la migliore pratica quando si tratta di sicurezza con Docker? eseguire il codice come non root (ad esempio, l'istruzione USER in un Dockerfile)? O utilizzando "spazi dei nomi utente"? O eventualmente (o in aggiunta) usando selinux e/o AppArmor?
Grazie :)
Voglio anche aggiungere che di solito non è auspicabile per eseguire le applicazioni (come un server web per esempio) come radice – kondor
Questo documento sembra interessante: [Docker Fissare Indicazioni di distribuzione] (https://github.com/GDSSecurity/Docker-Secure-Deployment-Guidelines) – kondor