Dostępny jest Bottlerocket 1.8, dystrybucja oparta na izolowanych kontenerach

Ukazało się wydanie dystrybucji Linuksa Bottlerocket 1.8.0, opracowanej 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:

  • Zaktualizowano zawartość kontenerów administracyjnych i kontrolnych.
  • Środowisko wykonawcze izolowanych kontenerów zostało zaktualizowane do gałęzi Containerd 1.6.x.
  • Zapewnia, że ​​procesy w tle koordynujące działanie kontenerów zostaną ponownie uruchomione po zmianach w bazie certyfikatów.
  • Możliwe jest ustawienie parametrów rozruchu jądra w sekcji Konfiguracja rozruchu.
  • Włączono ignorowanie pustych bloków podczas monitorowania integralności partycji root przy użyciu dm-verity.
  • Udostępniono możliwość statycznego wiązania nazw hostów w pliku /etc/hosts.
  • Udostępniono możliwość wygenerowania konfiguracji sieciowej za pomocą narzędzia netdog (dodano komendę generate-net-config).
  • Zaproponowano nowe opcje dystrybucji ze wsparciem dla Kubernetes 1.23. Czas uruchamiania podów w Kubernetes został skrócony poprzez wyłączenie trybu configMapAndSecretChangeDetectionStrategy. Dodano nowe ustawienia kubelet: dostawca-id i podPidsLimit.
  • Zaproponowano nową wersję pakietu dystrybucyjnego „aws-ecs-1-nvidia” dla usługi Amazon Elastic Container Service (Amazon ECS), dostarczanego ze sterownikami NVIDIA.
  • Dodano obsługę urządzeń pamięci masowej Microchip Smart Storage i MegaRAID SAS. Rozszerzono obsługę kart Ethernet w chipach Broadcom.
  • Zaktualizowane wersje pakietów i zależności dla języków Go i Rust, a także wersje pakietów z programami innych firm. Zestaw SDK Bottlerocket został zaktualizowany do wersji 0.26.0.

Źródło: opennet.ru

Dodaj komentarz