
在 Kubernetes 環境中,我認為預設不應允許 root 用戶,以減輕從容器內部存取主機作業系統的風險。這個設定應該透過寫入 PodSecurityPolicy 來完成。
考慮到這一點,我只是想知道:為什麼我們可以使用 root 用戶來運行 EKS、AKE 和 GKE 等公有雲 Kubernetes 服務中的容器?他們是否有另一層安全措施來防止容器被攻擊者破壞?
答案1
即使容器化進程有可能由於未修復的漏洞而獲得對主機作業系統的存取權限,並因以 root 身份運行而完全控制系統,我相信公有雲默認情況下不會強制執行此操作,因為許多知名的軟體包都有其主進程以 root 身分執行- 例如,nginx 服務依賴執行為 的主守護進程root
,而該進程又會產生運行為 的工作進程以www-data
提高安全性。
答案2
root 使用者可以在 Linux 系統上執行任何操作,包括執行 Docker 容器。沒有辦法不允許root使用者運行docker容器。相反,正確的方法是限制 root 使用者的存取權限,並使用 sudo 允許非 root 使用者在系統上執行某些操作。
然而,如果發生Docker
這種情況並不重要,因為:
docker 群組授予相當於 root 使用者的權限。有關這如何影響系統安全性的詳細信息,請參閱Docker 守護程式攻擊面。
因此任何有權執行docker指令的Linux使用者都可以獲得系統的root權限。
容器內的 root 權限不是問題,因為 Docker 是作業系統級虛擬化技術。容器內的 root 使用者無權存取執行 docker 守護程式的底層作業系統。