Ich gehe davon aus, dass in einer Kubernetes-Umgebung der Root-Benutzer standardmäßig nicht zugelassen werden sollte, um das Risiko zu verringern, falls auf das Host-Betriebssystem von innerhalb eines Containers aus zugegriffen wird. Diese Einstellung sollte durch Schreiben in PodSecurityPolicy vorgenommen werden.
In Anbetracht dessen frage ich mich nur: Warum können wir den Root-Benutzer verwenden, um Container in öffentlichen Cloud-Kubernetes-Diensten wie EKS, AKE und GKE auszuführen? Verfügen sie über eine weitere Sicherheitsebene, um zu verhindern, dass Container von Angreifern kompromittiert werden?
Antwort1
Auch wenn die Möglichkeit besteht, dass ein containerisierter Prozess aufgrund einer nicht behobenen Sicherheitslücke Zugriff auf das Host-Betriebssystem erhält und somit die volle Kontrolle über das System hat, da er als Root ausgeführt wird, glaube ich, dass öffentliche Clouds dies nicht standardmäßig erzwingen, da viele bekannte Softwarepakete ihreHauptprozess als Root ausführen- Beispielsweise basiert der Nginx-Dienst auf einem Hauptdaemonprozess root
, der als ausgeführt wird und der wiederum die als ausgeführten Arbeitsprozesse erzeugt, www-data
um die Sicherheit zu verbessern.
Antwort2
Der Root-Benutzer darf alle Aktionen auf einem Linux-System ausführen, einschließlich der Ausführung von Docker-Containern. Es gibt keine Möglichkeit, dem Root-Benutzer die Ausführung von Docker-Containern zu verbieten. Stattdessen besteht die Möglichkeit darin, den Zugriff auf den Root-Benutzer einzuschränken und sudo zu verwenden, um Nicht-Root-Benutzern die Ausführung bestimmter Aktionen auf dem System zu ermöglichen.
In diesem Fall spielt es jedoch Docker
keine so große Rolle, weil:
Die Docker-Gruppe gewährt Berechtigungen, die denen des Root-Benutzers entsprechen. Weitere Informationen dazu, wie sich dies auf die Sicherheit Ihres Systems auswirkt, finden Sie unterAngriffsfläche des Docker-Daemons.
Docker als Nicht-Root-Benutzer verwalten
Daher kann jeder Linux-Benutzer, der über die Berechtigung zum Ausführen von Docker-Befehlen verfügt, Root-Rechte auf dem System erlangen.
Root-Berechtigungen innerhalb eines Containers stellen kein Problem dar, da Docker eine Virtualisierungstechnologie auf Betriebssystemebene ist. Der Root-Benutzer innerhalb des Containers hat keinen Zugriff auf das zugrunde liegende Betriebssystem, auf dem der Docker-Daemon ausgeführt wird.