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

Es ist die Veröffentlichung der Linux-Distribution Bottlerocket 1.1.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 in Amazon ECS- 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:

  • Es wurden zwei neue Distributionsoptionen aws-k8s-1.20 und vmware-k8s-1.20 mit Unterstützung für Kubernetes 1.20 vorgeschlagen. Diese Varianten sowie die aktualisierte Version aws-ecs-1 verwenden die neue Linux-Kernel-Version 5.10. Der Sperrmodus ist standardmäßig auf „Integrität“ eingestellt (Funktionen, die Änderungen am laufenden Kernel aus dem Benutzerbereich ermöglichen, werden blockiert). Die Unterstützung für die auf Kubernetes 8 basierende Variante aws-k1.15s-1.15 wurde eingestellt.
  • Amazon ECS unterstützt den awsvpc-Netzwerkmodus, der es Ihnen ermöglicht, jeder Aufgabe separate Netzwerkschnittstellen und interne IP-Adressen zuzuweisen.
  • Es wurden Einstellungen zur Steuerung verschiedener Kubernetes-Parameter hinzugefügt, darunter QPS, Pool-Limits und die Möglichkeit, eine Verbindung zu anderen Cloud-Anbietern als AWS herzustellen.
  • Der Bootstrap-Container ermöglicht die Einschränkung des Zugriffs auf Benutzerdaten mithilfe von SELinux.
  • Dienstprogramm resize2fs hinzugefügt.

Source: opennet.ru

Kommentar hinzufügen