In Dockers Dokumentation zur Sicherheit mit Docker finden Sie einen guten Artikel: https://docs.docker.com/articles/security/
Mir ist jedoch nicht klar, wie Root-privilegierte Prozesse im Container tatsächlich auf dem Host-System ausgeführt werden und wie ich SELinux so konfigurieren soll, dass das Risiko eines "Lecks" von Prozessen außerhalb des Containers besteht.
Zum Beispiel führe ich Nginx in einem Container aus, und wenn ich "ps" außerhalb des Containers mache, kann ich alle Nginx-Prozesse sehen.
root 7281 4078 0 01:36? 00:00:00 nginx: Masterprozess nginx www-data 7309 7281 0 01:36? 00:00:00 nginx: Arbeitsprozess www-data 7310 7281 0 01:36? 00:00:00 nginx: Arbeitsprozess www-data 7311 7281 0 01:36? 00:00:00 nginx: Arbeitsprozess www-data 7312 7281 0 01:36? 00:00:00 nginx: Arbeitsprozess
Dies ist keine Überraschung, da Docker so funktioniert - es ist keine Virtualisierung, bei der außerhalb einer VM nichts angezeigt wird. Mit Docker werden die Prozesse eines Containers auf dem Host-Betriebssystem innerhalb von Namespaces und eingeschränkten Berechtigungen ausgeführt. Sie sprechen direkt mit dem Host-Kernel.
In dieser Situation sollte ich SELinux so konfigurieren, dass der Nginx-Prozess anstelle des Dockers gesichert wird, genau wie wenn er ohne Docker ausgeführt wird. Ist das korrekt?
Gibt es auch eine bestimmte Docker-Konfiguration, die besser für die Ausführung von Webservern wie nginx geeignet ist?