انتشار توزیع لینوکس Bottlerocket 1.8.0 منتشر شده است که با مشارکت آمازون برای راه اندازی کارآمد و ایمن کانتینرهای ایزوله توسعه یافته است. ابزارها و اجزای کنترل توزیع به زبان Rust نوشته شده و تحت مجوز MIT و Apache 2.0 توزیع شده اند. از اجرای Bottlerocket در آمازون ECS، VMware و خوشههای AWS EKS Kubernetes پشتیبانی میکند و همچنین ساختها و نسخههای سفارشی ایجاد میکند که امکان استفاده از ابزارهای مختلف هماهنگسازی و زمان اجرا را برای کانتینرها فراهم میکند.
این توزیع یک تصویر سیستم غیرقابل تقسیم بهروزرسانی اتمی و خودکار ارائه میکند که شامل هسته لینوکس و یک محیط حداقل سیستم است، که فقط شامل اجزای لازم برای اجرای کانتینرها میشود. این محیط شامل سیستم مدیر سیستم، کتابخانه Glibc، ابزار ساخت Buildroot، بارگذار بوت GRUB، پیکربندی شبکه بد، زمان اجرای کانتینر برای کانتینرهای ایزوله، پلت فرم هماهنگ سازی کانتینر Kubernetes، aws-iam-authenticator و آمازون است. عامل ECS.
ابزارهای ارکستراسیون کانتینر در یک محفظه مدیریت جداگانه قرار می گیرند که به طور پیش فرض فعال است و از طریق API و AWS SSM Agent مدیریت می شود. تصویر پایه فاقد پوسته فرمان، سرور SSH و زبان های تفسیر شده است (به عنوان مثال، بدون پایتون یا پرل) - ابزارهای مدیریتی و ابزارهای اشکال زدایی در یک ظرف سرویس جداگانه قرار می گیرند که به طور پیش فرض غیرفعال است.
تفاوت اصلی با توزیعهای مشابه مانند Fedora CoreOS، CentOS/Red Hat Atomic Host تمرکز اصلی بر ارائه حداکثر امنیت در زمینه تقویت حفاظت از سیستم در برابر تهدیدات احتمالی است، که بهرهبرداری از آسیبپذیریها در اجزای سیستمعامل و افزایش جداسازی کانتینر را دشوارتر میکند. . کانتینرها با استفاده از مکانیزم های استاندارد هسته لینوکس - cgroups، namespaces و seccomp ایجاد می شوند. برای جداسازی بیشتر، توزیع از SELinux در حالت "اجرا" استفاده می کند.
پارتیشن ریشه فقط خواندنی است و پارتیشن تنظیمات /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» اضافه میشوند. فعال -محافظت".
در نسخه جدید:
- Обновлено содержимое административного и управляющего контейнеров.
- Runtime для изолированных контейнеров обновлён до ветки containerd 1.6.x.
- Обеспечен перезапуск фоновых процессов, координирующих работу контейнеров, после изменений в хранилище сертификатов.
- Предоставлена возможность выставления загрузочных параметров ядра через секцию Boot Configuration.
- Включено игнорирование пустых блоков при контроле целостности корневого раздела при помощи dm-verity.
- Предоставлена возможность статической привязки имён хостов в /etc/hosts.
- Предоставлена возможность генерации сетевой конфигурации при помощи утилиты netdog (добавлена команда generate-net-config).
- Предложены новые варианты дистрибутива c поддержкой 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