Die Ausgabe der Linux-Distribution Bottlerocket 1.8.0 wurde veröffentlicht, die mit UnterstĂŒtzung von Amazon entwickelt wurde, um isolierte Container effizient und sicher auszufĂŒhren. Die Werkzeuge und Verwaltungsbestandteile der Distribution sind in der Programmiersprache Rust geschrieben und unter den Lizenzen MIT und Apache 2.0 lizenziert. Bottlerocket unterstĂŒtzt den Betrieb in Amazon ECS-Clustern, VMware und AWS EKS Kubernetes sowie die Erstellung beliebiger Builds und Editionen, die die Anwendung verschiedener Orchestrierungs- und Laufzeitwerkzeuge fĂŒr Container erlauben.
Die Distribution bietet ein atomar und automatisch aktualisiertes, unteilbares Systemabbild, das einen Linux-Kernel und eine minimale Systemumgebung umfasst, die nur die fĂŒr den Betrieb von Containern erforderlichen Komponenten enthĂ€lt. In der Umgebung sind der Systemmanager systemd, die Bibliothek Glibc, das Build-Werkzeug Buildroot, der Bootloader GRUB, der Netzwerk-Konfigurator wicked, das Runtime fĂŒr isolierte Container containerd, die Container-Orchestrierungsplattform Kubernetes, der Authenticator aws-iam-authenticator und der Amazon ECS-Agent integriert.
Die Werkzeuge zur Orchestrierung von Containern werden in einem separaten Verwaltungs-Container bereitgestellt, der standardmĂ€Ăig aktiviert ist und ĂŒber die API und den AWS SSM Agent verwaltet wird. In dem Basisabbild fehlt eine Kommandozeile. Server SSH und interpretierte Sprachen (zum Beispiel, kein Python oder Perl) â Werkzeuge fĂŒr Administratoren und Debugging-Tools sind in einen separaten Dienstcontainer ausgegliedert, der standardmĂ€Ăig deaktiviert ist.
Das Hauptmerkmal im Vergleich zu Ă€hnlichen Distributionen wie Fedora CoreOS, CentOS/Red Hat Atomic Host ist die primĂ€re Ausrichtung auf maximale Sicherheit im Kontext der VerstĂ€rkung des Schutzes des Systems gegen mögliche Bedrohungen, der Erschwernis der Ausnutzung von Schwachstellen in Betriebssystemkomponenten und der Erhöhung der Isolation von Containern. Container werden mithilfe der Standardmechanismen des Linux-Kernels â cgroups, NamensrĂ€ume und seccomp â erstellt. FĂŒr zusĂ€tzliche Isolation wird im Distribution SELinux im Modus âenforcingâ eingesetzt.
Die Wurzelpartition wird im Nur-Lese-Modus eingehĂ€ngt, wĂ€hrend die Konfigurationspartition /etc in tmpfs eingebunden wird und ihren Ursprungszustand nach einem Neustart wiederherstellt. Direkte Ănderungen an Dateien im Verzeichnis /etc, wie /etc/resolv.conf und /etc/containerd/config.toml, werden nicht unterstĂŒtzt â fĂŒr das dauerhafte Speichern von Einstellungen sollten die API oder separate Container verwendet werden. FĂŒr die kryptografische Verifizierung der IntegritĂ€t der Wurzelpartition wird das Modul dm-verity verwendet, und im Falle eines Versuchs, Daten auf BlockgerĂ€tebene zu verĂ€ndern, wird das System neu gestartet.
Die meisten Systemkomponenten sind in der Programmiersprache Rust geschrieben, die sichere Speicheroperationen ermöglicht und Schwachstellen vermeidet, die durch Zugriffe auf den Speicher nach dessen Freigabe, Dereferenzierung von Nullzeigern und Buffer-Overflow verursacht werden können. Bei der Standardkompilierung werden die Kompilierungsmodi ââenable-default-pieâ und ââenable-default-sspâ verwendet, um die ZufĂ€lligkeit des Adressraums von ausfĂŒhrbaren Dateien (PIE) sowie den Schutz vor Stack-Overflow durch das EinfĂŒhren von Canary-Werten zu aktivieren. FĂŒr Pakete, die in C/C++ geschrieben sind, werden zusĂ€tzlich die Flags â-Wallâ, â-Werror=format-securityâ, â-Wp,-D_FORTIFY_SOURCE=2â, â-Wp,-D_GLIBCXX_ASSERTIONSâ und â-fstack-clash-protectionâ hinzugefĂŒgt.
In der neuen Version:
- Der Inhalt der administrativen und Steuerungscontainer wurde aktualisiert.
- Die Laufzeit fĂŒr isolierte Container wurde auf die Version containerd 1.6.x aktualisiert.
- Der Neustart von Hintergrundprozessen, die die Arbeit der Container koordinieren, nach Ănderungen im Zertifikatsspeicher wurde sichergestellt.
- Die Möglichkeit wurde bereitgestellt, die Boot-Parameter des Kernels ĂŒber den Abschnitt Boot Configuration festzulegen.
- Es wurde die Ignorierung leerer Blöcke bei der IntegritĂ€tsprĂŒfung des Root-Partitions mit dm-verity implementiert.
- Die Möglichkeit der statischen Bindung von Hostnamen in /etc/hosts wurde bereitgestellt.
- Die Möglichkeit zur Erstellung einer Netzwerkkonfiguration mit dem Tool netdog (Befehl generate-net-config hinzugefĂŒgt) wurde bereitgestellt.
- Neue Distribution-Varianten mit UnterstĂŒtzung fĂŒr Kubernetes 1.23 wurden angeboten. Die Startzeit von Pods in Kubernetes wurde durch Deaktivierung des configMapAndSecretChangeDetectionStrategy-Modus verkĂŒrzt. Neue kubelet-Einstellungen wurden hinzugefĂŒgt: provider-id und podPidsLimit.
- Eine neue Variante der Distribution "aws-ecs-1-nvidia" fĂŒr den Amazon Elastic Container Service (Amazon ECS) wurde vorgestellt, die mit NVIDIA-Treibern geliefert wird.
- Die UnterstĂŒtzung fĂŒr Microchip Smart Storage- und MegaRAID SAS-SpeichergerĂ€te wurde hinzugefĂŒgt. Die UnterstĂŒtzung fĂŒr Ethernet-Karten mit Broadcom-Chips wurde erweitert.
- Die Versionen von Paketen und AbhĂ€ngigkeiten fĂŒr die Programmiersprachen Go und Rust sowie die Versionen von Paketen von Drittanbietern wurden aktualisiert. Das Bottlerocket SDK wurde auf Version 0.26.0 aktualisiert.
Quelle: opennet.ru
