Амазонка
Bottlerocket (айтпақшы, кішкентай үйде жасалған қара ұнтақ зымырандарына берілген атау) контейнерлерге арналған бірінші ОЖ емес, бірақ ол AWS қызметтерімен әдепкі интеграцияның арқасында кең тарауы мүмкін. Жүйе Amazon бұлтына бағытталған болса да, ашық бастапқы код оны кез келген жерде құруға мүмкіндік береді: жергілікті серверде, Raspberry Pi-де, кез келген бәсекелес бұлтта және тіпті контейнерсіз ортада.
Бұл Red Hat көмген CoreOS дистрибутивін толығымен алмастырады.
Шын мәнінде, Amazon Web Services бөлімінде жақында екінші нұсқасы шыққан Amazon Linux бар: бұл Docker контейнерінде немесе Linux KVM, Microsoft Hyper-V және VMware көмегімен іске қосуға болатын жалпы мақсаттағы тарату. ESXi гипервизорлары. Ол AWS бұлтында жұмыс істеу үшін оңтайландырылған, бірақ Bottlerocket шығарылымымен барлығына қауіпсіз, заманауи және ресурстарды азырақ пайдаланатын жаңа жүйеге жаңарту ұсынылады.
AWS Bottlerocket туралы хабарлады
Төтенше минимализм
Linux контейнерлерді іске қосу үшін қажет емес барлық нәрселерден айырылған. Бұл дизайн, компанияның айтуынша, шабуылдың бетін азайтады.
Бұл базалық жүйеде аз пакеттер орнатылғанын білдіреді, бұл ОЖ-ны күтіп ұстауды және жаңартуды жеңілдетеді, сондай-ақ ресурстарды пайдалануды азайта отырып, тәуелділіктерге байланысты проблемалардың ықтималдығын азайтады. Негізінде, мұнда бәрі бөлек контейнерлерде жұмыс істейді, ал негізгі жүйе іс жүзінде жалаңаш.
Amazon сонымен қатар барлық қабықшалар мен аудармашыларды алып тастап, оларды пайдалану немесе пайдаланушылардың артықшылықтарды кездейсоқ ұлғайту қаупін болдырмайды. Минимализм мен қауіпсіздік үшін негізгі кескінге командалық қабық, SSH сервері немесе Python сияқты түсіндірілетін тілдер кірмейді. Әкімші құралдары әдепкі бойынша өшірілген бөлек қызмет көрсету контейнеріне орналастырылған.
Жүйе екі жолмен басқарылады: API және оркестр арқылы.
Бағдарламалық құралдың жеке бөліктерін жаңартатын пакет менеджерінің орнына Bottlerocket файлдық жүйенің толық кескінін жүктеп алып, оны қайта жүктейді. Жүктеме сәтсіз болса, ол автоматты түрде кері қайтарылады және жұмыс жүктемесінің сәтсіздігі кері қайтаруды қолмен іске қосуы мүмкін (API арқылы пәрмен).
Негіздеме /etc
жедел жадтағы файлдық жүйемен орнатылған /etc
қолдау көрсетілмейді: параметрлерді сақтау үшін API пайдалану керек немесе функцияны бөлек контейнерлерге жылжыту керек.
API жаңарту схемасы
Қауіпсіздік
Контейнерлер Linux ядросының стандартты механизмдері – топтар, аттар кеңістігі және seccomp арқылы жасалады және мәжбүрлі қол жеткізуді басқару жүйесі ретінде пайдаланылады, яғни қосымша оқшаулау үшін
Әдепкі бойынша, саясаттар контейнерлер мен ядро арасында ресурстарды ортақ пайдалану үшін қосылады. Екілік файлдар пайдаланушылардың немесе бағдарламалардың оларды орындауына жол бермеу үшін жалаушалармен қорғалған. Егер біреу файлдық жүйеге кірсе, Bottlerocket енгізілген өзгерістерді тексеру және қадағалау құралын ұсынады.
«Тексерілген жүктеу» режимі құрылғы-мапер-вертит функциясы арқылы жүзеге асырылады (
Сондай-ақ жүйеде сүзгі бар
Орындау үлгісі
Пайдаланушы анықталды
Жинақ
Қауіпсіздік
Сәтсіздік режимі
Ресурстарға қол жеткізу
Пайдаланушы
шақыру
иә
кез келген
пайдаланушы құқықтары
орындауды үзу
жүйелік шақыру, ақау
Ядро
шақыру
жоқ
статикалық
жоқ
ядролық дүрбелең
түзу
GMP
событие
иә
JIT, CO-RE
тексеру, JIT
қате туралы хабар
шектеулі көмекшілер
BPF қарапайым пайдаланушы немесе ядро деңгейі кодынан қалай ерекшеленеді
AWS Bottlerocket «әкімшілік артықшылықтары бар өндірістік серверлерге қосылуға жол бермеу арқылы қауіпсіздікті одан әрі жақсартатын операциялық модельді қолданады» және «әрбір жеке хостты бақылау шектелген үлкен таратылған жүйелер үшін қолайлы» деді.
Жүйе әкімшілері үшін әкімші контейнері берілген. Бірақ AWS әкімшіге Bottlerocket ішінде жиі жұмыс істеу қажет емес деп санайды: "Бөлек Bottlerocket данасына кіру әрекеті сирек операцияларға арналған: кеңейтілген жөндеу және ақаулықтарды жою,"
Тот тілі
Ядроның үстіндегі ОЖ құралдары негізінен 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 AWS жүйесінде жұмыс істеу және басқа AWS қызметтерімен біріктіру үшін Bottlerocket-ті оңтайландырды.
Ең танымал контейнер оркестрі - Kubernetes, сондықтан AWS өзінің Enterprise Kubernetes қызметімен (EKS) интеграцияны енгізді. Оркестрлік құралдар бөлек басқару контейнерінде келеді
Бұрынғы кейбір осындай бастамалардың сәтсіздігін ескере отырып, Bottlerocket ұшып кететінін көру қызықты болады. Мысалы, Vmware ұсынған PhotonOS талап етілмеген болып шықты, ал RedHat CoreOS және сатып алды.
Bottlerocket-тің AWS қызметтеріне интеграциясы бұл жүйені өзінше бірегей етеді. Бұл кейбір пайдаланушылардың CoreOS немесе Alpine сияқты басқа дистрибутивтерден Bottlerocket-ті таңдауының басты себебі болуы мүмкін. Жүйе бастапқыда EKS және ECS-пен жұмыс істеуге арналған, бірақ біз бұл қажет емес екенін қайталаймыз. Біріншіден, Bottlerocket мүмкін
Bottlerocket бастапқы коды GitHub сайтында Apache 2.0 лицензиясы бойынша жарияланған. Әзірлеушілер қазірдің өзінде бар
Жарнама құқықтары туралы
VDSina ұсыныстар
Ақпарат көзі: www.habr.com