Zugriff auf System-Ressourcen mit Docker

Abgeschottet

Docker bietet die Isolation von Anwendungen in bestimmten Laufzeitumgebungen. Das erinnert häufig an Virtualisierung und dort verwendete virtuelle Maschinen. Da Docker jedoch ein anderes Prinzip zur Virtualisierung verwendet, können insbesondere Security-Aspekte in vielen Fällen nicht ohne weiteres eingehalten werden und falls doch, führt dies zu einer Einschränkung der Funktionalität des Containers. In unserem Security-Tipp beschreiben wir, wie Capabilities und Policies den Zugriff auf System-Ressourcen erlauben.
Container sind derzeit in aller Munde, allen voran Docker. In der September-Ausgabe beleuchtet IT-Administrator, was die Technologie für Admins im Unternehmen ... (mehr)

Docker und andere Container-Virtualisierer isolieren Prozesse mittels Control-Groups (CGroups) und Namespaces. Die Basis dieser Funktionalität wurde Anfang 2008 in den Linux-Kernel 2.6 integriert und seitdem immer wieder aktualisiert und erweitert. CGroups erlauben das Einschränken von Prozessen hinsichtlich Betriebssystem-Ressourcen sowie CPU- und IO-Nutzung. Zusätzlich gibt es Userspace-Tools in der Bibliothek "libcgroup" für das Management der CGroups, die Accounting und Zustandskontrolle der Prozesse erlauben.

CGroups werden ergänzt durch die Fähigkeiten des Linux-Kernels, Prozessen in Namespaces Zugriff auf Gruppen von Ressourcen zu ermöglichen. Namespaces gibt es beispielsweise für Benutzer und Gruppen, Prozess-IDs, Netzwerkzugriff inklusive IPTables und Routing, Dateisysteme und Verzeichnisstrukturen sowie Interprozesskommunikation. Wie Namespaces grundsätzlich funktionieren, können Sie mit den folgenden Befehlen beispielsweise für PIDs ausprobieren:

$ sudo unshare --pid --fork --mount-proc bash
$ top

Die Ausgabe im Bild zeigt Ihnen, dass bash nun wie sonst init mit der PID 1 läuft und top darunter mit der PID 4. Die Argumente "--fork" und "--mount-proc" stellen sicher, dass die Prozesse bei Nutzung des PID-Namespaces auf dem Host dem unshare-Prozess zugeordnet werden und ein eigenes /proc-Dateisystem erhalten. Letzteres ist wichtig, da sonst das /proc-Dateisystem des Hosts und damit Prozesse außerhalb des Namespaces beeinträchtigt würden.

Zugriff auf Namespaces

Innerhalb des Namespaces ist es nun also nicht mehr ohne weiteres möglich, auf die anderen Prozesse zuzugreifen. Da Sie keinen Zugriff auf das /proc-Dateisystem des Hosts haben, können Sie auch mit root-Rechten nicht ohne weiteres auf deren Eigenschaften zugreifen. Andersherum funktioniert das jedoch, so können Sie vom Host

...

Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.

Ähnliche Artikel

comments powered by Disqus

Artikel der Woche

Setup eines Kubernetes-Clusters mit Kops

Vor allem für Testinstallationen von Kubernetes gibt es einige Lösungen wie Kubeadm und Minikube. Für das Setup eines Kubernetes-Clusters in Cloud-Umgebungen hat sich Kops als Mittel der Wahl bewährt. Wir beschreiben seine Fähigkeiten und geben eine Anleitung für den praktischen Einsatz. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Container

Wie setzen Sie Container ein?

  • Gar nicht
  • Docker standalone
  • Docker mit Kubernetes
  • Docker mit Swarm
  • Docker mit anderem Management
  • LXC/LXD
  • Rocket
  • CRI-O auf Kubernetes
  • Container auf vSphere
  • Andere (siehe Kommentare auf der Ergebnisseite)

Google+

Ausgabe /2018

Microsite