Доступен выпуск Linux-дистрибутива Bottlerocket 1.1.0, развиваемого при участии компании Amazon для эффективного и безопасного запуска изолированных контейнеров. Инструментарий и управляющие компоненты дистрибутива написаны на языке Rust и распространяются под лицензиями MIT и Apache 2.0. Поддерживается запуск Bottlerocket в кластерах Amazon ECS и AWS EKS Kubernetes, а также создание произвольных сборок и редакций, допускающих применение различных инструментов оркестровки и runtime для контейнеров.
این توزیع یک تصویر سیستم غیرقابل تقسیم بهروزرسانی اتمی و خودکار ارائه میکند که شامل هسته لینوکس و یک محیط حداقل سیستم است، که فقط شامل اجزای لازم برای اجرای کانتینرها میشود. این محیط شامل سیستم مدیر سیستم، کتابخانه 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» اضافه میشوند. فعال -محافظت".
در نسخه جدید:
- Предложено два новых варианта дистрибутива aws-k8s-1.20 и vmware-k8s-1.20 c поддержкой Kubernetes 1.20. В данных вариантах, а также в обновлённом варианте aws-ecs-1, задействован новый выпуск ядра Linux 5.10. Режим lockdown по умолчанию переведён в значение «integrity» (блокируются возможности, позволяющие вносить изменения в работающее ядро из пространства пользователя). Прекращена поддержка варианта aws-k8s-1.15 на базе Kubernetes 1.15.
- Для Amazon ECS реализована поддержка сетевого режима awsvpc, позволяющего выделять отдельные сетевых интерфейсы и внутренние IP-адреса для каждой задачи.
- Добавлены настройки для управления различными параметрами Kubernetes, включая QPS, лимиты на пулы и возможность подключения к облачным провайдерам, отличным от AWS.
- В bootstrap-контейнере обеспечено ограничение доступа к данным пользователя при помощи SELinux.
- Добавлена утилита resize2fs.
منبع: opennet.ru