Veröffentlichung von Bottlerocket 1.2, einer Distribution, die auf isolierten Containern basiert

Es ist die Veröffentlichung der Linux-Distribution Bottlerocket 1.2.0 verfügbar, 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:

  • Unterstützung für Container-Image-Registrierungsspiegel hinzugefügt.
  • Es wurde die Möglichkeit hinzugefügt, selbstsignierte Zertifikate zu verwenden.
  • Option zum Konfigurieren des Hostnamens hinzugefügt.
  • Die Standardversion des Verwaltungscontainers wurde aktualisiert.
  • TopologyManagerPolicy- und TopologyManagerScope-Einstellungen für Kubelet hinzugefügt.
  • Unterstützung für Kernelkomprimierung mit dem zstd-Algorithmus hinzugefügt.
  • Es besteht die Möglichkeit, virtuelle Maschinen im OVA-Format (Open Virtualization Format) in VMware zu laden.
  • Die Distributionsversion aws-k8s-1.21 wurde mit Unterstützung für Kubernetes 1.21 aktualisiert. Die Unterstützung für aws-k8s-1.16 wurde eingestellt.
  • Aktualisierte Paketversionen und Abhängigkeiten für die Rust-Sprache.

Source: opennet.ru

Kommentar hinzufügen