آمازون Bottlerocket 1.0.0 را منتشر می کند، یک توزیع لینوکس بر اساس کانتینرهای ایزوله

آمازون ارایه شده اولین نسخه قابل توجه توزیع اختصاصی لینوکس بطری 1.0.0طراحی شده برای اجرای کارآمد و ایمن ظروف ایزوله. ابزارهای توزیع و اجزای کنترل به زبان Rust و نوشته شده است گسترش تحت مجوز MIT و Apache 2.0. این پروژه در GitHub در حال توسعه است و برای مشارکت اعضای جامعه در دسترس است. تصویر استقرار سیستم برای معماری های x86_64 و Aarch64 ایجاد می شود. این سیستم عامل برای اجرا در خوشه های Amazon ECS و AWS EKS Kubernetes سازگار شده است. ارائه شده است ابزارهایی برای ایجاد مجموعه‌ها و نسخه‌های خود، که می‌توانند از سایر ابزارهای ارکستراسیون، هسته‌ها و زمان اجرا برای کانتینرها استفاده کنند.

توزیع هسته لینوکس و یک محیط حداقل سیستم را فراهم می کند، که فقط شامل اجزای لازم برای اجرای کانتینرها می شود. از جمله بسته های درگیر در پروژه می توان به system manager systemd، کتابخانه Glibc و ابزارهای اسمبلی اشاره کرد.
Buildroot، بوت لودر GRUB، پیکربندی شبکه شریر، زمان اجرا برای ظروف ایزوله ظرف، پلت فرم ارکستراسیون کانتینر Kubernetes، aws-iam-authenticator، و عامل ECS آمازون.

توزیع به صورت اتمی به روز می شود و در قالب یک تصویر سیستمی تقسیم ناپذیر ارائه می شود. دو پارتیشن دیسک برای سیستم اختصاص داده شده است که یکی از آنها شامل سیستم فعال است و به روز رسانی در دومی کپی می شود. پس از استقرار آپدیت، پارتیشن دوم فعال می شود و در پارتیشن اول تا رسیدن آپدیت بعدی، نسخه قبلی سیستم ذخیره می شود که در صورت بروز مشکل می توانید به آن برگردید. به روز رسانی ها به طور خودکار و بدون دخالت مدیر نصب می شوند.

تفاوت اصلی با توزیع های مشابه مانند Fedora CoreOS، CentOS/Red Hat Atomic Host تمرکز اصلی بر ارائه حداکثر امنیت در زمینه تقویت حفاظت از سیستم در برابر تهدیدات احتمالی، سوء استفاده از آسیب پذیری در اجزای سیستم عامل و افزایش ایزوله کردن کانتینرها را دشوارتر می کند. کانتینرها با استفاده از مکانیزم های استاندارد هسته لینوکس - cgroups، namespaces و seccomp ایجاد می شوند. برای جداسازی بیشتر، توزیع از SELinux در حالت "اجرا" استفاده می کند و ماژول برای تایید رمزنگاری یکپارچگی پارتیشن ریشه استفاده می شود. dm-verity. اگر تلاشی برای تغییر داده ها در سطح دستگاه بلوک شناسایی شود، سیستم راه اندازی مجدد می شود.

پارتیشن ریشه فقط خواندنی است و پارتیشن تنظیمات /etc در tmpfs سوار می شود و پس از راه اندازی مجدد به حالت اولیه خود باز می گردد. اصلاح مستقیم فایل‌ها در فهرست /etc، مانند /etc/resolv.conf و /etc/containerd/config.toml، پشتیبانی نمی‌شود - برای ذخیره دائم تنظیمات، باید از API استفاده کنید یا عملکرد را به کانتینرهای جداگانه منتقل کنید.

بیشتر اجزای سیستم در 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".

ابزار ارکستراسیون کانتینر به صورت جداگانه عرضه می شود ظرف کنترل، که به صورت پیش فرض فعال و از طریق کنترل می شود API و AWS SSM Agent. تصویر پایه فاقد پوسته فرمان، سرور SSH و زبان های تفسیر شده است (به عنوان مثال، بدون پایتون یا پرل) - ابزارهای مدیریتی و ابزارهای اشکال زدایی در ظرف سرویس جداگانه، که به طور پیش فرض غیرفعال است.

منبع: opennet.ru

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