Công ty Amazon
Bottlerocket (кстати, так называют мелкие самодельные ракеты на дымном порохе) — не первая ОС для контейнеров, но вполне вероятно, что она получит широкое распространение благодаря дефолтной интеграции с сервисами AWS. Хотя система ориентирована на облако Amazon, открытый исходный код позволяет собрать её где угодно: локально на сервере, на Raspberry Pi, в любом конкурирующем облаке и даже в среде без контейнеров.
Это вполне достойная замена дистрибутиву CoreOS, который похоронила Red Hat.
Вообще, у подразделения Amazon Web Services уже есть Amazon Linux, который недавно вышел во второй версии: это дистрибутив общего назначения, который можно запустить в контейнере Docker или с гипервизорами Linux KVM, Microsoft Hyper-V и VMware ESXi. Он был оптимизирован для работы в облаке AWS, но с выходом Bottlerocket всем рекомендуется сделать апгрейд на новую систему, которая более безопасная, современная и потребляет меньше ресурсов.
AWS анонсировала Bottlerocket
Экстремальный минимализм
Linux очищен от всего, что не нужно для запуска контейнеров. Такой дизайн, по словам компании, сокращает поверхность атаки.
Это означает, что в базовой системе устанавливается меньше пакетов, что упрощает поддержку и обновление ОС, а также снижает вероятность возникновения проблем из-за зависимостей, снижает использование ресурсов. В принципе, здесь всё работает внутри отдельных контейнеров, а базовая система практически голая.
Amazon также удалила все оболочки и интерпретаторы, исключив риск их использования или случайного повышения привилегий пользователями. В базовом образе ради минимализма и безопасности отсутствует командная оболочка, сервер SSH и интерпретируемые языки типа Python. Инструменты для администратора вынесены в отдельный служебный контейнер, который отключён по умолчанию.
Управление системой предусмотрено двумя способами: через API и оркестровку.
Вместо менеджера пакетов, который обновляет отдельные части программного обеспечения, Bottlerocket загружает полный образ файловой системы и перезагружается в него. В случае сбоя загрузки он автоматически откатывается, а сбой рабочей нагрузки может инициировать откат вручную (команда через API).
khung /etc
монтируется с файловой системой в оперативной памяти /etc
не поддерживается: для сохранения настроек следует использовать API или выносить функциональность в отдельные контейнеры.
Схема обновления через API
Безопасность
Контейнеры создаются штатными механизмами ядра Linux — cgroups, пространства имён и seccomp, а в качестве системы принудительного контроля доступа, то есть для дополнительной изоляции используется
По умолчанию включены политики для разделения ресурсов между контейнерами и ядром. Бинарники защищены флагами, чтобы пользователи или программы не могли их выполнять. И если кто-то добрался до файловой системы, Bottlerocket предлагает инструмент для проверки и отслеживания любых внесённых изменений.
Режим «проверенной загрузки» реализован через функцию device-mapper-verity (
Также в системе присутствует фильтр
Модель выполнения
Задаётся пользователем
Tổng hợp
Безопасность
Режим сбоя
Доступ к ресурсам
Người dùng
bài tập
vâng
bất kỳ
права пользователей
прерывание выполнения
системный вызов, fault
Hạt nhân
bài tập
không
статическая
không
паника ядра
прямой
BPF
biến cố
vâng
JIT, CO-RE
верификация, JIT
thông báo lỗi
ограниченные хелперы
Отличие BPF от обычного кода уровня пользователя или ядра,
AWS заявила, что Bottlerocket «применяет операционную модель, которая ещё больше повышает безопасность, препятствуя подключению к продакшн-серверам с привилегиями администратора», и «подходит для больших распределённых систем, в которых ограничен контроль над каждым отдельным хостом».
Для системных администраторов предусмотрен контейнер администратора. Но AWS не думает, что админу часто придется работать внутри Bottlerocket: «Акт входа в отдельный инстанс Bottlerocket предназначен для нечастых операций: расширенной отладки и устранения неполадок», —
Язык Rust
Инструментарий ОС поверх ядра в основном написан на Rust. Этот язык по своей природе
При сборке по умолчанию применяются флаги --enable-default-pie
и --enable-default-ssp
для включения рандомизации адресного пространства исполняемых файлов (
Для пакетов на C/C++ дополнительно включаются флаги -Wall
, -Werror=format-security
, -Wp,-D_FORTIFY_SOURCE=2
, -Wp,-D_GLIBCXX_ASSERTIONS
и -fstack-clash-protection
.
Кроме Rust и C/C++, некоторые пакеты написаны на языке Go.
Интеграция с сервисами AWS
Отличие от аналогичных контейнерных операционных систем заключается в том, что Amazon оптимизировала Bottlerocket для работы на AWS и интеграции с другими сервисами AWS.
Самым популярным оркестратором контейнеров является Kubernetes, поэтому AWS внедрила интеграцию с собственным Enterprise Kubernetes Service (EKS). Инструменты для оркестровки идут в отдельном управляющем контейнере
Будет интересно посмотреть, взлетит ли Bottlerocket, учитывая провал некоторых подобных инициатив в прошлом. Например, PhotonOS от Vmware оказалась невостребованной, а RedHat купила CoreOS и
Интеграция Bottlerocket в сервисы AWS делает эту систему в своём роде уникальной. Возможно, это главная причина, почему некоторые пользователи могут предпочесть Bottlerocket другим дистрибутивам, таким как CoreOS или Alpine. Система изначально спроектирована для работы с EKS и ECS, но повторим, что это не обязательно. Во-первых, Bottlerocket можно
Исходный код Bottlerocket опубликован на GitHub под лицензией Apache 2.0. Разработчики уже
Như một quảng cáo
VDSina cung cấp
Nguồn: www.habr.com