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

Bản phân phối Linux Bottlerocket 1.2.0 đã có sẵn, được phát triển với sự tham gia của Amazon để khởi chạy hiệu quả và an toàn các vùng chứa 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:

  • Đã thêm hỗ trợ cho máy nhân bản đăng ký hình ảnh vùng chứa.
  • Đã thêm khả năng sử dụng chứng chỉ tự ký.
  • Đã thêm tùy chọn để định cấu hình tên máy chủ.
  • Phiên bản mặc định của vùng chứa quản trị đã được cập nhật.
  • Đã thêm cài đặt topologyManagerPolicy và topologyManagerScope cho kubelet.
  • Đã thêm hỗ trợ nén kernel bằng thuật toán zstd.
  • Khả năng tải máy ảo vào VMware ở định dạng OVA (Định dạng ảo hóa mở) được cung cấp.
  • Phiên bản phân phối aws-k8s-1.21 đã được cập nhật với sự hỗ trợ cho Kubernetes 1.21. Hỗ trợ cho aws-k8s-1.16 đã bị ngừng.
  • Đã cập nhật các phiên bản gói và phần phụ thuộc cho ngôn ngữ Rust.

Nguồn: opennet.ru

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