Выпуск 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

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