Phát hành Bottlerocket 1.7, một bản phân phối dựa trên các thùng chứa bị cô lập

Việc phát hành bản phân phối Linux Bottlerocket 1.7.0 đã được xuất bản, phát triển với sự tham gia của Amazon nhằm khởi chạy hiệu quả và an toàn các container bị cô lập. 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à được phân phối theo giấy phép MIT và Apache 2.0. Nó hỗ trợ chạy Bottlerocket trên các cụm Amazon ECS, VMware và AWS EKS Kubernetes, cũng như tạo các bản dựng và phiên bản tùy chỉnh cho phép sử dụng nhiều công cụ điều phối và thời gian chạy cho vùng chứa.

Bản phân phối này cung cấp hình ảnh hệ thống không thể phân chia được cập nhật tự động và nguyên tử, bao gồm 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 vùng chứa. Môi trường bao gồm trình quản lý hệ thống systemd, thư viện Glibc, công cụ xây dựng Buildroot, bộ tải khởi động GRUB, bộ cấu hình mạng độc hại, thời gian chạy container cho các vùng chứa bị cô lập, nền tảng điều phối vùng chứa Kubernetes, aws-iam-authenticator và Amazon Đại lý ECS.

Các công cụ điều phối bộ chứa có trong một bộ chứa quản lý riêng biệt được bật theo mặc định và được quản lý thông qua API và AWS SSM Agent. 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 một vùng chứa dịch vụ riêng biệt, bị tắt theo mặc định.

Đ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 khả năng cách ly vùng chứa . 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 thêm, bản phân phối sử dụng SELinux ở chế độ “thực thi”.

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. Mô-đun dm-verity đượ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 và 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.

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ỉ 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ác cờ “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” và “-fstack-clash” cũng được thêm vào đã bật -bảo vệ".

Trong bản phát hành mới:

  • Khi cài đặt các gói RPM, có thể tạo danh sách các chương trình ở định dạng JSON và gắn nó vào vùng chứa máy chủ dưới dạng tệp /var/lib/bottlerocket/inventory/application.json để lấy thông tin về các gói có sẵn.
  • Các vùng chứa “quản trị viên” và “kiểm soát” đã được cập nhật.
  • Đã cập nhật các phiên bản gói và phần phụ thuộc cho ngôn ngữ Go và Rust.
  • Phiên bản cập nhật của gói với các chương trình của bên thứ ba.
  • Đã giải quyết các vấn đề về cấu hình tmpfilesd cho kmod-5.10-nvidia.
  • Khi cài đặt tuftool, các phiên bản phụ thuộc sẽ được liên kết.

Nguồn: opennet.ru

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