推動無伺服器安全:AWS開源輕量級虛擬化技術
AWS開源其基於KVM的Firecracker輕量級虛擬化技術,意圖提升無伺服器安全及效能。
在上個月末的亞馬遜 re:Invent 大會上,AWS釋出其新版開源Firecracker輕量級虛擬化技術,旨在進一步推動無伺服器計算的採納。
長久以來,人們一直在爭論是否有必要在由某種形式的虛擬機器管理程式提供的額外隔離層上執行容器。至於無伺服器技術,也就是在容器內部執行的事件驅動型函式,AWS是將其Lambda無伺服器服務隔離在專用的彈性計算雲(EC2)虛擬例項上了。新發布的Firecracker技術則以輕量級微虛擬機器提供另一種方法隔離微服務和無伺服器函式,效能開銷更少,而安全性更好。
Firecracker的GitHub專案頁面上寫道:
Firecracker是開源虛擬化技術,專門為建立和管理安全多租戶容器和基於函式的服務而設計,基於服務的函式可以提供無伺服器操作模式。Firecracker在輕量級虛擬機器,也就是微虛擬機器(microVM)中執行工作負載。微虛擬機器結合了硬體虛擬化技術提供的安全和隔離屬性與容器提供的速度和靈活性。
AWS Lambda 本身是在2014年的re:Invent大會上釋出的,催化了整個無伺服器運動。2017年,AWS釋出 AWS Fargate 服務,為以無伺服器方式部署應用容器提供了新模型。
普通Docker容器得益於底層作業系統(通常是Linux)提供的多種隔離方式。問題在於,大型多租戶環境中,比如雲環境,容器提供的核心隔離就不夠用了,這也是為什麼AWS和其他大型容器使用者轉向了各型虛擬機器管理技術來提供額外隔離層的原因。
安全
完整的虛擬機器管理程式,比如KVM和Xen,包含一個作業系統,會對效能和儲存要求產生影響。相反,Firecracker每個微虛擬機器僅佔用5MB記憶體。雖然Firecracker本身並不是完整的虛擬機器,卻使用開源KVM虛擬機器管理程式來建立並管理微虛擬機器。Firecracker還是以開源Rust程式語言寫就的高效能技術,Rust語言自帶的記憶體和型別安全功能有助於提升整體安全性。
在主機作業系統上執行容器的風險在於,攻擊者可能會未授權訪問系統資源。而使用Firecracker,簡單的客戶機模式減小了攻擊介面。
Firecracker客戶機只有非常簡單的虛擬化裝置模式,將攻擊介面減到最小:一個網路裝置、一個塊輸入/輸出裝置、一個可程式設計間隔計時器、KVM時鐘、一個串列埠控制檯和一部分鍵盤(僅夠虛擬機器重啟用)。
雖然AWS直到11月26日才公開發布Firecracker,該技術早已用在保護 AWS Lambda 和Fargate服務上了。
競爭
Firecracker不是將輕量級虛擬機器管理模式用於提升容器隔離的首創。早在2014年11月,Ubuntu Linux 就宣佈了LXD計劃,作為改善容器安全和部署密度的輕量級虛擬機器管理程式。
2017年12月,OpenStack基金會發布基於英特爾 Clear Containers 的 Kata Containers 計劃。2018年5月,谷歌gVisor沙箱容器隔離面世,同樣提供類似的虛擬化安全改善。
目前,Firecracker僅支援英特爾CPU,但公開路線圖表明未來將支援AMD和ARM晶片。
Firecracker GitHub 頁面:
ofollow,noindex">https://github.com/firecracker-microvm/firecracker