亞馬遜公司
Bottlerocket(順便說一下,小型自製黑火藥火箭的名稱)並不是第一個容器作業系統,但由於與 AWS 服務的預設集成,它很可能會變得廣泛。 儘管該系統專注於亞馬遜雲,但開源程式碼允許它在任何地方建置:本地伺服器上、Raspberry Pi 上、任何競爭雲中,甚至在無容器環境中。
這是 Red Hat 埋沒的 CoreOS 發行版的完全值得的替代方案。
事實上,Amazon Web Services 部門已經擁有 Amazon Linux,最近推出了第二個版本:它是一個通用發行版,可以在 Docker 容器中運行,也可以與 Linux KVM、Microsoft Hyper-V 和 VMware 一起運行ESXi 虛擬機管理程序。 它經過最佳化,可在 AWS 雲端上運行,但隨著 Bottlerocket 的發布,我們鼓勵每個人升級到更安全、更現代化且使用更少資源的新系統。
AWS 推出 Bottlerocket
極簡主義
Linux 剝離了運行容器不需要的所有內容。 據該公司稱,這種設計減少了攻擊面。
這意味著基礎系統上安裝的軟體包更少,從而更容易維護和更新作業系統,並且還減少了由於依賴關係而出現問題的可能性,從而減少了資源使用。 基本上,這裡的所有內容都在單獨的容器內運行,並且底層系統實際上是裸露的。
亞馬遜也刪除了所有 shell 和解釋器,消除了它們被使用或使用者意外升級權限的風險。 為了簡約和安全,基礎鏡像不包含命令 shell、SSH 伺服器或 Python 等解釋語言。 管理員工具放置在單獨的服務容器中,預設為停用。
該系統透過兩種方式進行管理:透過 API 和編排。
Bottlerocket 不是更新單一軟體的套件管理器,而是下載完整的檔案系統映像並重新啟動到其中。 如果負載失敗,它會自動回滾,並且工作負載失敗可以手動觸發回滾(透過 API 命令)。
框架 /etc
與 RAM 中的檔案系統一起安裝 /etc
不支援:要儲存設置,您應該使用 API 或將功能移至單獨的容器中。
API更新方案
安全
容器由 Linux 核心的標準機制(cgroup、命名空間和 seccomp)創建,並用作強制存取控制系統,即用於額外的隔離
預設情況下,啟用策略以在容器和核心之間共用資源。 二進位檔案受到標誌保護,以防止使用者或程式執行它們。 如果確實存取了檔案系統,Bottlerocket 會提供一種工具來檢查和追蹤所做的任何更改。
「驗證啟動」模式是透過 device-mapper-verity 函數實現的(
系統中還有一個過濾器
執行模型
使用者自訂
彙編
安全
故障模式
獲取資源
用戶
任務
是的
任何
使用者權利
中斷執行
系統呼叫、故障
核心
任務
沒有
靜止的
沒有
內核恐慌
прямой
BPF
событие
是的
準時制、核心再生產
驗證、準時生產
錯誤信息
有限的幫手
BPF 與常規用戶或核心級程式碼有何不同
AWS 表示,Bottlerocket“採用了一種操作模型,透過阻止具有管理權限的生產伺服器連接來進一步增強安全性”,並且“適合對每個主機的控制受到限制的大型分散式系統”。
為系統管理員提供管理員容器。 但 AWS 認為管理員通常不需要在 Bottlerocket 內部工作:“登入單獨的 Bottlerocket 實例的行為旨在用於不頻繁的操作:高級調試和故障排除,”
Rust 語言
核心之上的作業系統工具大部分是用 Rust 寫的。 這種語言的本質是
建置時預設應用標誌 --enable-default-pie
и --enable-default-ssp
啟用可執行檔案位址空間的隨機化(
對於 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 是否會成功將會很有趣。 例如,Vmware 的 PhotonOS 結果無人認領,RedHat 購買了 CoreOS 並
Bottlerocket 與 AWS 服務的整合使該系統以自己的方式獨一無二。 這也許是一些用戶可能更喜歡 Bottlerocket 而不是其他發行版(例如 CoreOS 或 Alpine)的主要原因。 該系統最初設計為與 EKS 和 ECS 配合使用,但我們重申這不是必需的。 首先,Bottlerocket 可以
Bottlerocket 原始碼在 Apache 2.0 許可證下發佈在 GitHub 上。 開發商已經
論廣告的權利
維迪斯娜 優惠
來源: www.habr.com