一個極簡的 Linux 發行版 Bottlerocket 已經發布來運行容器。 對他來說最重要的是

一個極簡的 Linux 發行版 Bottlerocket 已經發布來運行容器。 對他來說最重要的是

亞馬遜公司 宣布了 關於最終版本 瓶裝火箭 — 用於運作容器並有效管理它們的專屬發行版。

Bottlerocket(順便說一下,小型自製黑火藥火箭的名稱)並不是第一個容器作業系統,但由於與 AWS 服務的預設集成,它很可能會變得廣泛。 儘管該系統專注於亞馬遜雲,但開源程式碼允許它在任何地方建置:本地伺服器上、Raspberry Pi 上、任何競爭雲中,甚至在無容器環境中。

這是 Red Hat 埋沒的 CoreOS 發行版的完全值得的替代方案。

事實上,Amazon Web Services 部門已經擁有 Amazon Linux,最近推出了第二個版本:它是一個通用發行版,可以在 Docker 容器中運行,也可以與 Linux KVM、Microsoft Hyper-V 和 VMware 一起運行ESXi 虛擬機管理程序。 它經過最佳化,可在 AWS 雲端上運行,但隨著 Bottlerocket 的發布,我們鼓勵每個人升級到更安全、更現代化且使用更少資源的新系統。

AWS 推出 Bottlerocket 2020年XNUMX月。 她立即​​承認,這不是第一個“容器 Linux”,並引用 CoreOS、Rancher OS 和 Project Atomic 作為靈感來源。 開發人員寫道,該作業系統是“我們從長期運行亞馬遜規模的生產服務中吸取的教訓,以及我們在過去六年中獲得的關於如何運行容器的經驗的結果。”

極簡主義

Linux 剝離了運行容器不需要的所有內容。 據該公司稱,這種設計減少了攻擊面。

這意味著基礎系統上安裝的軟體包更少,從而更容易維護和更新作業系統,並且還減少了由於依賴關係而出現問題的可能性,從而減少了資源使用。 基本上,這裡的所有內容都在單獨的容器內運行,並且底層系統實際上是裸露的。

亞馬遜也刪除了所有 shell 和解釋器,消除了它們被使用或使用者意外升級權限的風險。 為了簡約和安全,基礎鏡像不包含命令 shell、SSH 伺服器或 Python 等解釋語言。 管理員工具放置在單獨的服務容器中,預設為停用。

該系統透過兩種方式進行管理:透過 API 和編排。

Bottlerocket 不是更新單一軟體的套件管理器,而是下載完整的檔案系統映像並重新啟動到其中。 如果負載失敗,它會自動回滾,並且工作負載失敗可以手動觸發回滾(透過 API 命令)。

框架 TUF (更新框架)將基於映像的更新下載到備用或「未安裝」分割區。 為系統指派兩個磁碟分割區,其中一個包含活動系統,更新複製到第二個。 在這種情況下,根分割區以唯讀模式掛載,並且該分割區 /etc 與 RAM 中的檔案系統一起安裝 臨時文件系統 並在重新啟動後恢復原始狀態。 直接修改設定檔 /etc 不支援:要儲存設置,您應該使用 API 或將功能移至單獨的容器中。

一個極簡的 Linux 發行版 Bottlerocket 已經發布來運行容器。 對他來說最重要的是
API更新方案

安全

容器由 Linux 核心的標準機制(cgroup、命名空間和 seccomp)創建,並用作強制存取控制系統,即用於額外的隔離 SELinux的 處於“強制”模式。

預設情況下,啟用策略以在容器和核心之間共用資源。 二進位檔案受到標誌保護,以防止使用者或程式執行它們。 如果確實存取了檔案系統,Bottlerocket 會提供一種工具來檢查和追蹤所做的任何更改。

「驗證啟動」模式是透過 device-mapper-verity 函數實現的(dm-驗證),它在引導期間檢查根分區的完整性。 AWS 將 dm-verity 描述為“Linux 核心的功能,可提供完整性檢查以防止惡意軟體在作業系統上運行,例如覆蓋核心系統軟體。”

系統中還有一個過濾器 eGMP (擴展 BPF, 由 Alexey Starovoitov 開發),它允許用更安全的 BPF 程式替換核心模組以進行低階系統操作。

執行模型
使用者自訂
彙編
安全
故障模式
獲取資源

用戶
任務
是的
任何
使用者權利
中斷執行
系統呼叫、故障

核心
任務
沒有
靜止的
沒有
內核恐慌
прямой

BPF
событие
是的
準時制、核心再生產
驗證、準時生產
錯誤信息
有限的幫手

BPF 與常規用戶或核心級程式碼有何不同

AWS 表示,Bottlerocket“採用了一種操作模型,透過阻止具有管理權限的生產伺服器連接來進一步增強安全性”,並且“適合對每個主機的控制受到限制的大型分散式系統”。

為系統管理員提供管理員容器。 但 AWS 認為管理員通常不需要在 Bottlerocket 內部工作:“登入單獨的 Bottlerocket 實例的行為旨在用於不頻繁的操作:高級調試和故障排除,” 開發商。

Rust 語言

核心之上的作業系統工具大部分是用 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.

除了 Rust 和 C/C++ 之外,還有一些套件是用 Go 寫的。

與 AWS 服務集成

與同類容器作業系統的不同之處在於,Amazon 對 Bottlerocket 進行了最佳化,使其可以在 AWS 上運作並與其他 AWS 服務整合。

最受歡迎的容器編排器是 Kubernetes,因此 AWS 引入了與自己的企業 Kubernetes 服務 (EKS) 的整合。 編排工具位於單獨的控制容器中 Bottlerocket 控制容器,預設啟用並透過 API 和 AWS SSM 代理進行管理。

鑑於過去一些類似舉措的失敗,看看 Bottlerocket 是否會成功將會很有趣。 例如,Vmware 的 PhotonOS 結果無人認領,RedHat 購買了 CoreOS 並 關閉了項目,他被認為是該領域的先驅。

Bottlerocket 與 AWS 服務的整合使該系統以自己的方式獨一無二。 這也許是一些用戶可能更喜歡 Bottlerocket 而不是其他發行版(例如 CoreOS 或 Alpine)的主要原因。 該系統最初設計為與 EKS 和 ECS 配合使用,但我們重申這不是必需的。 首先,Bottlerocket 可以 自己組裝 並將其用作託管解決方案等。 其次,EKS 和 ECS 用戶仍然可以選擇他們的作業系統。

Bottlerocket 原始碼在 Apache 2.0 許可證下發佈在 GitHub 上。 開發商已經 回應錯誤報告和功能請求.

論廣告的權利

維迪斯娜 優惠 VDS 每日付款。 可以安裝任何作業系統,包括您自己的映像。 每台伺服器都連接到500兆位元的網路通道,並免費免受DDoS攻擊!

一個極簡的 Linux 發行版 Bottlerocket 已經發布來運行容器。 對他來說最重要的是

來源: www.habr.com

添加評論