Выпуск Bottlerocket 1.2, дыстрыбутыва на базе ізаляваных кантэйнераў

Даступны выпуск Linux-дыстрыбутыва Bottlerocket 1.2.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».

У новым выпуску:

  • Дададзена падтрымка люстэркаў рэестра вобразаў кантэйнераў.
  • Дададзена магчымасць выкарыстання самападпісаных сертыфікатаў.
  • Дададзены параметр для наладкі імя хаста.
  • Абноўлена версія прапанаванага па змаўчанні адміністрацыйнага кантэйнера.
  • Дададзеныя наладкі topologyManagerPolicy і topologyManagerScope для kubelet.
  • Дададзена падтрымка сціску ядра пры дапамозе алгарытму zstd.
  • Дадзена магчымасць загрузкі ў VMware віртуальных машын у фармаце OVA (Open Virtualization Format).
  • Абноўлены варыянту дыстрыбутыва aws-k8s-1.21 з падтрымкай Kubernetes 1.21. Спынена падтрымка aws-k8s-1.16.
  • Абноўлены версіі пакетаў і залежнасці для мовы Rust.

Крыніца: opennet.ru

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