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

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

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

  • Абноўлена змесціва адміністрацыйнага і кіраўніка кантэйнераў.
  • Runtime для ізаляваных кантэйнераў абноўлены да галінкі containerd 1.6.x.
  • Забяспечаны перазапуск фонавых працэсаў, якія каардынуюць працу кантэйнераў, пасля змен у сховішча сертыфікатаў.
  • Прадастаўлена магчымасць выстаўлення загрузных параметраў ядра праз секцыю Boot Configuration.
  • Уключана ігнараванне пустых блокаў пры кантролі цэласнасці каранёвай часткі пры дапамозе dm-verity.
  • Прадастаўлена магчымасць статычнай прывязкі імён хастоў у /etc/hosts.
  • Прадастаўлена магчымасць генерацыі сеткавай канфігурацыі пры дапамозе ўтыліты netdog (дададзена каманда generate-net-config).
  • Прапанаваны новыя варыянты дыстрыбутыва з падтрымкай Kubernetes 1.23. Скарочана час запуску pod-ов у Kubernetes за рахунак адключэння рэжыму configMapAndSecretChangeDetectionStrategy. Дададзены новыя налады kubelet-ов: provider-id і podPidsLimit.
  • Прапанаваны новы варыянт дыстрыбутыва "aws-ecs-1-nvidia" для Amazon Elastic Container Service (Amazon ECS), які пастаўляецца з драйверамі NVIDIA.
  • Дададзена падтрымка прылад захоўвання Microchip Smart Storage і MegaRAID SAS. Пашыраная падтрымка Ethernet-карт на чыпах Broadcom.
  • Абноўлены версіі пакетаў і залежнасці для моў Go і Rust, а таксама версіі пакетаў са іншымі праграмамі. Bottlerocket SDK абноўлены да версіі 0.26.0.

Крыніца: opennet.ru

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