انتشار توزیع لینوکس Bottlerocket 1.2.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» اضافه میشوند. فعال -محافظت".
در نسخه جدید:
- پشتیبانی از آینه های رجیستری تصویر کانتینر اضافه شده است.
- امکان استفاده از گواهینامه های خودامضا اضافه شده است.
- گزینه ای برای پیکربندی نام میزبان اضافه شده است.
- نسخه پیش فرض کانتینر اداری به روز شده است.
- تنظیمات topologyManagerPolicy و topologyManagerScope برای kubelet اضافه شد.
- پشتیبانی از فشرده سازی هسته با استفاده از الگوریتم zstd اضافه شده است.
- امکان بارگذاری ماشین های مجازی در VMware با فرمت OVA (Open Virtualization Format) فراهم شده است.
- نسخه توزیع aws-k8s-1.21 با پشتیبانی از Kubernetes 1.21 به روز شده است. پشتیبانی از aws-k8s-1.16 متوقف شده است.
- نسخه های بسته و وابستگی های به روز شده برای زبان Rust.
منبع: opennet.ru