Доступен выпуск Linux-дистрибутива Bottlerocket 1.2.0, развиваемого при участии компании Amazon для эффективного и безопасного запуска изолированных контейнеров. Инструментарий и управляющие компоненты дистрибутива написаны на языке Rust и распространяются под лицензиями MIT и Apache 2.0. Поддерживается запуск Bottlerocket в кластерах Amazon ECS, VMware и AWS EKS Kubernetes, а также создание произвольных сборок и редакций, допускающих применение различных инструментов оркестровки и runtime для контейнеров.
Dystrybucja zapewnia atomowy i automatycznie aktualizowany nierozdzielny obraz systemowy, który obejmuje jądro Linux i minimalne środowisko systemowe, zawierające tylko komponenty niezbędne do uruchamiania kontenerów. W środowisku używany jest menedżer systemowy systemd, biblioteka Glibc, narzędzie do budowy Buildroot, bootloader GRUB, konfigurator sieci wicked, runtime dla izolowanych kontenerów containerd, platforma orkiestracyjna Kubernetes, uwierzytelniacz aws-iam-authenticator i agent Amazon ECS.
Narzędzia do orkiestracji kontenerów są dostarczane w osobnym kontenerze zarządzającym, który jest włączony domyślnie i zarządzany przez API oraz AWS SSM Agent. W podstawowym obrazie brakuje powłoki poleceń, serwer SSH oraz języki interpretowane (np. brak Pythona lub Perla) — narzędzia administracyjne i debugujące zostały przeniesione do oddzielnego kontenera pomocniczego, który domyślnie jest wyłączony.
Kluczową różnicą w porównaniu do podobnych dystrybucji, takich jak Fedora CoreOS, CentOS/Red Hat Atomic Host, jest pierwotne skoncentrowanie się na zapewnieniu maksymalnego bezpieczeństwa w kontekście wzmacniania ochrony systemu przed potencjalnymi zagrożeniami, utrudnienia wykorzystania luk w komponentach systemu operacyjnego oraz zwiększenia izolacji kontenerów. Kontenery są tworzone przy użyciu standardowych mechanizmów jądra Linuksa — cgroups, przestrzeni nazw oraz seccomp. Dla dodatkowej izolacji w dystrybucji stosowane jest SELinux w trybie „enforcing.”
Główny system plików jest montowany w trybie tylko do odczytu, a katalog z ustawieniami /etc jest montowany w tmpfs i przywraca pierwotny stan po restarcie. Bezpośrednie zmiany plików w katalogu /etc, takich jak /etc/resolv.conf i /etc/containerd/config.toml, nie są wspierane — aby trwale zachować ustawienia, należy używać API lub przenieść funkcjonalność do oddzielnych kontenerów. Do kryptograficznej weryfikacji integralności głównego systemu plików używany jest moduł dm-verity, a w przypadku wykrycia próby modyfikacji danych na poziomie bloku system zostanie zrestartowany.
Większość komponentów systemowych została napisana w języku Rust, który zapewnia narzędzia do bezpiecznej pracy z pamięcią, umożliwiając uniknięcie podatności spowodowanych dostępem do obszaru pamięci po jego zwolnieniu, dereferencjonowaniem wskaźników zerowych oraz przekroczeniem granic bufora. Podczas domyślnej kompilacji stosuje się tryby kompilacji „—enable-default-pie” oraz „—enable-default-ssp” w celu włączenia randomizacji przestrzeni adresowej plików wykonywalnych (PIE) oraz ochrony przed przepełnieniem stosu poprzez podstawienie znaczników kanarkowych. Dla pakietów napisanych w języku C/C++ dodatkowo włączane są flagi „-Wall”, „-Werror=format-security”, „-Wp,-D_FORTIFY_SOURCE=2”, „-Wp,-D_GLIBCXX_ASSERTIONS” oraz „-fstack-clash-protection”.
W nowym wydaniu:
- Добавлена поддержка зеркал реестра образов контейнеров.
- Добавлена возможность использования самоподписанных сертификатов.
- Добавлен параметр для настройки имени хоста.
- Обновлена версия предлагаемого по умолчанию административного контейнера.
- Добавлены настройки topologyManagerPolicy и topologyManagerScope для kubelet.
- Добавлена поддержка сжатия ядра при помощи алгоритма zstd.
- Предоставлена возможность загрузки в VMware maszyn wirtualnych в формате OVA (Open Virtualization Format).
- Обновлён варианта дистрибутива aws-k8s-1.21 c поддержкой Kubernetes 1.21. Прекращена поддержка aws-k8s-1.16.
- Zaktualizowano wersje pakietów i zależności dla języka Rust.
Źródło: opennet.ru
