Udgaven af Linux-distributionen Bottlerocket 1.8.0 er offentliggjort, udviklet i samarbejde med Amazon til effektiv og sikker kørsel af isolerede containere. Værktøjer og administrationskomponenter til distributionen er skrevet i Rust og distribueres under MIT- og Apache 2.0-licenserne. Bottlerocket understøttes i Amazon ECS-klynger, VMware og AWS EKS Kubernetes, samt til oprettelse af brugerdefinerede builds og redaktioner, der tillader brug af forskellige orkestreringsværktøjer og runtime til containere.
Distributionen tilbyder et atomart og automatisk opdateret udeleligt systembillede, der inkluderer Linux-kernen og et minimalt systemmiljø med kun de komponenter, der er nødvendige for at køre containere. I miljøet anvendes systemmanageren systemd, biblioteket Glibc, byggesættet Buildroot, bootloaderen GRUB, netværkskonfiguratoren wicked, runtime til isolerede containere containerd, orkestreringsplatformen Kubernetes, autentifikatoren aws-iam-authenticator og Amazon ECS-agenten.
Værktøjerne til orkestrering af containere leveres i en separat styringscontainer, som aktiveres som standard og styres via API og AWS SSM Agent. Den grundlæggende billede mangler en kommandolinjeinterpreter, server SSH og fortolkede sprog (f.eks. ingen Python eller Perl) — værktøjer til administratorer og debug-værktøjer er placeret i en separat servicecontainer, der er deaktiveret som standard.
Den væsentligste forskel fra lignende distributioner som Fedora CoreOS, CentOS/Red Hat Atomic Host er den primære fokus på at sikre maksimal sikkerhed i forhold til at styrke beskyttelsen af systemet mod potentielle trusler, vanskeliggøre udnyttelsen af sårbarheder i OS-komponenter samt øge isoleringen af containere. Containerne oprettes ved hjælp af de indbyggede mekanismer i Linux-kernen — cgroups, navnerum og seccomp. Der anvendes SELinux i "enforcing"-tilstand for yderligere isolering i distributionen.
Roddivisionen monteres i skrivebeskyttet tilstand, mens konfigurationspartitionen /etc monteres i tmpfs og gendanner den oprindelige tilstand efter genstart. Direkte ændring af filer i kataloget /etc, såsom /etc/resolv.conf og /etc/containerd/config.toml, understøttes ikke — for permanent gemning af indstillinger skal API bruges, eller funktionalitet flyttes til separate containere. For kryptografisk verifikation af integriteten af rodpartitionen anvendes dm-verity modulet, og ved opdagelse af forsøg på ændring af data på blokniveau genstarter systemet.
De fleste systemkomponenter er skrevet i Rust, som tilbyder sikre hukommelseshåndteringsværktøjer, der forhindrer sårbarheder forårsaget af adgang til hukommelsesområder efter de er frigivet, dereferering af nul-pegepinde og buffer overflow. Som standard anvendes kompileringstilstandene "--enable-default-pie" og "--enable-default-ssp" for at aktivere randomisering af adresseområdet for eksekverbare filer (PIE) og beskyttelse mod stack overflow via implementering af kanarimærker. For pakker skrevet i C/C++ aktiveres derudover flags "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" og "-fstack-clash-protection".
I den nye version:
- Indholdet af administrativ og styrende container er opdateret.
- Runtime til isolerede containere er opdateret til containerd 1.6.x.
- Der er sikret genstart af baggrundsprocesser, der koordinerer kørsel af containere, efter ændringer i certifikatlageret.
- Mulighed for at angive boot-parametre for kernen gennem sektionen Boot Configuration er blevet tilføjet.
- Der er tilføjet mulighed for at ignorere tomme blokke ved kontrol af integriteten af rodpartitionen ved hjælp af dm-verity.
- Mulighed for statisk binding af værtsnavne i /etc/hosts er blevet tilføjet.
- Der er tilføjet mulighed for at generere netværkskonfiguration ved hjælp af værktøjet netdog (kommandoen generate-net-config er blevet tilføjet).
- Der er tilbudt nye varianter af distributionen med støtte til Kubernetes 1.23. Tiden for opstart af pods i Kubernetes er forkortet ved at deaktivere configMapAndSecretChangeDetectionStrategy. Nye kubelet-indstillinger er blevet tilføjet: provider-id og podPidsLimit.
- En ny variant af distributionen 'aws-ecs-1-nvidia' til Amazon Elastic Container Service (Amazon ECS) er blevet tilbudt, leveret med NVIDIA-drivere.
- Støtte til opbevaringsenheder fra Microchip Smart Storage og MegaRAID SAS er blevet tilføjet. Støtten til Ethernet-kort på Broadcom-chips er blevet udvidet.
- Versioner af pakker og afhængigheder for Go- og Rust-sprog er blevet opdateret, samt versioner af pakker med tredjepartsprogrammer. Bottlerocket SDK er blevet opdateret til version 0.26.0.
Kilde: opennet.ru
