
Das Unternehmen Amazon über die finale Veröffentlichung — eine spezialisierte Distribution zum Starten und effektiven Verwalten von Containern.
Bottlerocket (übrigens der Name für kleine, selbstgemachte Rauchraketen) ist nicht das erste Betriebssystem für Container, hat jedoch gute Chancen, sich aufgrund der Standardintegration mit AWS-Diensten weit zu verbreiten. Obwohl das System auf die Amazon Cloud ausgerichtet ist, ermöglicht der offene Quellcode, dass es überall zusammengesetzt werden kann: lokal auf einem Server, auf einem Raspberry Pi, in jeder konkurrierenden Cloud und sogar in einer Umgebung ohne Container.
Es stellt eine durchaus würdige Alternative zur CoreOS-Distribution dar, die von Red Hat eingestellt wurde.
Das Amazon Web Services-Team verfügt bereits über Amazon Linux, das kürzlich in der zweiten Version erschienen ist: eine allgemeine Distribution, die in einem Docker-Container oder mit den Linux-KVM-, Microsoft Hyper-V- und VMware ESXi-Hypervisoren gestartet werden kann. Es wurde für die Nutzung in der AWS-Cloud optimiert, aber mit der Einführung von Bottlerocket wird allen empfohlen, auf das neue System umzusteigen, das sicherer, moderner ist und weniger Ressourcen benötigt.
AWS kündigte Bottlerocket an . Sie erkannte sofort, dass dies nicht das erste „Linux für Container“ sei und nannte dabei CoreOS, Rancher OS und Project Atomic als Inspirationsquellen. Die Entwickler erklärten, dass das Betriebssystem das Ergebnis der Lehren ist, die sie über lange Zeit in der Bereitstellung von Produktionsdiensten im Maßstab von Amazon gezogen haben, und unter Berücksichtigung der Erfahrungen, die sie in den letzten sechs Jahren gesammelt haben, um Container auszuführen.
Extrem minimalistisches Design
Linux wurde von allem befreit, was nicht für den Betrieb von Containern notwendig ist. Dieses Konzept reduziert, so das Unternehmen, die Angriffsfläche.
Das bedeutet, dass im Basissystem weniger Pakete installiert werden, was die Wartung und Aktualisierung des Betriebssystems vereinfacht und die Wahrscheinlichkeit von Problemen durch Abhängigkeiten verringert sowie den Ressourcenverbrauch senkt. Prinzipiell läuft hier alles in separaten Containern, während das Basissystem nahezu nackt ist.
Amazon hat außerdem alle Shells und Interpreter entfernt, um das Risiko ihrer Verwendung oder den unbeabsichtigten Privilegienaufstieg von Benutzern auszuschließen. Um minimale Komplexität und Sicherheit zu gewährleisten, sind die Kommandozeile, der SSH-Server und interpretierte Sprachen wie Python im Basis-Image nicht enthalten. Die Verwaltungstools wurden in einen separaten, standardmäßig deaktivierten Dienstcontainer ausgelagert.
Das Systemmanagement erfolgt über zwei Wege: über die API und durch Orchestrierung.
Anstelle eines Paketmanagers, der einzelne Softwarekomponenten aktualisiert, lädt Bottlerocket ein komplettes Dateisystem-Image herunter und wird neu gestartet. Bei einem Bootfehler erfolgt automatisch ein Rollback, und bei einem Ausfall der Arbeitslast kann der Rollback manuell initiiert werden (Befehl über die API).
Framework (The Update Framework) lädt Aktualisierungen basierend auf Images in alternative oder „unmontierte“ Partitionen. Zwei Diskpartitionen sind für das System vorgesehen, wobei eine die aktive Systeminstallation enthält und auf der anderen das Update kopiert wird. Hierbei wird die Root-Partition im Nur-Lese-Modus gemountet, während die Partition... /etc wird mit einem in den Arbeitsspeicher integrierten Dateisystem montiert und stellt den ursprünglichen Zustand nach einem Neustart wieder her. Direkte Änderungen an Konfigurationsdateien in /etc werden nicht unterstützt: Um Einstellungen zu speichern, sollten Sie die API verwenden oder Funktionalitäten in separate Container auslagern.

