Presumo che tu sia preoccupato per le applicazioni containerizzate eseguite come root.
root in container è un rischio. Interagisce ancora con il kernel come root. E se un'applicazione riesce ad uscire dal contenitore, ha i privilegi di root sull'host.
Tuttavia, root in container ha limitato capacità rispetto a root su host. Per esempio. non ha capacità SYS_ADMIN
necessaria per mount
. Tuttavia, evita il root nel contenitore quando possibile per ridurre al minimo i rischi.
Se le applicazioni containerizzate non hanno bisogno dei privilegi di root, è possibile eseguire container con un utente non privilegiato. Il modo più semplice è specificare l'opzione --user UID:GID
in docker run
.
Ma presumo che tu abbia bisogno dei privilegi di root per le tue applicazioni containerizzate. Docker mette a disposizione namespaces utente .
Non fornisco un esempio di installazione qui perché non sono molto familiare con il namespace dell'utente. L'ho impostato una volta e posso confermare che funziona. Raccomando di leggere la documentazione: link
In breve: l'installazione dello spazio dei nomi utente esegue un utente root "falso" nel contenitore che sull'host è mappato a un utente non privilegiato. Se l'applicazione si rompe, non ha i privilegi di root sull'host.
Oltre a ciò, è possibile ridurre le funzionalità del contenitore per migliorare la sicurezza del contenitore. Usa l'opzione --cap-drop=xyz
e elimina tutto ciò di cui il tuo contenitore non ha bisogno. O ancora meglio, usa --cap-drop=ALL
e aggiungi solo le funzionalità realmente necessarie con ad es. %codice%. Guarda link
Un'altra opzione per migliorare la sicurezza del contenitore è --cap-add=CHOWN
.