Amazon hat die endgültige Veröffentlichung von Bottlerocket angekündigt , einer spezialisierten Distribution für den Betrieb und die effiziente Verwaltung von Containern. Bottlerocket (so nennen sie übrigens kleine hausgemachte Schwarzpulverraketen) ist nicht das erste Betriebssystem für Container, aber es ist wahrscheinlich, dass es aufgrund der Standardintegration mit AWS-Diensten weit verbreitet wird. Obwohl sich das System auf die Amazon-Cloud konzentriert, können Sie es mit Open Source überall erstellen: lokal auf einem Server, auf einem Raspberry Pi, in einer konkurrierenden Cloud und sogar in einer containerlosen Umgebung. Es ist ein würdiger Ersatz für die CoreOS-Distribution, die Red Hat begraben hat.
Im Allgemeinen verfügt Amazon Web Services bereits über Amazon Linux, das kürzlich in seiner zweiten Version veröffentlicht wurde: Es handelt sich um eine Allzweckdistribution, die in einem Docker-Container oder mit Linux KVM-Hypervisoren, Microsoft Hyper-V und VMware ESXi ausgeführt werden kann. Es wurde für die Ausführung in der AWS-Cloud optimiert. Mit Bottlerocket wird jedoch jedem empfohlen, ein Upgrade auf ein neues System durchzuführen, das sicherer, moderner und mit weniger Ressourcen ausgestattet ist.
AWS kündigt Bottlerocket im März 2020 an... Sie erkannte sofort, dass dies nicht das erste "Linux für Container" war, und zitierte CoreOS, Rancher OS und Project Atomic als Inspirationsquellen. Die Entwickler schrieben, dass das Betriebssystem "das Ergebnis von Lehren ist, die wir aus der langen Laufzeit von Produktionsdiensten bei Amazon gezogen haben, und aus den Erfahrungen, die wir in den letzten sechs Jahren beim Ausführen von Containern gesammelt haben".
Extremer Minimalismus
Linux wurde alles entzogen, was zum Ausführen von Containern nicht benötigt wird. Dieses Design reduziert laut Angaben des Unternehmens die Angriffsfläche.
Dies bedeutet, dass weniger Pakete auf dem Basissystem installiert sind, was die Wartung und Aktualisierung des Betriebssystems erleichtert, die Wahrscheinlichkeit von Problemen aufgrund von Abhängigkeiten verringert und den Ressourcenverbrauch verringert. Grundsätzlich funktioniert hier alles in separaten Containern, und das Basissystem ist praktisch leer.
Amazon hat außerdem alle Shells und Interpreter entfernt, um das Risiko zu vermeiden, dass Benutzer sie verwenden oder versehentlich Berechtigungen eskalieren. Dem Basis-Image fehlen aus Gründen des Minimalismus und der Sicherheit eine Befehlsshell, ein SSH-Server und interpretierte Sprachen wie Python. Administrator-Tools wurden in einen separaten Service-Container verschoben, der standardmäßig deaktiviert ist.
Die Systemverwaltung erfolgt auf zwei Arten: über API und Orchestrierung.
Anstelle eines Paketmanagers, der einzelne Softwareteile aktualisiert, lädt Bottlerocket ein vollständiges Dateisystem-Image herunter und lädt es erneut. Wenn der Download fehlschlägt, wird automatisch ein Rollback durchgeführt, und ein Workload-Fehler kann einen manuellen Rollback auslösen (Befehl über API).
Das TUF (The Update Framework) lädt bildbasierte Updates auf alternative oder "nicht gemountete" Partitionen herunter. Dem System werden zwei Festplattenpartitionen zugewiesen, von denen eine das aktive System enthält, und das Update wird auf die zweite kopiert. In diesem Fall wird die Root-Partition im schreibgeschützten Modus bereitgestellt, und die Partition
/etcwird mit dem Dateisystem im tmpfs- RAM bereitgestelltund stellt nach dem Neustart seinen ursprünglichen Zustand wieder her. Das direkte Ändern von Konfigurationsdateien wird /etcnicht unterstützt: Um Einstellungen zu speichern, verwenden Sie die API oder verschieben Sie die Funktionalität in separate Container.
API-Aktualisierungsschema
Sicherheit
Container werden von Standard-Linux-Kernelmechanismen erstellt - cgroups, Namespaces und seccomp. SELinux wird im " Enforcement " -Modus als System der erzwungenen Zugriffskontrolle verwendet, dh zur zusätzlichen Isolierung .
Standardmäßig sind Richtlinien für die gemeinsame Nutzung von Ressourcen zwischen Containern und dem Kernel aktiviert. Binärdateien sind durch Flags geschützt, um zu verhindern, dass Benutzer oder Programme sie ausführen. Und wenn jemand in das Dateisystem gelangt ist, bietet Bottlerocket ein Tool zum Überprüfen und Verfolgen von vorgenommenen Änderungen.
Der "verifizierte Start" -Modus wird über die Device-Mapper-Verity-Funktion ( dm-verity) implementiert), die die Integrität der Root-Partition beim Booten überprüft. AWS beschreibt dm-verity als "eine Funktion des Linux-Kernels, die eine Integritätsprüfung bietet, um zu verhindern, dass Malware auf dem Betriebssystem ausgeführt wird, z. B. das Überschreiben der zugrunde liegenden Systemsoftware."
Das System verfügt außerdem über ein eBPF (Extended BPF, entwickelt von Alexey Starovoitov ), mit dem Kernelmodule durch sicherere BPF-Programme für Systemoperationen auf niedriger Ebene ersetzt werden können.
| Ausführungsmodell | Benutzerdefinierte | Zusammenstellung | Sicherheit | Fehlermodus | Zugriff auf Ressourcen | |
| Nutzer | Aufgabe | Ja | irgendein | Nutzerrechte | Ausführung unterbrechen | Systemaufruf, Fehler |
| Ader | Aufgabe | Nein | statisch | Nein | Panikkern | Gerade |
| BPF | Veranstaltung | Ja | JIT, CO-RE | Überprüfung, JIT | Fehlermeldung | begrenzte Helfer |
Eine
AWS- Quelle unterschied BPF von normalem Code auf Benutzer- oder Kernelebene und gab an , dass Bottlerocket „ein Betriebsmodell verwendet, das die Sicherheit weiter erhöht, indem verhindert wird, dass Administratorrechte eine Verbindung zu Produktionsservern herstellen“ und „für große verteilte Systeme geeignet ist, bei denen die Kontrolle eingeschränkt ist. über jedem einzelnen Host ".
Für Systemadministratoren wird ein Administratorcontainer bereitgestellt. AWS glaubt jedoch nicht, dass Administratoren häufig in Bottlerocket arbeiten müssen: "Die Anmeldung bei einer separaten Bottlerocket-Instanz ist für seltene Vorgänge vorgesehen: erweitertes Debugging und Fehlerbehebung" , schreiben die Entwickler.
Die Rust-Sprache
Das Betriebssystem-Tool über dem Kernel ist größtenteils in Rust geschrieben. Diese Sprache verringert naturgemäß die Wahrscheinlichkeit eines unsicheren Speicherzugriffs und beseitigt auch die Race-Bedingungen zwischen Threads .
Wenn die Standard-Build-Flags angewendet werden
--enable-default-pieund --enable-default-sspdie Randomisierung des Adressraums der ausführbaren Dateien ( positionsunabhängig von ausführbarer Datei , PIE) und der Schutz vor Stapelüberlauf ermöglicht werden.
Für Pakete an C / C ++ enthält ferner Fahnen
-Wall, -Werror=format-security, -Wp,-D_FORTIFY_SOURCE=2, -Wp,-D_GLIBCXX_ASSERTIONSund -fstack-clash-protection.
Neben Rust und C / C ++ sind einige Pakete in der Sprache Go geschrieben.
Integration mit AWS Services
Der Unterschied zu ähnlichen Container-Betriebssystemen besteht darin, dass Amazon Bottlerocket für die Ausführung unter AWS und die Integration in andere AWS-Services optimiert hat.
Der beliebteste Container-Orchestrator ist Kubernetes. Daher hat AWS die Integration mit seinem eigenen Enterprise Kubernetes Service (EKS) implementiert. Orchestrierungs-Tools werden in einem separaten Bottlerocket-Steuerungscontainer geliefert , der standardmäßig aktiviert und über die API und den AWS SSM-Agenten verwaltet wird.
Es wird interessant sein zu sehen, ob Bottlerocket abhebt, da einige dieser Initiativen in der Vergangenheit gescheitert sind. Zum Beispiel ging PhotonOS von Vmware aus dem Geschäft, und RedHat kaufte CoreOS und schloss ein Projekt ab , das als Pionier auf diesem Gebiet galt.
Die Integration von Bottlerocket in AWS-Services macht dieses System auf seine Weise einzigartig. Dies ist möglicherweise der Hauptgrund, warum einige Benutzer Bottlerocket anderen Distributionen wie CoreOS oder Alpine vorziehen. Das System wurde ursprünglich für die Verwendung mit EKS und ECS entwickelt, dies ist jedoch wiederum nicht erforderlich. Erstens kann Bottlerocket unabhängig erstellt und beispielsweise als gehostete Lösung verwendet werden. Zweitens haben EKS- und ECS-Benutzer weiterhin die Wahl des Betriebssystems.
Der Quellcode von Bottlerocket wird auf GitHub unter der Apache 2.0-Lizenz veröffentlicht. Entwickler reagieren bereits auf Fehlerberichte und Funktionsanfragen .
Werbung
VDSina bietet VDS mit täglicher Zahlung an . Es ist möglich, jedes Betriebssystem zu installieren, auch von Ihrem eigenen Image. Jeder Server ist mit einem Internetkanal von 500 Megabit verbunden und kostenlos vor DDoS-Angriffen geschützt!
