Доступен выпуск Linux-дистрибутива Bottlerocket 1.1.0, развиваемого при участии компании Amazon для эффективного и безопасного запуска изолированных контейнеров. Инструментарий и управляющие компоненты дистрибутива написаны на языке Rust и распространяются под лицензиями MIT и Apache 2.0. Поддерживается запуск Bottlerocket в кластерах Amazon ECS и 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:
- Предложено два новых варианта дистрибутива aws-k8s-1.20 и vmware-k8s-1.20 c поддержкой Kubernetes 1.20. В данных вариантах, а также в обновлённом варианте aws-ecs-1, задействован новый выпуск ядра Linux 5.10. Режим lockdown по умолчанию переведён в значение «integrity» (блокируются возможности, позволяющие вносить изменения в работающее ядро из пространства пользователя). Прекращена поддержка варианта aws-k8s-1.15 на базе Kubernetes 1.15.
- Для Amazon ECS реализована поддержка сетевого режима awsvpc, позволяющего выделять отдельные сетевых интерфейсы и внутренние adresy IP для каждой задачи.
- Добавлены настройки для управления различными параметрами Kubernetes, включая QPS, лимиты на пулы и возможность подключения к облачным провайдерам, отличным от AWS.
- В bootstrap-контейнере обеспечено ограничение доступа к данным пользователя при помощи SELinux.
- Добавлена утилита resize2fs.
Źródło: opennet.ru
