Bottlerocket 1.8 可用,基於隔離容器的發行版

Linux 發行版 Bottlerocket 1.8.0 已發布,由 Amazon 參與開發,用於高效、安全地啟動隔離容器。 此發行版的工具和控制元件是用 Rust 編寫的,並在 MIT 和 Apache 2.0 授權下分發。 它支援在 Amazon ECS、VMware 和 AWS EKS Kubernetes 叢集上執行 Bottlerocket,以及建立允許使用各種容器編排和執行時間工具的自訂建置和版本。

該發行版提供了一個自動更新的不可分割的系統映像,其中包括 Linux 核心和最小的系統環境,僅包括運行容器所需的元件。 此環境包括 systemd 系統管理員、Glibc 程式庫、Buildroot 建置工具、GRUB 引導程式、wicked 網路設定器、隔離容器的 Containerd 執行時間、Kubernetes 容器編排平台、aws-iam-authenticator 和 Amazon ECS代理程式。

容器編排工具位於一個單獨的管理容器中,該容器預設為啟用並透過 API 和 AWS SSM 代理進行管理。 基礎鏡像缺少命令 shell、SSH 伺服器和解釋語言(例如,沒有 Python 或 Perl)——管理工具和偵錯工具被放置在單獨的服務容器中,預設為停用。

與Fedora CoreOS、CentOS/Red Hat Atomic Host 等類似發行版的主要區別在於,主要專注於在加強系統保護免受可能威脅的背景下提供最大的安全性,從而使利用作業系統元件中的漏洞變得更加困難並增強容器隔離。 容器是使用標準 Linux 核心機制建立的 - cgroup、命名空間和 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”啟用保護」。

在新版本中:

  • 管理和控制容器的內容已更新。
  • 隔離容器的運行時已更新至containerd 1.6.x分支。
  • 確保在變更憑證儲存後重新啟動協調容器操作的背景進程。
  • 可以透過「引導配置」部分設定核心引導參數。
  • 使用 dm-verity 監視根分割區的完整性時啟用忽略空區塊。
  • 已提供在 /etc/hosts 中靜態綁定主機名稱的功能。
  • 已提供使用 netdog 實用程式產生網路配置的功能(已新增generate-net-config 命令)。
  • 已經提出了支援 Kubernetes 1.23 的新發行版選項。 透過停用 configMapAndSecretChangeDetectionStrategy 模式,減少了 Kubernetes 中 pod 的啟動時間。 新增了新的 kubelet 設定:provider-id 和 podPidsLimit。
  • 已提議使用 NVIDIA 驅動程式提供適用於 Amazon Elastic Container Service (Amazon ECS) 的新版本分發工具包「aws-ecs-1-nvidia」。
  • 新增了對 Microchip 智慧儲存和 MegaRAID SAS 儲存設備的支援。 Broadcom 晶片上對乙太網路卡的支援已擴展。
  • 更新了 Go 和 Rust 語言的套件版本和依賴項,以及第三方程式的套件版本。 Bottlerocket SDK已更新至版本0.26.0。

來源: opennet.ru

添加評論