انتشار Bottlerocket 1.7، توزیعی بر اساس ظروف ایزوله

انتشار توزیع لینوکس Bottlerocket 1.7.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» اضافه می‌شوند. فعال -محافظت".

در نسخه جدید:

  • هنگام نصب بسته‌های RPM، می‌توان فهرستی از برنامه‌ها را با فرمت JSON تولید کرد و آن را به عنوان فایل /var/lib/bottlerocket/inventory/application.json در محفظه میزبان نصب کرد تا اطلاعاتی در مورد بسته‌های موجود به دست آورد.
  • کانتینرهای "admin" و "کنترل" به روز شده اند.
  • نسخه های بسته و وابستگی های به روز شده برای زبان های Go و Rust.
  • نسخه های به روز شده بسته ها با برنامه های شخص ثالث.
  • مشکلات پیکربندی tmpfilesd برای kmod-5.10-nvidia حل شد.
  • هنگام نصب tuftool، نسخه های وابستگی پیوند داده می شوند.

منبع: opennet.ru

اضافه کردن نظر