Появи се минималистичен Linux дистрибутив Bottlerocket за стартиране на контейнери. Най-важното за него

Появи се минималистичен Linux дистрибутив Bottlerocket за стартиране на контейнери. Най-важното за него

Компания Amazon обяви за окончателния релиз Bottlerocket — специализирана дистрибуция за стартиране на контейнери и ефективно управление с тях.

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 през март 2020 г.. Тя веднага признала, че това не е първият „Linux за контейнери“, споменавайки като източници на вдъхновение CoreOS, Rancher OS и Project Atomic. Разработчиците написали, че операционната система е "резултат от уроците, които сме извлекли от продължителната работа с производствени услуги в мащабите на Amazon, и на опита, който получихме през последните шест години за това как да стартираме контейнери."

Екстремен минимализъм

Linux е чист от всичко ненужно за стартиране на контейнери. Такъв дизайн, според компанията, намалява повърхността на атака.

Това означава, че в базовата система се инсталират по-малко пакети, което опростява поддръжката и обновяването на ОС, както и намалява вероятността от проблеми поради зависимости, намалявайки използването на ресурси. По принцип, всичко работи в рамките на отделни контейнери, а базовата система е практически гола.

Amazon също така е премахнала всички обвивки и интерпретатори, за да изключи риска от тяхното използване или случайно повишаване на привилегии от потребителите. В основния образ, с цел минимализъм и сигурност, командната обвивка, SSH сървърът и интерпретируемите езици като Python отсъстват. Инструментите за администратора са изнесени в отделен служебен контейнер, който е деактивиран по подразбиране.

Управлението на системата се предвижда по два начина: чрез API и оркестрация.

Вместо мениджър на пакети, който обновява отделни части на софтуера, Bottlerocket изтегля цял образ на файловата система и рестартира в него. В случай на неуспех при зареждане, той автоматично се върна назад, а неуспех на работната натовареност може да инициира ръчен откат (команда чрез API).

Фреймворк TUF (The Update Framework) изтегля обновления на базата на образи в алтернативни или "размонтирани" дялове. Отделят се два дискови дяла за системата, един от които съдържа активната система, а вторият копира обновлението. При това коренният дял се монтира в режим само за четене, а дялът /etc се монтира с файловата система в оперативната памет tmpfs и възстановява първоначалното състояние след рестартиране. Пряко изменение на конфигурационните файлове в /etc не се поддържа: за запазване на настройките трябва да се използва API или да се изнасят функции в отделни контейнери.

Появи се минималистичен Linux дистрибутив Bottlerocket за стартиране на контейнери. Най-важното за него
Схемата за обновление чрез API

Сигурност

Контейнерите се създават чрез стандартните механизми на ядрото на Linux — cgroups, пространства имена и seccomp, а като система за принудителен контрол на достъпа, т.е. за допълнителна изолация, се използва SELinux в режим "enforcing".

По подразбиране са включени политики за разделяне на ресурсите между контейнерите и ядрото. Бинарниците са защитени с флагове, за да не могат потребителите или програмите да ги изпълняват. И ако някой е получил достъп до файловата система, Bottlerocket предлага инструмент за проверка и проследяване на всякакви извършени промени.

Режимът "проверена зареждане" е реализиран чрез функцията device-mapper-verity (dm-verity), която проверява целостта на основния дял по време на зареждане. AWS описва dm-verity като „функция на ядрото на Linux, която осигурява проверка на целостта, за да предотврати работата на злонамерен софтуер в ОС, като презаписване на основния системен софтуер“.

Системата разполага и с филтър eBPF (разширен BPF, разработка на Алексей Старавоитов), който позволява подмяна на модули на ядрото с по-безопасни BPF програми за нискоуровневи системни операции.

Модел на изпълнение
Определя се от потребителя
Компилация
Сигурност
Режим на отказ
Достъп до ресурси

Потребител
задача
да
всякакъв
права на потребителите
прекъсване на изпълнението
системно извикване, fault

Ядро
задача
недостъпен
статичен
недостъпен
паника на ядрото
директен

BPF
събитие
да
JIT, CO-RE
верификация, JIT
съобщение за грешка
ограничени помощни функции

Разликата между BPF и обикновения код на ниво потребител или ядро, източник

AWS заяви, че Bottlerocket „прилага оперативен модел, който допълнително повишава сигурността, предотвратявайки свързването с производствени сървъри с административни права“ и „е подходящ за големи разпределени системи, в които контролът над всеки отделен хост е ограничен“.

За системните администратори е предвиден контейнер на администратора. Но AWS не смята, че администраторът често ще трябва да работи в Bottlerocket: „Действието на вход в отделен инстанс на Bottlerocket е предназначено за рядко изпълнение: разширена отстраняване на неизправности“ - писа разработчици.

Езикът Rust

Инструментариумът на ОС над ядрото е основно написан на 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.

Освен Rust и C/C++, някои пакети са написани на езика Go.

Интеграция с услуги на AWS

Разликата с аналогични контейнерни операционни системи е, че Amazon е оптимизирала Bottlerocket за работа на AWS и интеграция с други услуги на AWS.

Най-популярният оркестратор на контейнери е Kubernetes, затова AWS внедри интеграция с неговия собствен Enterprise Kubernetes Service (EKS). Инструментите за оркестрация са в отделен управляващ контейнер bottlerocket-control-container, който е включен по подразбиране и се управлява чрез API и AWS SSM Agent.

Ще бъде интересно да видим дали Bottlerocket ще успее, предвид провала на някои подобни инициативи в миналото. Например, PhotonOS от Vmware се оказа неизползвана, а RedHat купи CoreOS и заяви края на проекта, който се смяташе за пионер в тази област.

Интеграцията на Bottlerocket в услугите на AWS прави системата уникална. Възможно е това да е основната причина, поради която някои потребители може да предпочетат Bottlerocket пред други дистрибуции, като CoreOS или Alpine. Системата е проектирана първоначално за работа с EKS и ECS, но да повторим, това не е задължително. Първо, Bottlerocket може се изгради самостоятелно да бъде използван например като хоствано решение. Второ, потребителите на EKS и ECS все още ще имат възможност да избират ОС.

Изходният код на Bottlerocket е публикуван на GitHub под лиценз Apache 2.0. Разработчиците вече реагират на доклади за бъгове и искания за функции.

Реклама

VDSina предлага VDS с дневно плащане. Можете да инсталирате всяка операционна система, включително от свой образ. Всеки сървър е свързан с интернет канал от 500 Мегабита и е безплатно защитен от DDoS атаки!

Появи се минималистичен Linux дистрибутив Bottlerocket за стартиране на контейнери. Най-важното за него

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster