Amazon publikuje Bottlerocket 1.0.0, dystrybucję Linuksa opartą na izolowanych kontenerach

Firma Amazon представила pierwsze znaczące wydanie dedykowanej dystrybucji Linuksa Butelkowa rakieta 1.0.0, zaprojektowany do wydajnej i bezpiecznej obsługi izolowanych kontenerów. Narzędzia i komponenty sterujące dystrybucji są napisane w języku Rust i rozpowszechnianie się na licencjach MIT i Apache 2.0. Projekt jest rozwijany na GitHubie i jest dostępny dla członków społeczności. Obraz wdrożenia systemu jest generowany dla architektur x86_64 i Aarch64. System operacyjny jest przystosowany do pracy na klastrach Amazon ECS i AWS EKS Kubernetes. Są zapewnione narzędzia do tworzenia własnych zestawów i wydań, które mogą korzystać z innych narzędzi do orkiestracji, jąder i środowiska wykonawczego dla kontenerów.

Dystrybucja dostarcza jądro Linuksa oraz minimalne środowisko systemowe, zawierające jedynie komponenty niezbędne do uruchomienia kontenerów. Wśród pakietów biorących udział w projekcie znajduje się menedżer systemu systemd, biblioteka Glibc i narzędzia asemblera
Buildroot, bootloader GRUB, konfigurator sieci niegodziwy, środowisko wykonawcze dla izolowanych kontenerów pojemnikd, platforma do orkiestracji kontenerów Kubernetes, aws-iam-authenticator i agent Amazon ECS.

Dystrybucja jest aktualizowana atomowo i dostarczana w postaci niepodzielnego obrazu systemu. Dla systemu przydzielane są dwie partycje dyskowe, z których jedna zawiera aktywny system, a aktualizacja jest kopiowana do drugiej. Po wdrożeniu aktualizacji aktywna staje się druga partycja, a na pierwszej, do czasu nadejścia kolejnej aktualizacji, zapisana jest poprzednia wersja systemu, do której można wrócić w razie problemów. Aktualizacje są instalowane automatycznie, bez interwencji administratora.

Kluczową różnicą w stosunku do podobnych dystrybucji, takich jak Fedora CoreOS, CentOS/Red Hat Atomic Host, jest skupienie się przede wszystkim na dostarczaniu maksymalne bezpieczeństwo w kontekście wzmocnienia ochrony systemu przed możliwymi zagrożeniami, utrudnienia wykorzystania podatności w komponentach systemu operacyjnego oraz 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”, a moduł służy do kryptograficznej weryfikacji integralności partycji root dm prawda. W przypadku wykrycia próby modyfikacji danych na poziomie urządzenia blokowego następuje ponowne uruchomienie systemu.

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.

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 plików wykonywalnych (PIE) i zabezpieczenie przed przepełnieniem stosu poprzez podstawienie kanaryjskie.
W przypadku pakietów napisanych w języku C/C++ dołączone są dodatkowe flagi
„-Wall”, „-Werror=format-security”, „-Wp,-D_FORTIFY_SOURCE=2”, „-Wp,-D_GLIBCXX_ASSERTIONS” i „-fstack-clash-protection”.

Narzędzia do orkiestracji kontenerów są dostarczane osobno kontener kontrolny, który jest domyślnie włączony i kontrolowany przez API i agent AWS SSM. W obrazie bazowym brakuje powłoki poleceń, serwera SSH i języków interpretowanych (na przykład Pythona czy Perla) - narzędzia administracyjne i narzędzia do debugowania znajdują się w oddzielny kontener serwisowy, która jest domyślnie wyłączona.

Źródło: opennet.ru

Dodaj komentarz