Gibt es einen echten Vorteil, wenn man einen Benutzer in die docker
Gruppe aufnimmt, anstatt ihm sudo
Zugriff auf den Host zu gewähren?
Der Vollständigkeit halber möchte ich sagen, dass ich ein Tutorial schreibe, das zeigt, wie Mitglieder der docker
Gruppe direkt (also ohne zu verwenden sudo
) über einen Unix-Domain-Socket, auf dem der dockerd
Server lauscht, mit dem Docker-Server interagieren können.
Wenn man jedoch einem nicht privilegierten Benutzer die Möglichkeit gibt, beliebige Container zu erstellen, erhält dieser anscheinendWirksamRoot-Zugriff auf den Host: So wird es beispielsweise ganz einfach, das Host-FS durch Bind-Mounts zu ändern. Oder über procfs
/ mit dem Kernel zu interagieren sysfs
. Welchen Sinn hat es also, jemanden in die docker
Gruppe aufzunehmen, anstatt diesem Benutzer Root-Zugriff auf das System zu gewähren?
Antwort1
Oder der Benutzer könnte einfachLaden Sie einen schönen, praktischen Docker-Container, der sie direkt in eine Root-Shell wirft.
Das Gewähren des Zugriffs auf den Docker-Socket garantiert tatsächlich praktisch die Möglichkeit zur Rechteausweitung.
Hier kommt es darauf an, Ihre Absichten zu erklären. Sie fügen jemanden in die docker
Gruppe ein, damit er Container ausführen kann, ohne sudo
jedes Mal jeden Befehl ausführen zu müssen. Sie fügen jemanden hinzu, sudoers
wenn Sie möchten, dass er jeden Befehl als Root ausführen kann sudo
.
Wenn Sie nicht beliebigen Personen Zugriff auf den Docker-Socket gewähren möchten, sollten Sie mit ziemlicher Sicherheit ein Orchestrierungssystem wie OpenShift oder Kubernetes verwenden.