Amazon xuất bản Bottlerocket 1.0.0, một bản phân phối Linux dựa trên các thùng chứa bị cô lập

Công ty Amazon trình bày bản phát hành quan trọng đầu tiên của bản phân phối Linux chuyên dụng Giá đỡ chai 1.0.0, được thiết kế để chạy các container biệt lập một cách hiệu quả và an toàn. Các công cụ và thành phần điều khiển của bản phân phối được viết bằng Rust và lây lan theo giấy phép MIT và Apache 2.0. Dự án đang được phát triển trên GitHub và có sẵn cho các thành viên cộng đồng tham gia. Hình ảnh triển khai hệ thống được tạo cho kiến ​​trúc x86_64 và Aarch64. Hệ điều hành được điều chỉnh để chạy trên các cụm Amazon ECS và AWS EKS Kubernetes. Được cung cấp các công cụ để tạo các tập hợp và phiên bản của riêng bạn, có thể sử dụng các công cụ điều phối, hạt nhân và thời gian chạy khác cho các vùng chứa.

Bản phân phối này cung cấp nhân Linux và môi trường hệ thống tối thiểu, chỉ bao gồm các thành phần cần thiết để chạy các thùng chứa. Trong số các gói tham gia dự án có hệ thống quản lý hệ thống, thư viện Glibc và các công cụ lắp ráp
Buildroot, bộ tải khởi động GRUB, bộ cấu hình mạng độc ác, thời gian chạy cho các vùng chứa bị cô lập chứa đựng, Nền tảng điều phối vùng chứa Kubernetes, aws-iam-authenticator và tác nhân Amazon ECS.

Bản phân phối được cập nhật nguyên tử và được phân phối dưới dạng hình ảnh hệ thống không thể phân chia. Hai phân vùng đĩa được phân bổ cho hệ thống, một trong số đó chứa hệ thống đang hoạt động và bản cập nhật được sao chép sang phân vùng thứ hai. Sau khi bản cập nhật được triển khai, phân vùng thứ hai sẽ hoạt động và trong phân vùng đầu tiên, cho đến khi có bản cập nhật tiếp theo, phiên bản trước của hệ thống sẽ được lưu, bạn có thể quay lại nếu có vấn đề phát sinh. Các bản cập nhật được cài đặt tự động mà không cần sự can thiệp của quản trị viên.

Điểm khác biệt chính so với các bản phân phối tương tự như Fedora CoreOS, CentOS/Red Hat Atomic Host là trọng tâm chính là cung cấp bảo mật tối đa trong bối cảnh tăng cường bảo vệ hệ thống khỏi các mối đe dọa có thể xảy ra, khiến việc khai thác lỗ hổng trong các thành phần hệ điều hành trở nên khó khăn hơn và tăng tính cô lập của các container. Các thùng chứa được tạo bằng các cơ chế nhân Linux tiêu chuẩn - cgroups, namespaces và seccomp. Để cách ly bổ sung, bản phân phối sử dụng SELinux ở chế độ “thực thi” và mô-đun được sử dụng để xác minh bằng mật mã tính toàn vẹn của phân vùng gốc dm-sự thật. Nếu phát hiện nỗ lực sửa đổi dữ liệu ở cấp thiết bị khối, hệ thống sẽ khởi động lại.

Phân vùng gốc được gắn ở chế độ chỉ đọc và phân vùng cài đặt /etc được gắn vào tmpfs và được khôi phục về trạng thái ban đầu sau khi khởi động lại. Không hỗ trợ sửa đổi trực tiếp các tệp trong thư mục /etc, chẳng hạn như /etc/resolv.conf và /etc/containerd/config.toml - để lưu vĩnh viễn cài đặt, bạn phải sử dụng API hoặc di chuyển chức năng này vào các vùng chứa riêng biệt.

Hầu hết các thành phần hệ thống được viết bằng Rust, cung cấp các tính năng an toàn cho bộ nhớ để tránh các lỗ hổng do truy cập bộ nhớ sau khi rảnh, hủy tham chiếu con trỏ null và lỗi tràn bộ đệm. Khi xây dựng theo mặc định, các chế độ biên dịch “--enable-default-pie” và “--enable-default-ssp” được sử dụng để cho phép ngẫu nhiên hóa không gian địa chỉ của các tệp thực thi (PIE) và bảo vệ chống tràn ngăn xếp thông qua thay thế canary.
Đối với các gói được viết bằng C/C++, có thêm cờ bổ sung
"-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" và "-fstack-clash-protection".

Công cụ điều phối vùng chứa được cung cấp riêng thùng chứa điều khiển, được bật theo mặc định và được kiểm soát thông qua API và Đại lý AWS SSM. Hình ảnh cơ sở thiếu shell lệnh, máy chủ SSH và các ngôn ngữ thông dịch (ví dụ: không có Python hoặc Perl) - các công cụ quản trị và công cụ gỡ lỗi được đặt trong container dịch vụ riêng biệt, tính năng này bị tắt theo mặc định.

Nguồn: opennet.ru

Thêm một lời nhận xét