Docker入門教程(五)Docker Security
【編者的話】DockerOne組織翻譯了Flux7的Docker入門教程,本文是系列入門教程的第五篇,介紹了Docker的安全問,依然是老話重談,入門者可以閱讀本文快速了解。
我們必須高度重視開源軟件的安全問題,當開發者在使用Docker時,從本地構建應用程序到生產環境部署是沒有任何差異的(譯者注:作者的言外之 意是更應該重視Docker的安全問題)。當Docker被用到越來越多的平臺的時候,我們需要重點保證Docker作為一個項目或者平臺的安全性。
因此,我們決定在Docker系列教程的第五篇來討論Docker安全的相關問題以及為什么它們影響到Docker的整體安全性。鑒于Docker是LXC的延伸,它也很容易使用LXC的安全特性。
在本系列的 第一篇文章中,我們知道docker run命令可以用來運行容器。那運行這個命令后,Docker做了哪些具體的工作了?具體如下:
- docker run命令初始化。
- Docker 運行 lxc-start 來執行run命令。
- lxc-start 在容器中創建了一組namespace和Control Groups。 </ol>
- 負責資源核算和限制。
- 提供CPU、內存、I/O和網絡相關的指標。
- 避免某種DoS攻擊。
- 支持多租戶平臺。 </ul>
- 當Docker允許與訪客容器目錄共享而不限制其訪問權限時,Docker Daemon的控制權應該只給授權用戶。
- REST API支持Unix sockets,從而防止了cross-site-scripting攻擊。
- REST API的HTTP接口應該在可信網絡或者V*N下使用。
- 在服務器上單獨運行Docker時,需要與其它服務隔離。 </ul>
- 容器以非特權用戶運行。
- Apparmor、SELinux、GRSEC解決方案,可用于額外的安全層。
- 可以使用其它容器系統的安全功能。 </ol>
對于那些不知道namespace和control groups的概念的讀者,我在這里先解釋一下:namespace是隔離的第一級,容器是相互隔離的,某個容器是不能看到其它容器內部運行的進程(譯者注:namespace系列教程可以閱讀DockerOne上的 系列教程)。每個容器都分配了單獨的網絡棧,因此一個容器不可能訪問另一容器的sockets。為了支持容器之間的IP通信,您必須指定容器的公網IP端口。
Control Groups是非常重要的組件,具有以下功能:
Docker Daemon的攻擊面
Docker Daemon以root權限運行,這意味著有一些問題需要格外小心,下面介紹一些需要注意的地方:
一些關鍵的Docker安全特性包括:
Docker.io API
用于管理與有關授權和安全的幾個進程,Docker提供REST API。如下表格列出了關于此API用于維護相關的安全功能的一些命令。Docker系列教程下一篇文章中我們繼續探討 前面第二篇文章所討論的Docker命令的進階。
原文鏈接:Part 5: Docker Security(翻譯:田浩 審校:李穎杰)
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!