Amazon апублікаваў Bottlerocket 1.0.0, Linux-дыстрыбутыў на базе ізаляваных кантэйнераў

Кампанія Amazon прадставіла першы значны выпуск спецыялізаванага Linux-дыстрыбутыва Бутэлька 1.0.0, Прызначанага для эфектыўнага і бяспечнага запуску ізаляваных кантэйнераў. Інструментарый і кіраўнікі кампаненты дыстрыбутыва напісаны на мове Rust і распаўсюджваюцца пад ліцэнзіямі MIT і Apache 2.0. Распрацоўка праекту вядзецца на GitHub і даступная для ўдзелу прадстаўнікоў супольнасці. Выява для разгортвання сістэмы фармуецца для архітэктур x86_64 і Aarch64. АС адаптаваная для запуску ў кластарах Amazon ECS і AWS EKS Kubernetes. Прадастаўлены інструменты і для стварэння ўласных зборак і рэдакцый, у якіх могуць выкарыстоўвацца іншыя інструменты аркестроўкі, ядры і runtime для кантэйнераў.

Дыстрыбутыў падае ядро ​​Linux і мінімальнае сістэмнае асяроддзе, улучальныя толькі кампаненты, неабходныя для запуску кантэйнераў. Сярод задзейнічаных у праекце пакетаў адзначаюцца сістэмны мэнэджар systemd, бібліятэка Glibc, зборачны інструментар
Buildroot, загрузнік GRUB, канфігуратар сеткі злы, runtime для ізаляваных кантэйнераў кантэйнер, платформа аркестроўкі кантэйнераў Kubernetes, аўтэнтыфікатар aws-iam-authenticator і агент Amazon ECS.

Дыстрыбутыў абнаўляецца атамарна і пастаўляецца ў форме непадзельнай сістэмнай выявы. Пад сістэму вылучаецца дзве дыскавыя часткі, адзін з якіх утрымоўвае актыўную сістэму, а на другі капіюецца абнаўленне. Пасля разгортвання абнаўлення актыўным становіцца другі падзел, а ў першым да паступлення наступнага абнаўлення захоўваецца мінулая версія сістэмы, на якую ў выпадку ўзнікнення праблем можна адкаціцца. Абнаўленні ўстанаўліваюцца аўтаматычна без удзелу адміністратара.

Ключавым адрозненнем ад падобных дыстрыбутываў, такіх як Fedora CoreOS, CentOS / Red Hat Atomic Host з'яўляецца першасная арыентацыя на забеспячэнне максімальнай бяспекі у кантэксце ўзмацнення абароны сістэмы ад магчымых пагроз, ускладненні эксплуатацыі ўразлівасцяў у кампанентах АС і падвышэнні ізаляцыі кантэйнераў. Кантэйнеры ствараюцца пры дапамозе штатных механізмаў ядра Linux - cgroups, прастор імёнаў і seccomp. Для дадатковай ізаляцыі ў дыстрыбутыве ўжываецца SELinux у рэжыме «enforcing», а для крыптаграфічнай верыфікацыі цэласнасці каранёвай часткі задзейнічаны модуль dm-verity. У выпадку выяўлення спробы мадыфікацыі дадзеных на ўзроўні блокавай прылады сістэма перазагружаецца.

Каранёвая частка мантуецца ў рэжыме толькі для чытання, а частка з наладамі /etc мантуецца ў tmpfs і аднаўляе зыходны стан пасля перазапуску. Прамая змена файлаў у каталогу /etc, такіх як /etc/resolv.conf і /etc/containerd/config.toml, не падтрымліваецца - для сталага захавання налад варта выкарыстоўваць API або выносіць функцыянальнасць у асобныя кантэйнеры.

Большасць сістэмных кампанентаў напісаны на мове 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".

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

Крыніца: opennet.ru

Дадаць каментар