Bottlerocket 1.8 ist verfügbar, eine Distribution basierend auf isolierten Containern

Das Release der Linux-Distribution Bottlerocket 1.8.0 wurde veröffentlicht, die unter Beteiligung von Amazon für den effizienten und sicheren Start isolierter Container entwickelt wurde. Die Tools und Steuerungskomponenten der Distribution sind in Rust geschrieben und werden unter den MIT- und Apache 2.0-Lizenzen vertrieben. Es unterstützt die Ausführung von Bottlerocket auf Amazon ECS-, VMware- und AWS EKS Kubernetes-Clustern sowie die Erstellung benutzerdefinierter Builds und Editionen, die die Verwendung verschiedener Orchestrierungs- und Laufzeittools für Container ermöglichen.

Die Distribution stellt ein atomar und automatisch aktualisiertes, unteilbares Systemabbild bereit, das den Linux-Kernel und eine minimale Systemumgebung enthält, einschließlich nur der Komponenten, die zum Ausführen von Containern erforderlich sind. Die Umgebung umfasst den systemd-Systemmanager, die Glibc-Bibliothek, das Buildroot-Build-Tool, den GRUB-Bootloader, den Wicked Network Configurator, die Containerd-Laufzeit für isolierte Container, die Kubernetes-Container-Orchestrierungsplattform, den aws-iam-authenticator und Amazon ECS-Agent.

Container-Orchestrierungstools werden in einem separaten Verwaltungscontainer geliefert, der standardmäßig aktiviert ist und über die API und den AWS SSM-Agenten verwaltet wird. Dem Basis-Image fehlen eine Befehlsshell, ein SSH-Server und interpretierte Sprachen (z. B. kein Python oder Perl) – Verwaltungstools und Debugging-Tools werden in einem separaten Service-Container platziert, der standardmäßig deaktiviert ist.

Der Hauptunterschied zu ähnlichen Distributionen wie Fedora CoreOS, CentOS/Red Hat Atomic Host ist der primäre Fokus auf die Bereitstellung maximaler Sicherheit im Zusammenhang mit der Stärkung des Systemschutzes vor möglichen Bedrohungen, der Erschwerung der Ausnutzung von Schwachstellen in Betriebssystemkomponenten und der Erhöhung der Containerisolation . Container werden mit Standard-Linux-Kernel-Mechanismen erstellt – cgroups, Namespaces und seccomp. Für zusätzliche Isolation verwendet die Distribution SELinux im „Enforcing“-Modus.

Die Root-Partition wird schreibgeschützt gemountet, und die /etc-Einstellungspartition wird in tmpfs gemountet und nach einem Neustart in ihren ursprünglichen Zustand zurückversetzt. Die direkte Änderung von Dateien im Verzeichnis /etc, wie z. B. /etc/resolv.conf und /etc/containerd/config.toml, wird nicht unterstützt. Um Einstellungen dauerhaft zu speichern, müssen Sie die API verwenden oder die Funktionalität in separate Container verschieben. Das dm-verity-Modul wird verwendet, um die Integrität der Root-Partition kryptografisch zu überprüfen. Wenn ein Versuch erkannt wird, Daten auf Blockgeräteebene zu ändern, wird das System neu gestartet.

Die meisten Systemkomponenten sind in Rust geschrieben, das speichersichere Funktionen bietet, um Schwachstellen zu vermeiden, die durch After-Free-Speicherzugriffe, Nullzeiger-Dereferenzierungen und Pufferüberläufe verursacht werden. Beim Erstellen werden standardmäßig die Kompilierungsmodi „-enable-default-pie“ und „-enable-default-ssp“ verwendet, um die Randomisierung des ausführbaren Dateiadressraums (PIE) und den Schutz vor Stapelüberläufen durch Canary-Substitution zu ermöglichen. Für in C/C++ geschriebene Pakete gelten zusätzlich die Flags „-Wall“, „-Werror=format-security“, „-Wp,-D_FORTIFY_SOURCE=2“, „-Wp,-D_GLIBCXX_ASSERTIONS“ und „-fstack-clash“. aktiviert -Schutz".

In der neuen Version:

  • Der Inhalt der Verwaltungs- und Kontrollcontainer wurde aktualisiert.
  • Die Laufzeit für isolierte Container wurde auf den Containerd 1.6.x-Zweig aktualisiert.
  • Stellt sicher, dass Hintergrundprozesse, die den Betrieb von Containern koordinieren, nach Änderungen am Zertifikatspeicher neu gestartet werden.
  • Es ist möglich, Kernel-Boot-Parameter über den Abschnitt „Boot-Konfiguration“ festzulegen.
  • Das Ignorieren leerer Blöcke bei der Überwachung der Integrität der Root-Partition mit dm-verity wurde aktiviert.
  • Es wurde die Möglichkeit bereitgestellt, Hostnamen statisch in /etc/hosts zu binden.
  • Die Möglichkeit, eine Netzwerkkonfiguration mit dem Dienstprogramm netdog zu generieren, wurde bereitgestellt (der Befehl „generate-net-config“ wurde hinzugefügt).
  • Es wurden neue Verteilungsoptionen mit Unterstützung für Kubernetes 1.23 vorgeschlagen. Die Startzeit für Pods in Kubernetes wurde durch die Deaktivierung des configMapAndSecretChangeDetectionStrategy-Modus verkürzt. Neue Kubelet-Einstellungen hinzugefügt: Provider-ID und podPidsLimit.
  • Es wurde eine neue Version des Distributionskits „aws-ecs-1-nvidia“ für Amazon Elastic Container Service (Amazon ECS) vorgeschlagen, das mit NVIDIA-Treibern geliefert wird.
  • Unterstützung für Microchip Smart Storage und MegaRAID SAS-Speichergeräte hinzugefügt. Die Unterstützung für Ethernet-Karten auf Broadcom-Chips wurde erweitert.
  • Aktualisierte Paketversionen und Abhängigkeiten für die Sprachen Go und Rust sowie Versionen von Paketen mit Programmen von Drittanbietern. Bottlerocket SDK wurde auf Version 0.26.0 aktualisiert.

Source: opennet.ru

Kommentar hinzufügen