GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Docker Privileged – Sollten Sie privilegierte Docker-Container ausführen?

Einführung

Docker-privilegiert ist eine von vielen nützlichen Funktionen dieser leistungsstarken Virtualisierungsplattform. Bevor Sie mit der Arbeit im privilegierten Modus beginnen, stellen Sie sicher, dass Sie verstehen, wie er funktioniert.

In diesem Tutorial erfahren Sie, was privilegierte Docker-Container sind, wann Sie sie verwenden und ob dies eine gute Option für Sie ist.

Was ist der privilegierte Docker-Modus?

Der privilegierte Docker-Modus gewährt allen Geräten auf dem Hostsystem Root-Funktionen für Docker-Container. Das Ausführen eines Containers im privilegierten Modus gibt ihm die Fähigkeiten seiner Hostmaschine. Beispielsweise kann es App Arm- und SELinux-Konfigurationen ändern.

Mit den Kernel-Funktionen und dem Gerätezugriff des Hosts können Sie sogar eine neue Instanz der Docker-Plattform innerhalb des privilegierten Containers installieren. Im Wesentlichen ermöglicht dieser Modus das Ausführen von Docker innerhalb von Docker.

Wie überprüfe ich, ob ein Container privilegiert ist?

Um zu überprüfen, ob Sie einen Container im privilegierten Modus ausführen, verwenden Sie den Befehl:

docker inspect --format='{{.HostConfig.Privileged}}' [container_id]

Wenn der Container privilegiert ist, antwortet die Ausgabe mit true , wie im Bild unten.

Wenn der Container andererseits nicht privilegiert ist, zeigt die Ausgabe die Meldung false an .

Wie führe ich den privilegierten Docker-Modus aus?

Weisen Sie Docker an, einen Container im privilegierten Modus auszuführen, indem Sie --privileged hinzufügen Option zum Ausführungsbefehl:

sudo docker run --privileged [image_name]

Docker-privilegiertes Beispiel

Um einen Ubuntu-Container (interaktiv) im privilegierten Modus auszuführen, würden Sie Folgendes verwenden:

sudo docker run -it --privileged ubuntu

Um zu testen, ob der Container Zugriff auf den Host hat, können Sie versuchen, ein temporäres Dateisystem (tmpfs ) und mounten Sie es unter /mnt :

mount -t tmpfs none /mnt

Listen Sie nun die Speicherplatzstatistiken auf (in vom Menschen lesbarer Form). Format) mit dem Befehl:

df -h

Das neu erstellte Dateisystem sollte in der Liste erscheinen, wie im Bild unten.

Warum ist das Ausführen von privilegierten Containern nicht sicher?

Genauso wie Ubuntu davon abrät, das System als Root zu verwenden, tut dies auch Docker. Den Kernel und die Hardware-Ressourcen des Hosts einem Cyberangriff von außen auszusetzen, ist immer eine potenzielle Bedrohung für das System.

Aus diesem Grund wird nicht empfohlen, privilegierte Container zu verwenden in einer Produktionsumgebung.

Mögliche Verstöße über privilegierte Container

Privilegierte Container zu haben, ist ein Sicherheitsrisiko für jedes Unternehmen. Es schafft Möglichkeiten für böswillige Benutzer, die Kontrolle über das System zu übernehmen.

Wenn Sie einem Container Root-Zugriff auf alles auf dem System gewähren, öffnet sich ein Gelegenheitsfenster für Cyberangriffe. Ein Cyberangreifer könnte sich vom Container aus mit dem Host verbinden und die etablierte Infrastruktur und Konfiguration gefährden.

Das häufigste Szenario ist, wenn ein legitimer Benutzer das gegebene Privileg für böswillige Aktivitäten missbraucht.

Wie kann die Rechteausweitung für Docker-Container minimiert werden?

Der beste Weg, die Ausweitung der Berechtigungen von Docker-Containern zu verhindern, besteht darin, privilegierte Container überhaupt nicht zu verwenden.

Wenn Sie jedoch eine Anwendung ausführen, die mit dem Root-Benutzer ausgeführt werden muss, gibt es eine Möglichkeit, die Wahrscheinlichkeit böswilliger Aktivitäten zu minimieren. Dies erfolgt durch Neuzuordnung des Benutzernamensraums , wobei der Benutzer für diesen bestimmten Container einem weniger privilegierten Benutzer auf dem Docker-Host neu zugeordnet wird. Im Wesentlichen betrachtet der Container den Benutzer als Root, während der Host dies nicht tut.

Die Neuzuordnung umfasst die Zuweisung einer Reihe von UIDs, die innerhalb des Containers (Namespace) als normale UIDs von 0 bis 65536 funktionieren, aber keine Berechtigungen auf dem Host haben. Zwei Dateien verwalten die Benutzerkonfiguration – eine für den Benutzer-ID-Bereich (/etc/subuid ) und die andere für den Gruppen-ID-Bereich (/etc/subgid ).

Docker verwendet standardmäßig die dokremap Benutzer und Gruppe, um die Neuzuordnung vorzunehmen.


Ubuntu
  1. 5 Gründe, warum Sie eine Linux-Container-Strategie entwickeln sollten

  2. Portainer:Eine benutzerfreundliche GUI zum Ausführen und Abrufen von Docker-Containern

  3. Sollten Sie eine Datenbank in Docker ausführen?

  4. Einführung in Docker-Container

  5. So installieren Sie Docker und führen Docker-Container in Ubuntu aus

So installieren Sie Docker unter Debian 9

Traefik für Docker-Container auf Ubuntu

So installieren Sie Podman auf Rocky Linux 8 / AlmaLinux, um Container auszuführen

So führen Sie Docker-Container aus

So entfernen Sie Docker-Container

So stoppen Sie Docker-Container