Випуск Bottlerocket 1.7, дистрибутив на базі ізольованих контейнерів

Опубліковано випуск Linux-дистрибутива Bottlerocket 1.7.0, що розвивається за участю компанії Amazon для ефективного та безпечного запуску ізольованих контейнерів. Інструментарій та керуючі компоненти дистрибутива написані мовою Rust та поширюються під ліцензіями MIT та Apache 2.0. Підтримується запуск Bottlerocket у кластерах Amazon ECS, VMware та AWS EKS Kubernetes, а також створення довільних збірок та редакцій, що допускають застосування різних інструментів оркестрування та runtime для контейнерів.

Дистрибутив надає атомарно та автоматично оновлюваний неподільний системний образ, що включає ядро ​​Linux та мінімальне системне оточення, що включають лише компоненти, необхідні для запуску контейнерів. В оточенні задіяні системний менеджер systemd, бібліотека Glibc, складальний інструментарій Buildroot, завантажувач GRUB, конфігуратор мережі wicked, runtime для ізольованих контейнерів containerd, платформа оркестрування контейнерів Kubernetes, автентифікатор aws-iam-authenticator та агент Amazon.

Інструменти для оркестрування контейнерів поставляються в окремому контейнері, що вмикається за замовчуванням і управляється через API і AWS SSM Agent. У базовому образі відсутня командна оболонка, сервер SSH та мови, що інтерпретуються (наприклад, немає Python або Perl) — засоби для адміністратора та налагоджувальні інструменти винесені в окремий службовий контейнер, який за замовчуванням відключений.

Ключовою відмінністю від схожих дистрибутивів, таких як Fedora CoreOS, CentOS/Red Hat Atomic Host є первинна орієнтація на надання максимальної безпеки у контексті посилення захисту системи від можливих загроз, ускладнення експлуатації вразливостей у компонентах ОС та підвищення ізоляції контейнерів. Контейнери створюються за допомогою штатних механізмів ядра Linux - cgroups, просторів імен та seccomp. Для додаткової ізоляції в дистрибутиві застосовується SELinux як «enforcing».

Кореневий розділ монтується в режимі лише для читання, а розділ з налаштуваннями /etc монтується в tmpfs і відновлює вихідний стан після перезапуску. Пряма зміна файлів у каталозі /etc, таких як /etc/resolv.conf та /etc/containerd/config.toml, не підтримується — для постійного збереження налаштувань слід використовувати API або виносити функціональність в окремі контейнери. Для криптографічної верифікації цілісності кореневого розділу задіяно модуль dm-verity, а у разі виявлення спроби модифікації даних на рівні блокового пристрою система перезавантажується.

Більшість системних компонентів написані мовою Rust, що надає засоби для безпечної роботи з пам'яттю, що дозволяють уникнути вразливостей, викликаних зверненням до області пам'яті після її звільнення, розйменуванням нульових покажчиків та виходом за межі буфера. При складанні за замовчуванням застосовуються режими компіляції «-enable-default-pie» і «--enable-default-ssp» для включення рандомізації адресного простору виконуваних файлів (PIE) та захисту від переповнення стека через підстановку канаркових міток. Для пакетів, написаних мовою C/C++, додатково включаються прапори "-Wall", "-Werror=format-security", "-Wp, -D_FORTIFY_SOURCE=2", "-Wp, -D_GLIBCXX_ASSERTIONS" та "-fstack-clash -protection».

У новому випуску:

  • При установці RPM-пакетів забезпечена генерація списку програм у форматі JSON і монтування його в host-контейнер як файл /var/lib/bottlerocket/inventory/application.json для отримання інформації про доступні пакети.
  • Оновлено контейнери «admin» та «control».
  • Оновлено версії пакетів та залежності для мов Go та Rust.
  • Оновлено версії пакетів зі сторонніми програмами.
  • Вирішено проблеми з конфігурацією tmpfilesd для kmod-5.10-nvidia.
  • Під час встановлення tuftool забезпечено прив'язування версій залежностей.

Джерело: opennet.ru

Додати коментар або відгук