Unikernel
Der nächste logische Schritt in der Entwicklung von VM zu Containern sind Unikernels, die versuchen, die Konzepte von Containern noch weiter zu entwickeln. Das Unikernel-Konzept zielt darauf ab, die Sicherheitsvorteile der Partitionierung auf VM-Ebene mit den Geschwindigkeits- und Platzvorteilen von Containern zu verbinden.
Unikernels sind im Grunde genommen eine Reihe von vorgefertigten Binärbibliotheken. Sie übernehmen keine Ressourcenzuweisung. Der Hypervisor übernimmt die direkte Hardwareinteraktion. Alle anwendungsspezifischen Systemaufrufe werden so nah wie möglich an die Anwendung herangeführt. Dies wird im Hypervisor gehandhabt.
Unikernels haben weniger Overhead als Container und sind schlanker, was die Leistung potenziell verbessern kann. Außerdem wird die Sicherheit durch den Verzicht auf einen Kernel mit mehreren Benutzern und mehreren Adressräumen drastisch verbessert.
Betriebssystem vs. Unikernel
Im Vergleich zu einem Betriebssystem weisen Unikernel erhebliche Sicherheitsvorteile auf, da dieser Ansatz die Angriffsfläche drastisch reduziert. Außerdem erfordern diese Arten von Anwendungen keine garantierten Zeitvorgaben und Sicherheitszertifizierungsartefakte.
Unikernels laufen im Gegensatz zu Betriebssystemen im Benutzer- und nicht im Kernelmodus. Auf hohem Niveau ist der Kernelmodus im Allgemeinen für die niedrigsten und vertrauenswürdigsten Funktionen des Betriebssystems reserviert. Abstürze im Kernelmodus sind katastrophal; sie führen zum Stillstand des gesamten Systems. Im Benutzermodus hat der ausführende Code keine Möglichkeit, direkt auf Hardware oder Referenzspeicher zuzugreifen. Dies ist der Hauptgrund warum aktuell die Verwendung von Unikerneln in Erwägung gezogen wird. Es vergeht kaum eine Woche, in der nicht über einen Cyberangriff auf kritische Infrastrukturen, ein Unternehmen oder ein Bundesunternehmen berichtet wird. Das Betriebssystem ist eine Schwachstelle.
Einer der wichtigsten Nachteile von Unikernel ist, dass sie nur einen Prozess und einen Benutzer haben. Das Hinzufügen eines Prozessmanagements ist mit erheblichem Aufwand verbunden. Es muss eine Möglichkeit geben, einen Prozess zu starten/stoppen/inspizieren, die Kommunikation zwischen den Prozessen sicherzustellen usw. Mehrere Benutzer erfordern Autorisierung und Authentifizierung, Ressourcenisolierung usw. Diese sind bei einer Einzelanwendung nicht erforderlich.
Das bedeutet jedoch, dass bestimmte Anwendungen kaum als Unikernel implementiert werden können. Durch eine Implementierung mehrere Einzelprozessanwendungen oder den Einsatz von Betriebssystemen neben Unikerneln könnte man das umgehen.
Es gibt jedoch eine Reihe von Problemen im Zusammenhang mit Unikernels, die ihre Anwendung bisher eingeschränkt haben:
- Debugging: Da auf einem Unikernel kein Betriebssystem läuft, funktioniert der Ansatz nicht, sich direkt mit der Shell zu verbinden und diese zu untersuchen;
- Die Erstellung von Unikernel-Images ist kompliziert und erfordert fundierte Kenntnisse auf diesem Gebiet;
- Aktuelle Anwendungsframeworks müssen angepasst und eine Dokumentation zur Verwendung in Unikerneln erstellt werden;
- Das Fehlen eines sicherheitszertifizierbaren/zertifizierten
- Unikernels für unternehmenskritische Anwendungen.Die meisten öffentlich zugänglichen Unikernel-Optionen sind an eine bestimmte Compiler-Sprache gebunden, wie z.B. runtime.js (javascript), Clive (Go), LING (Erlang) und MirageOS (OCaml). OSV, ein modularer Open-Source-Unikernel, hingegen kann viele Sprachen ausführen.
Anwendung in unternehmenskritischen Applikationen
Noch sind Unikernels nicht ganz reif für die breite Anwendung in unternehmenskritischen Applikationen. Doch die Vorteile, die sie bieten, sind so bedeutend, dass Entwicklungsteams ermutigt werden, die Unikernel-Technik in bestimmten, begrenzten Kontexten zu nutzen. Damit sie dies tun können, werden Unikernel-Produkte benötigt, die mit kommerziell bewährten Echtzeitbetriebssystemen verbunden sind.
Durch die Beibehaltung eines hohen Maßes an Kompatibilität zwischen dem Unikernel und dem eigenständigen Produkt können Entwickler Anwendungen frei zwischen den Umgebungen portieren. Dies erlaubt es, die Vorteile jedes einzelnen Systems erforschen und nutzen zu können, ohne dass es zu einer erheblichen Verdoppelung des Entwicklungsaufwands kommt.
In der Halle 4 der embedded world 2023 und in den Tracks 3&6 der Conference erfahren Sie alles rund um Software für eingebettete Systeme.
Quelle: Die Originalfassung des Artikels von Ian Ferguson, Lynx Software Technologies, lesen Sie auf elektroniknet.de