Bottlerocket: AWS präsentiert auf Rust ausgerichtetes Linux für Container
Amazon Web Services hat Bottlerocket herausgegeben – ein neues Linux mit Schwerpunkt Sicherheit, dessen Komponenten überwiegend in Rust geschrieben sind.
- Silke Hahn
Amazon Web Services (AWS) hat die allgemeine und freie Verfügbarkeit von Bottlerocket 1.0 mitgeteilt, einem quelloffenen Linux-Betriebssystem für die Cloud-Plattform. Bottlerocket bringt zwei Besonderheiten mit: Es ist gebaut, um Workloads mit Containern zu betreiben, und die meisten seiner Komponenten sind nicht in C, sondern in Rust geschrieben.
Zweite Linux-Distribution von AWS, diesmal mit Rust
Seitens AWS ist das bereits die zweite Linux-Distribution: Die erste war Amazon Linux, das sich in seiner zweiten Auflage befindet und sich in einem Docker-Container betreiben lässt, aber für ein generell weiteres Einsatzfeld in der AWS-Cloud gedacht ist. Mit Bottlerocket sollen Entwickler nun ein speziell auf Container zugeschnittenes Betriebssystem an die Hand bekommen, das sie neben ihrem jeweils bevorzugten Orchestrierungswerkzeug einsetzen können. Nutzer können offenbar ihre Container zwischen den beiden AWS-Linux-Systemen hin- und herschieben.
Gegen Angriffe in verteilten Umgebungen
Bottlerocket wurde erstmals im März angekündigt, aber eigentlich ist AWS hier kein Vorreiter: Gibt es doch bereits Red Hat Enterprise Linux CoreOS (RHCOS), Project Atomic und RancherOS, die Linux für Container entwickeln. So teilte AWS in der ursprünglichen Ankündigung auch mit, dass es sich von diesen Projekten inspirieren habe lassen. Das Betriebssystem ist großteils in Rust geschrieben, um Probleme wie unsicheren Speicherzugang, Pufferüberlauf und Race Conditions zwischen Threads zu reduzieren. Die Distribution enthält mit dm-verity
ein Verifizierungs-Ziel (read-only), das Entwicklern Integritätsprüfungen unter Rückgriff auf die Krypto-API des Kernels ermöglicht.
Diesen sogenannten Device-Mapper hat AWS in der Ankündigung als Kernel-Feature beschrieben, das Angriffe wie das versuchte Überschreiben der Kern-Software abwehren soll. Das neue Betriebssystem soll den besonderen Anforderungen verteilter Umgebungen Rechnung tragen. Bei Bottlerocket existiert für den Admin optional ein eigener Container mit erweiterten Rechten, über den er per SSH auf das Betriebssystem zugreift. Die Bottlerocket-Instanzen laufen offenbar unter Security-Enhanced Linux (SELinux), das Container und Betriebssystem zusätzlich voneinander abschirmt.
Unter der Haube: Technische Neuerungen
Bottlerocket enthält ausschließlich Software für das Betreiben von Containern. Das System setzt für Updates auf Images statt Pakete, wodurch Nutzer es in einem Schritt aktualisieren und nötigenfalls auch auf einen früheren Stand zurücksetzen können. Version 1.0 bringt Neuerungen für Kubernetes 1.16 und 1.17, unterstützt ARM-Instanzen und weitere AWS-Regionen. Betreiben lässt sich Bottlerocket wahlweise mit dem Amazon Elastic Container Service (ECS) oder mit dem Amazon Kubernetes Container Service (EKS). Für das Major Release haben die Bottlerocket-Entwickler einige neue Features ergänzt und an der Sicherheit gearbeitet. Zentrale Änderungen erfährt der Elastic Container Service (ECS), den die Entwickler von nicht unterstützten Eigenschaften bereinigt haben.
Der ecs-agent
startet nun erst nach der Konfiguration und ist dabei an einen Localhost gebunden. Die Variante aws-ecs-1
ist nun als Preview verfügbar und bringt eine Reihe von Änderungen wie die Ausführung von Role-Support für die awslogs. Im Build hat das Bottlerocket-Team weitere Targets ergänzt, so cargo make ami-public
und ami-private
, für das Veröffentlichen von Parametern sind die Targets cargo make ssm
und promote-ssm
neu hinzugekommen. Das Caching des Rust-Build ist ebenfalls repariert. Die Sicherheits-Guidance erfährt eine Neuauflage, und weitere unterstützte Architekturen sind im README ergänzt.
Interessierte können sich in der Ankündigung im AWS-Blog weiter über die neue Linux-Distribution informieren. Der Quellcode des Open-Source-Projekts steht auf GitHub bereit, dort lassen sich auch Unterlagen zu seinem Design, zum Code, den Build-Tools, dem Testing und der Dokumentation einsehen. Mehr Informationen zur Kernel-Verifikation durch Device-Mapping lässt sich der Dokumentation bei kernel.org entnehmen.
Linux und Rust
Für AWS-Nutzer dürfte der Nutzen von Bottlerocket darin liegen, dass sie hier eine übersichtlich handhabbare, für Container sichere Linux-Version finden. Linux-Nutzer dürfte vor allem der Einsatz von Rust im Kernel faszinieren – eine Entwicklung, die im Umfeld der Linux Plumbers Conference und schon länger über die Mailingliste intensiv diskutiert wird. Schlüsselfiguren wie Linus Torvalds und der Kernel-Maintainer Greg Kroah-Hartmann sprachen sich unlängst für die Kernel-spezifische Rust-Entwicklung aus. Die Entwicklung eines Open-Source-Betriebssystems mit Rust im Linux-Kernel durch AWS steht wohl im selben Geist wie die kürzlich erfolgte Gründung einer Rust-Foundation, die die Programmiersprache etwas unabhängiger vom gebeutelten Mutterunternehmen Mozilla machen soll.
(sih)