Die meisten Dockerfiles, die Sie im Internet finden, bauen und führen Software als root aus! Das sollte jeden beunruhigen, oder nicht? ... aber anscheinend ist das nicht der Fall ...
Das Problem ist also, dass das Ausführen eines Servers als root, selbst in einem Container, GEFÄHRLICH ist, weil root innerhalb eines Containers ziemlich das gleiche ist wie root außerhalb des Containers.
Eine Lösung besteht darin, ein Dockerfile ordnungsgemäß zu erstellen, indem die "USER" Anweisung wie in diesem Beispiel für ein Tor-Relais verwendet wird.
Eine andere Lösung besteht darin, die "Linux-Benutzernamensräume" zu verwenden, um die UID/GID innerhalb des Containers auf die UID/GID außerhalb eines Containers abzubilden. Zum Beispiel kann root (uid=0) innerhalb eines Containers auf Ihren persönlichen Benutzeraccount innerhalb des Hosts abgebildet werden, sodass Dateien, die in einem freigegebenen Volume erstellt werden, über die richtigen Berechtigungen verfügen.
Also meine Frage ist: Was ist die beste Praxis, wenn es um Sicherheit mit Docker geht? Code als Nicht-Root-Benutzer ausführen (d.h. "USER" Anweisung in einem Dockerfile verwenden)? Oder die Verwendung von "Benutzernamensräumen"? Oder gegebenenfalls (oder zusätzlich) die Verwendung von SELinux und/oder AppArmor?
Vielen Dank :)