Release van Bottlerocket 1.1, een distributie gebaseerd op geïsoleerde containers

De release van de Linux-distributie Bottlerocket 1.1.0 is beschikbaar, ontwikkeld met medewerking van Amazon voor de efficiënte en veilige lancering van geïsoleerde containers. De tools en besturingscomponenten van de distributie zijn geschreven in Rust en gedistribueerd onder de MIT- en Apache 2.0-licenties. Het ondersteunt het uitvoeren van Bottlerocket in Amazon ECS- en AWS EKS Kubernetes-clusters, evenals het maken van aangepaste builds en edities die het gebruik van verschillende orkestratie- en runtime-tools voor containers mogelijk maken.

De distributie biedt een atomisch en automatisch bijgewerkt ondeelbaar systeemimage dat de Linux-kernel bevat en een minimale systeemomgeving die alleen de componenten bevat die nodig zijn om containers te laten draaien. De omgeving omvat de systemd-systeembeheerder, de Glibc-bibliotheek, de Buildroot-buildtool, de GRUB-bootloader, de slechte netwerkconfigurator, de geïsoleerde containerruntime van de container, het Kubernetes-containerorkestratieplatform, de aws-iam-authenticator en de Amazon ECS-agent .

De containerorkestratietools worden geleverd in een afzonderlijke beheercontainer die standaard is ingeschakeld en wordt beheerd via de API en AWS SSM Agent. De basisafbeelding mist een opdrachtshell, een SSH-server en geïnterpreteerde talen (bijvoorbeeld geen Python of Perl) - administratieve en foutopsporingstools worden verplaatst naar een aparte servicecontainer, die standaard is uitgeschakeld.

Het belangrijkste verschil met vergelijkbare distributies zoals Fedora CoreOS, CentOS/Red Hat Atomic Host is de primaire focus op het bieden van maximale beveiliging in de context van het versterken van de systeembescherming tegen mogelijke bedreigingen, het compliceren van de exploitatie van kwetsbaarheden in OS-componenten en het vergroten van containerisolatie. Containers worden gemaakt met behulp van de reguliere mechanismen van de Linux-kernel - cgroups, namespaces en seccomp. Voor extra isolatie gebruikt de distributie SELinux in "afdwingende" modus.

De rootpartitie wordt in alleen-lezen-modus aangekoppeld en de partitie met /etc-instellingen wordt in tmpfs aangekoppeld en na een herstart in de oorspronkelijke staat hersteld. Directe wijziging van bestanden in de map /etc, zoals /etc/resolv.conf en /etc/containerd/config.toml, wordt niet ondersteund - om instellingen permanent op te slaan, moet u de API gebruiken of de functionaliteit verplaatsen naar afzonderlijke containers. Voor cryptografische verificatie van de integriteit van de rootpartitie wordt de dm-verity-module gebruikt en als een poging wordt gedetecteerd om gegevens op blokapparaatniveau te wijzigen, wordt het systeem opnieuw opgestart.

De meeste systeemcomponenten zijn geschreven in Rust, dat geheugenveilige tools biedt om kwetsbaarheden te voorkomen die worden veroorzaakt door het adresseren van een geheugengebied nadat het is vrijgegeven, het verwijderen van verwijzingen naar null-pointers en bufferoverschrijdingen. Bij het bouwen worden standaard de compilatiemodi "--enable-default-pie" en "--enable-default-ssp" gebruikt om uitvoerbare adresruimte-randomisatie (PIE) en bescherming tegen stack-overflows door middel van canary-labelvervanging mogelijk te maken. Voor pakketten geschreven in C/C++ zijn de vlaggen "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" en "-fstack-clash" extra inbegrepen -bescherming.

In de nieuwe uitgave:

  • Er zijn twee nieuwe distributieopties aws-k8s-1.20 en vmware-k8s-1.20 met ondersteuning voor Kubernetes 1.20 voorgesteld. Deze varianten, evenals de bijgewerkte versie aws-ecs-1, gebruiken de nieuwe Linux-kernel 5.10-release. De lockdown-modus is standaard ingesteld op “integriteit” (mogelijkheden die het mogelijk maken dat er wijzigingen worden aangebracht in de actieve kernel vanuit de gebruikersruimte zijn geblokkeerd). Ondersteuning voor de aws-k8s-1.15-variant op basis van Kubernetes 1.15 is stopgezet.
  • Amazon ECS ondersteunt de awsvpc-netwerkmodus, waarmee u voor elke taak afzonderlijke netwerkinterfaces en interne IP-adressen kunt toewijzen.
  • Instellingen toegevoegd om verschillende Kubernetes-parameters te beheren, waaronder QPS, poollimieten en de mogelijkheid om verbinding te maken met andere cloudproviders dan AWS.
  • De bootstrap container biedt beperking van toegang tot gebruikersgegevens met behulp van SELinux.
  • Hulpprogramma resize2fs toegevoegd.

Bron: opennet.ru

Voeg een reactie