zurück zum Artikel

MirageOS 4.0.0: Unikernels mit schmalem Fußabdruck und hoher Sicherheit

Martin Gerhard Loschwitz

(Bild: Olya Detry/Shutterstock.com)

Basierend auf Unikernels lassen sich mit MirageOS schlanke und potente Abbilder fĂŒr virtuelle Instanzen schaffen. Version 4 bietet einige Neuerungen.

Spricht man das Thema Unikernel gegenĂŒber selbst sattelfesten Admin-Veteranen an, erntet man oft nur unglĂ€ubige Blicke: Allzu verbreitet ist das Prinzip nicht. Da wundert es nicht, dass die Veröffentlichung von MirageOS 4.0.0 an den meisten Menschen der IT-Szene unbemerkt vorbeigehen könnte.

Zu Unrecht: Basierend auf dem Prinzip des Unikernels lassen sich mit MirageOS schlanke und potente Abbilder fĂŒr virtuelle Instanzen schaffen, die auf den Betrieb einer einzelnen Anwendung optimiert sind und so wenig AngriffsflĂ€che wie möglich haben. Obendrein beweist insbesondere MirageOS, dass Linux nicht der Weisheit letzter Schluss sein muss, wenn es um eingebettete, sichere Anwendungen geht.

Dem VerstĂ€ndnis von MirageOS nĂŒtzt es, zunĂ€chst den Begriff Unikernel [1] genauer zu definieren. Wer heute an virtuelle Instanzen und Container denkt, denkt fast immer an ein mehr oder minder komplettes Abbild einer (virtuellen) Festplatte, das die benötigten Komponenten enthĂ€lt. Zu diesen gehört eine Reihe von gemeinsam genutzten Bibliotheken, die zum Teil als AbhĂ€ngigkeit voneinander installiert sind. Weil diese Abbilder neben den fĂŒr die ErfĂŒllung einer Aufgabe notwendigen Komponenten auch viel Beiwerk enthalten, sind sie nicht nur unnötig groß, sondern bieten auch eine unnötig große OberflĂ€che fĂŒr Angreifer. In typischen Linux-Containern existiert zwar zumindest kein Kernel, in klassischen virtuellen Instanzen jedoch sehr wohl.

Die Idee des Unikernels besteht darin, diesem Wildwuchs den Kampf anzusagen. Ein Unikernel besteht per Definition nur aus den Treibern, die nötig sind, um basale OS-Funktionen bereitzustellen, sowie den direkt in den Kernel eingebauten Bibliotheken, die bestimmte Funktionen anbieten. Damit ist auch klar: Ein Unikernel lĂ€sst sich nicht auf beliebigen Hardware-Plattformen einfach so nutzen, wie es bei generischen, modularen Kerneln der Fall wĂ€re. Das trifft auch auf MirageOS zu, das vorrangig fĂŒr den Einsatz auf Grundlage des Xen-Hypervisors konzipiert ist und gerade genug Funktionen enthĂ€lt, um die dort durchgeschleifte Hardware zu nutzen.

DarĂŒber hinaus ist MirageOS vor allem eine Art Baukastensystem: Entwickler wĂ€hlen aus einer Liste von OCaml-Bibliotheken jene aus, die Bestandteil ihres eigenen, hochspezifischen Unikernels sein sollen, kompilieren die Anwendung und erhalten am Ende ein Abbild, das sich nativ in Xen nutzen lĂ€sst.

Mirage 4.0.0 ist ein Major-Release und punktet durch viele echte Neuerungen. Entwickler sind kĂŒnftig etwa angehalten, das Build-System zu nutzen, das OCaml selbst beisteuert: Dune. Dem zuvor genutzten ocamlbuild haben die Entwickler damit implizit den Garaus gemacht. Hiervon erhofft sich das Projekt nicht nur eine wesentlich bessere Integration in das gesamte OCaml-Ökosystem, sondern auch eine beschleunigte Entwicklung. FĂŒr die Maintainer existierender OCaml-Unikernel-Vorlage fĂŒr MirageOS bedeutet das jedoch erst einmal zusĂ€tzliche Arbeit, um das eigene Projekt auf Dune zu konvertieren.

Dabei lĂ€sst sich allerdings gleich auch das Monorepo-Prinzip ĂŒbernehmen, das in MirageOS 4 fĂŒr Unikernels Standard ist und es dem Entwickler erspart, sich Quellen aus unterschiedlichen Repositories zusammenzusuchen. Die Idee ist stattdessen, dass alles, was zu einem fertigen Unikernel gehört, auch in einem Repository Platz findet. Dies kompiliert der Entwickler dann, um es im Anschluss unmittelbar als Unikernel zu nutzen. Der Sprung zu opam-monorepo, das die Mono-Repositories im Hintergrund verwaltet, fĂŒhrt zudem zu einer impliziten Trennung vom eigentlichen Kompiliervorgang und dem Erstellen von den OCaml-Paketen, die spĂ€ter Teil des Unikernels werden. Bis dato war dieser Prozess ein Gesamtprozess, der Verwaltung und Debugging erschwert hat.

Verbessert haben die Mirage-Entwickler obendrein die Cross-Compiling-Optionen in MirageOS. Beim Cross Compiling erstellt der Kompilierer Programme fĂŒr eine andere Zielarchitektur als jene, auf der er selber lĂ€uft. In MirageOS 3 war das bis dato eine schwierige Angelegenheit; MirageOS 4 liefert hier dank der umfassenden Dune-Integration jedoch deutlich mehr Funktionen ab Werk und ermöglicht so etwa den bereits erwĂ€hnten Raspberry-Port, der sich nun auch auf x86_64-Maschinen bauen lĂ€sst.

DarĂŒber hinaus ergeben sich in MirageOS 4 vor allem viele kleine Neuerungen. Etliche der genutzten Ocaml-Bibliotheken kommen in neuen Versionen daher, sodass sich API-VerĂ€nderungen und mithin nötige Anpassungen ergeben. Durch die Umstellung auf Dune ist es deutlich leichter, die Ocaml-IDE Merlin zu nutzen, um MirageOS-Unikernels zu fabrizieren. Ebenfalls Dune ist verantwortlich dafĂŒr, dass sich C- und Rust-Programme nun leichter in MirageOS integrieren lassen. In Summe Ă€ndert sich bei MirageOS 4 mithin einiges, und wer mit MirageOS 3 bereits gewerkelt hat, muss sich an vielen Stellen umstellen. Weil dies der ProduktivitĂ€t letztlich jedoch zutrĂ€glich ist, lohnt sich der Umstieg dennoch. Wer Mirage 4 ausprobieren möchte, findet ausfĂŒhrliche Hinweise auf der Website des Projektes [2].

Mehr von iX Magazin Mehr von iX Magazin [3]

(fo [4])


URL dieses Artikels:
https://www.heise.de/-6658423

Links in diesem Artikel:
[1] https://www.heise.de/select/ix/2016/4/1459410628534175
[2] https://mirageos.org/blog/announcing-mirage-40
[3] https://www.heise.de/ix
[4] mailto:fo@heise.de