Google: gVisor als sichere Sandbox für Container

Google stellt mit gVisor eine neue Art von Sandbox vor, die helfen soll, Container sicher zu isolieren. Dabei soll gVisor im Vergleich einer virtuellen Maschine einen weitaus kleineren Overhead besitzen.

In Pocket speichern vorlesen Druckansicht
Google: gVisor als sichere Sandbox für Container
Lesezeit: 3 Min.
Von
  • Frank-Michael Schlede

Mit gVisor stellt Google den Entwicklern einen User-Space Kernel speziell für Container zur Verfügung, der in Go geschrieben wurde. Die Software beinhaltet einen substantiellen Anteil der Linux Systemoberfläche, wie die Entwickler in einem Eintrag auf dem Google Cloud Platform Blog erläutern. Die gVisor-Software beinhaltet Laufzeitumgebung der Open Container Initiative (OCI) mit der Bezeichnung runsc, durch deren Verwendung eine Grenze zur Isolierung zwischen der Anwendung und dem Host-Kernel eingezogen wird. gVisor kann sowohl in Docker als auch in Kubernetes integriert werden. So soll es deutlich leichter sein, diese geschützten Sandbox-Container in produktiven Umgebungen einzusetzen.

Die Google-Entwickler heben in ihrem Blogeintrag ganz besonders hervor, wie sich gVisor von den üblichen Containern und virtuellen Maschinen unterscheidet: Anwendungen, die in traditionellen Linux-Containern aktiv sind, greifen auf die gleiche Art und Weise auf die Systemressourcen zu, wie das auch Anwendungen tun, die sich nicht in Containern befinden. Sie schicken Systemaufrufe direkt an den Host-Kernel.

Der grundsätzliche Aufbau des Sandbox-Containers gVisor. (Bild: Google)

Zwar limitiert der Kernel auch bei normalen Containern die Zugriffe, die eine Anwendung auf die Systemressourcen ausführen kann. Trotzdem bietet ein solcher Kernel nach Aussagen der Google-Entwickler immer noch eine große Angriffsfläche für Schadprogramme. Als eine Möglichkeit, diese Probleme in den Griff zu bekommen, erwähnen die Google-Programmierer die Variante, jeden Container in einer eigenen virtuellen Maschine zu betreiben, sodass jeder Container seine eigene Maschine einschließlich Kernel und virtualisierter Geräte besitzt. Dadurch wird die Abschirmung des Programms sehr gut, aber das gesamte Konstrukt wird mehr Ressourcen brauchen – der Footprint wird sehr viel größer.

Im Gegensatz dazu ist gVisor sehr viel leichtgewichtiger, bietet aber das gleiche Maß an Abschirmung und damit Sicherheit. Der Kern ist dabei ein Kernel, der als ganz normaler, nicht privilegierter Prozess aktiv ist und die meisten Linux-Systemaufrufe unterstützt. Um höhere Typ- und Speichersicherheit zu erreichen, haben sich die Entwickler nach eigenem Bekunden für die Programmiersprache Go entschieden. Genau wie in einer normalen VM, erhält eine Anwendung, die in einer gVisor-Sandbox läuft, ihren eigenen Kernel und eine Auswahl virtualisierter Geräte, die vom Host und von anderen Sandboxen isoliert sind.

Laut den Google-Mitarbeitern kann gVisor als ein extrem paravirtualisiertes Betriebssystem betrachtet werden, bei dem der Ressourcenbedarf sehr flexibel gehalten werden kann und zudem geringere Fixkosten als bei einer vollständigen virtuellen Maschine entstehen.

gVisor unterstützt zwar aktuell einen Großteil der Linux System-API (aktuell sollen es bereits mehr als 200 Systemaufrufe sein), aber eben noch nicht alle. Einige Systemaufrufe werden im Moment ebenso wie einige Teile des /proc- und /sys-Dateisystems noch nicht unterstützt, weshalb nicht alle Anwendungen in gVisor laufen werden. Aber bekannte Anwendungen wie unter anderem Node.js, Java 8, MySQL, Jenkins, Apache, Redis und MongoDB sollen bereits problemlos funktionieren. Weitere Informationen und technische Hintergrundinformationen können interessierte Entwickler in einem Repository auf GitHub finden. (fms)