## 進程限制
限制訪問和能力將降低暴露區域在攻擊面前的潛在弱點。Docke的缺省設置被設計為限制Linux的capabilities(能力)。Linux的傳統視角是以root權限對比用戶權限的方式考慮OS安全,而現在的Linux已經演進到支持一種更加細致的權限模型:Capabilities。
Linux capabilities支持用戶capabilit及傳統方式的顆粒度規格,root用戶可以訪問每一個capability。通常非root用戶有一個更加嚴格的capability集,但是一般通過使用sudo或執行文件的setuid權限為他們提供了提升至root級別訪問的選擇。這會構成一個安全鳳風險。
[](http://dockerone.com/uploads/article/20151109/2be3e720db5bb74bd034a3dfd99e3c42.png)
在一個Docker容器內部的缺省capability集不到一個Linux進程所被授予的capability集的一半(見LinuxCapabilities圖)。這降低了通過應用程序漏洞提升為root用戶而擁有一切權利的的風險。Docker應用了一個額外的顆粒度等級,它對傳統的root/非root二分法進行了極大的擴充。在多數情況下,應用程序容器不需要root用戶所擁有的全部能力,因為需要這些權限的大多數任務都由容器之外的OS環境來處理。容器可以使用一套縮減的capability集運行,而這不會對應用程序帶來負面的影響反而提升了系統整體的安全級別并且缺省使得運行的應用程序更安全。它使得在入侵過程中很難發起系統級別的破壞,即使入侵者想要提升到root權限也無能為力因為容器的能力從根本上被限制住了。