Wydanie Bottlerocket 1.2, dystrybucji opartej na izolowanych kontenerach

Dostępna jest wersja dystrybucji Linuksa Bottlerocket 1.2.0, opracowana przy udziale firmy Amazon w celu wydajnego i bezpiecznego uruchamiania izolowanych kontenerów. Narzędzia i komponenty sterujące tej dystrybucji są napisane w języku Rust i rozpowszechniane na licencjach MIT i Apache 2.0. Obsługuje uruchamianie Bottlerocket na klastrach Amazon ECS, VMware i AWS EKS Kubernetes, a także tworzenie niestandardowych kompilacji i wydań, które umożliwiają korzystanie z różnych narzędzi do orkiestracji i środowiska wykonawczego dla kontenerów.

Dystrybucja zapewnia atomowo i automatycznie aktualizowany, niepodzielny obraz systemu, który zawiera jądro Linuksa i minimalne środowisko systemowe, zawierające jedynie komponenty niezbędne do uruchomienia kontenerów. Środowisko obejmuje menedżera systemu systemd, bibliotekę Glibc, narzędzie do budowania Buildroot, program ładujący GRUB, niegodziwy konfigurator sieci, środowisko wykonawcze Containerd dla izolowanych kontenerów, platformę do orkiestracji kontenerów Kubernetes, aws-iam-authenticator i Amazon Agent ECS.

Narzędzia do orkiestracji kontenerów znajdują się w oddzielnym kontenerze zarządzania, który jest domyślnie włączony i zarządzany za pośrednictwem interfejsu API i agenta AWS SSM. W obrazie bazowym brakuje powłoki poleceń, serwera SSH i języków interpretowanych (np. Pythona czy Perla) – narzędzia administracyjne i narzędzia do debugowania umieszczono w osobnym kontenerze usług, który domyślnie jest wyłączony.

Kluczową różnicą w stosunku do podobnych dystrybucji, takich jak Fedora CoreOS, CentOS/Red Hat Atomic Host, jest skupienie się na zapewnieniu maksymalnego bezpieczeństwa w kontekście wzmocnienia ochrony systemu przed możliwymi zagrożeniami, utrudnienia wykorzystania luk w komponentach systemu operacyjnego i zwiększenia izolacji kontenerów . Kontenery tworzone są przy użyciu standardowych mechanizmów jądra Linuksa - cgroups, przestrzeni nazw i seccomp. W celu dodatkowej izolacji dystrybucja wykorzystuje SELinux w trybie „wymuszającym”.

Partycja główna jest montowana w trybie tylko do odczytu, a partycja ustawień /etc jest montowana w tmpfs i przywracana do pierwotnego stanu po ponownym uruchomieniu. Bezpośrednia modyfikacja plików w katalogu /etc, takich jak /etc/resolv.conf i /etc/containerd/config.toml nie jest obsługiwana - aby trwale zapisać ustawienia, należy skorzystać z API lub przenieść funkcjonalność do osobnych kontenerów. Moduł dm-verity służy do kryptograficznej weryfikacji integralności partycji root, a w przypadku wykrycia próby modyfikacji danych na poziomie urządzenia blokowego system uruchamia się ponownie.

Większość komponentów systemu jest napisana w języku Rust, który zapewnia funkcje bezpieczne dla pamięci, aby uniknąć luk w zabezpieczeniach spowodowanych dostępem do pamięci po zwolnieniu, wyłuskaniem wskaźnika zerowego i przepełnieniem bufora. Podczas budowania domyślnie używane są tryby kompilacji „-enable-default-pie” i „-enable-default-ssp”, aby umożliwić randomizację przestrzeni adresowej pliku wykonywalnego (PIE) i ochronę przed przepełnieniem stosu poprzez podstawienie kanaryjskie. Dla pakietów napisanych w języku C/C++ dodatkowo są dostępne flagi „-Wall”, „-Werror=format-security”, „-Wp,-D_FORTIFY_SOURCE=2”, „-Wp,-D_GLIBCXX_ASSERTIONS” i „-fstack-clash”. włączona -ochrona”.

W nowym wydaniu:

  • Dodano obsługę kopii lustrzanych rejestru obrazów kontenerów.
  • Dodano możliwość korzystania z certyfikatów z podpisem własnym.
  • Dodano opcję konfiguracji nazwy hosta.
  • Domyślna wersja kontenera administracyjnego została zaktualizowana.
  • Dodano ustawienia topologyManagerPolicy i topologyManagerScope dla kubelet.
  • Dodano obsługę kompresji jądra przy użyciu algorytmu zstd.
  • Zapewniona jest możliwość ładowania maszyn wirtualnych do VMware w formacie OVA (Open Virtualization Format).
  • Wersja dystrybucyjna aws-k8s-1.21 została zaktualizowana o obsługę Kubernetes 1.21. Zakończono obsługę aws-k8s-1.16.
  • Zaktualizowane wersje pakietów i zależności dla języka Rust.

Źródło: opennet.ru

Dodaj komentarz