您可以在Internet上找到的大多數Dockerfile都以root身份構建和運行軟件! 這必須嚇唬大家,對吧? ...但似乎並非如此...Docker安全性最佳實踐
因此,pb是運行一個服務器作爲根,即使在一個容器中,是危險的,因爲容器內的根與根相當在容器外面。
其中一個解決方案是通過使用「USER」指令(如this example for a tor relay)正確構建Dockerfile。
另一種解決方案是使用「linux用戶名空間」將容器內的UID/GID「映射」到容器外部的UID/GID。例如,在一個容器內的根(uid = 0)可以映射到主機內的個人用戶帳戶,因此在共享卷中創建的文件具有良好的權限。
所以我的問題是:當涉及到Docker的安全性時,最佳實踐是什麼?以非根的方式運行代碼(即Dockerfile中的USER指令)?或通過使用「用戶名稱空間」?或者最終(或另外)使用selinux和/或AppArmor?
謝謝:)
我也想補充一點,它通常是不希望運行的應用程序(例如像Web服務器)作爲根 – kondor 2014-12-09 14:24:55
這個文件看起來有趣: [泊塢窗安全部署指南] (https://github.com/GDSSecurity/Docker-Secure-Deployment-Guidelines) – kondor 2015-01-23 12:32:58