Ostatnio premiera została ogłoszona nowej wersji dystrybucji Linuksa „Bottlerocket 1.7.0”, opracowany przy udziale firmy Amazon, w celu wydajnego i bezpiecznego uruchamiania izolowanych kontenerów.
Dla tych, którzy są nowicjuszami w Bottlerocket, powinniście wiedzieć, że jest to dystrybucja, która zapewnia automatycznie aktualizowany, niepodzielny obraz systemu, który zawiera jądro Linuksa i minimalne środowisko systemowe, które zawiera tylko komponenty niezbędne do uruchamiania kontenerów.
O Bottlerocket
Środowisko korzysta z menedżera systemu systemd, biblioteki Glibc, narzędzie do budowania Buildroot, program ładujący GRUB, środowisko wykonawcze piaskownicy kontenerów, platforma do orkiestracji kontenerów Kubernetes, uwierzytelnianie aws-iam i agent Amazon ECS.
Narzędzia do aranżacji kontenerów znajdują się w oddzielnym kontenerze zarządzania, który jest domyślnie włączony i zarządzany przez agenta i interfejs API AWS SSM. W obrazie podstawowym brakuje powłoki poleceń, serwera SSH i języków interpretowanych (na przykład Python lub Perl): narzędzia administracyjne i debugujące są przenoszone do oddzielnego kontenera usług, który jest domyślnie wyłączony.
Kluczowa różnica w porównaniu z podobnymi dystrybucjami takie jak Fedora CoreOS, CentOS / Red Hat Atomic Host jest główny nacisk na zapewnienie maksymalnego bezpieczeństwa w kontekście wzmocnienia ochrony systemu przed ewentualnymi zagrożeniami, co komplikuje wykorzystanie podatności w komponentach systemu operacyjnego oraz zwiększa izolację kontenera.
Kontenery są tworzone przy użyciu zwykłych mechanizmów jądra Linux: cgroups, przestrzeni nazw i seccomp. W celu dodatkowej izolacji dystrybucja używa SELinux w trybie "aplikacji".
Partycja główna jest zamontowana tylko do odczytu a partycja z konfiguracją /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 na stałe zapisać konfigurację, należy użyć interfejsu API lub przenieść funkcjonalność do oddzielnych kontenerów.
Do kryptograficznej weryfikacji integralności partycji root wykorzystywany jest moduł dm-verity, a w przypadku wykrycia próby modyfikacji danych na poziomie urządzenia blokowego następuje ponowne uruchomienie systemu.
Większość komponentów systemu napisana jest w języku Rust, który zapewnia narzędzia bezpieczne w pamięci, aby zapobiegać lukom spowodowanym przez adresowanie obszaru pamięci po jego zwolnieniu, wyłuskiwać wskaźniki zerowe i przepełnienia bufora.
Podczas kompilacji, tryby kompilacji "--enable-default-pie" i "--enable-default-ssp" są używane domyślnie, aby włączyć randomizację wykonywalnej przestrzeni adresowej ( PIE ) i ochronę przed przepełnieniem stosu poprzez podstawianie znaczników canary.
Co nowego w Bottlerocket 1.7.0?
W tej nowej wersji dystrybucji, która jest prezentowana, jedną z wyróżniających się zmian jest to, że przy instalacji pakietów RPM przewidziane jest generowanie listy programów w formacie JSON i podłącz go do kontenera hosta jako plik /var/lib/bottlerocket/inventory/application.json, aby uzyskać informacje o dostępnych pakietach.
W Bottlerocket 1.7.0 występuje również aktualizacja kontenerów „admin” i „control”, a także wersje pakietów i zależności dla Go i Rust.
Z drugiej strony podkreśla zaktualizowane wersje pakietów z programami firm trzecich, naprawiono również problemy z konfiguracją tmpfilesd dla kmod-5.10-nvidia i podczas instalacji wersje zależności tuftool są połączone.
Wreszcie dla tych, którzy są Chcesz dowiedzieć się więcej na ten temat Jeśli chodzi o tę dystrybucję, powinieneś wiedzieć, że zestaw narzędzi i komponenty kontroli dystrybucji są napisane w języku Rust i są rozpowszechniane na licencji MIT i Apache 2.0.
Butelka obsługuje uruchamianie klastrów Amazon ECS, VMware i AWS EKS Kubernetes, a także tworzenie niestandardowych kompilacji i edycji, które umożliwiają różne aranżacje i narzędzia wykonawcze dla kontenerów.
Możesz sprawdzić szczegóły, W poniższym linku.