API-gestütztes Aktualisierungsschema
Sicherheit
Container werden mit den Standardmechanismen des Linux-Kernels – cgroups, Namespaces und seccomp – erstellt, und als System zur Durchsetzung des Zugriffs, also zur zusätzlichen Isolation, wird im "enforcing" Modus verwendet.
Standardmäßig sind Richtlinien zur Ressourcenteilung zwischen Containern und dem Kernel aktiviert. Die Binärdateien sind mit Flags geschützt, sodass Benutzer oder Programme sie nicht ausführen können. Sollte jemand Zugriff auf das Dateisystem erhalten, bietet Bottlerocket ein Werkzeug zur Überprüfung und Nachverfolgbarkeit aller vorgenommenen Änderungen.
Der Modus "verifiziertes Boot" wird durch die Funktion device-mapper-verity realisiert (), die die Integrität der Root-Partition während des Bootvorgangs überprüft. AWS beschreibt dm-verity als „eine Linux-Kernel-Funktion, die die Integrität überprüft, um die Ausführung von Malware im Betriebssystem, wie das Überschreiben der Basis-Systemsoftware, zu verhindern“.
Ebenfalls im System vorhanden ist ein Filter (extended BPF, ), der es ermöglicht, Kernel-Module durch sicherere BPF-Programme für niedrigere Systemoperationen zu ersetzen.
Ausführungsmodell
Vom Benutzer definiert
Kompilierung
Sicherheit
Fehlermodus
Zugriff auf Ressourcen
Benutzer
eine Aufgabe
ja
jede
Benutzerrechte
Unterbrechung der Ausführung
Systemaufruf, Fehler
Kern
eine Aufgabe
nein
statisch
nein
Kernel-Panik
direkt
BPF
Ereignis
ja
JIT, CO-RE
Verifizierung, JIT
Fehlermeldung
eingeschränkte Helfer
Der Unterschied zwischen BPF und normalem Benutzer- oder Kernel-Code ist,
AWS hat erklärt, dass Bottlerocket „ein Betriebsmodell anwendet, das die Sicherheit weiter erhöht, indem es das Verbinden mit Produktionsservern mit Administratorberechtigungen verhindert“ und dass es „für große verteilte Systeme geeignet ist, bei denen die Kontrolle über jeden einzelnen Host eingeschränkt ist“.
Für Systemadministratoren steht ein Administrationscontainer zur Verfügung. AWS ist jedoch der Ansicht, dass Administratoren nicht oft innerhalb von Bottlerocket arbeiten müssen: „Der Zugang zu einer separaten Bottlerocket-Instanz ist für seltene Operationen gedacht: erweiterte Fehlersuche und Debugging“ — Entwickler.
Die Programmiersprache Rust
Das Betriebssystem-Toolkit über dem Kernel ist hauptsächlich in Rust geschrieben. Diese Sprache reduziert von Natur aus , sowie .
Beim Standard-Build werden die Flags angewendet --enable-default-pie und --enable-default-ssp um die Randomisierung des Adressraums von ausführbaren Dateien zu aktivieren (, PIE) und Schutz gegen Stacküberläufe.
Für C/C++-Pakete werden außerdem die Flags eingeschlossen -Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONS und -fstack-clash-protection.
Neben Rust und C/C++ sind einige Pakete in Go geschrieben.
Integration mit AWS-Diensten
Der Unterschied zu ähnlichen Container-Betriebssystemen besteht darin, dass Amazon Bottlerocket für den Einsatz auf AWS und die Integration mit anderen AWS-Diensten optimiert hat.
Der beliebteste Container-Orchestrator ist Kubernetes, deshalb hat AWS die Integration mit ihrem eigenen Enterprise Kubernetes Service (EKS) eingeführt. Die Orchestrierungstools laufen in einem separaten Management-Container. , der standardmäßig aktiviert ist und über die API und den AWS SSM Agent verwaltet wird.
Es wird interessant sein zu sehen, ob Bottlerocket erfolgreich sein kann, angesichts des Scheiterns ähnlicher Initiativen in der Vergangenheit. Zum Beispiel war PhotonOS von VMware wenig gefragt, und RedHat hat CoreOS übernommen und , das als Pionier in diesem Bereich galt.
Die Integration von Bottlerocket in die AWS-Services macht dieses System einzigartig. Möglicherweise ist dies der Hauptgrund, warum einige Nutzer Bottlerocket anderen Distributionen wie CoreOS oder Alpine vorziehen könnten. Das System ist ursprünglich für die Nutzung mit EKS und ECS konzipiert, jedoch ist dies nicht zwingend erforderlich. Erstens kann Bottlerocket auch als gehostete Lösung verwendet werden. Zweitens behalten EKS- und ECS-Nutzer weiterhin die Wahl der Betriebssysteme.
Der Quellcode von Bottlerocket ist auf GitHub unter der Apache 2.0-Lizenz veröffentlicht. Die Entwickler reagieren bereits .
Im Auftrag der Werbung
VDSina bietet . Es ist möglich, jedes Betriebssystem zu installieren, einschließlich aus Ihrem eigenen Image. Jeder Server ist an einen 500-Mbit-Internetzugang angebunden und kostenlos vor DDoS-Angriffen geschützt!
Quelle: habr.com
