安全地运行码头工具

时间:2015-10-24 06:01:48

标签: security docker

我知道docker守护程序需要runs as root所以我告诉这可能会导致一些安全隐患,例如如果容器遭到入侵,攻击者可以更改主机的系统文件

如果发生袭击,我可以采取哪些预防措施来减轻损害?

运行docker守护程序时是否应该注意一下?我已经考虑过让一个流浪汉向上移动虚拟机并让游戏机在vm中运行。

2 个答案:

答案 0 :(得分:4)

有关码头工人安全措施的主要信息来源是" Docker security"上的页面。

  

只允许受信任的用户控制您的Docker守护程序   这是一些强大的Docker功能的直接结果。

     

具体来说,Docker允许您在Docker主机和来宾容器之间共享目录;它允许您这样做而不限制容器的访问权限。

如果公开REST API,则应通过https。

进行
  

最后,如果你在服务器上运行Docker,建议在服务器中独占运行Docker,并在Docker控制的容器中移动所有其他服务

关于VM,请参阅" Are Docker containers really secure?"

  

最大的问题是Linux中的所有内容都没有命名空间。目前,Docker使用五个名称空间来改变系统的进程视图:进程,网络,装载,主机名,共享内存。

     

虽然这些为用户提供了一定程度的安全性,但它并不全面,例如KVM (Kernel-based Virtual Machine)   在KVM环境中,虚拟机中的进程不直接与主机内核通信。他们无法访问/sys/sys/fs/proc/*等内核文件系统。

答案 1 :(得分:2)

从安全角度来看,您可以遵循一些最佳做法:

  1. 首选最小基本映像::您选择的基本映像也可能存在漏洞,您可以在选择基本映像之前查找安全漏洞。选择最小的基本映像,因为它可以确保减少漏洞。
  2. 最低特权用户::如果在Dockerfile中未指定任何用户,则默认情况下,该容器使用root特权运行。要限制访问,请在Docker映像中创建一个专用的用户和用户组。
  3. 签名并验证映像::我们在生产环境中运行docker映像,因此在使用docker映像之前对其进行身份验证非常重要。您应该对您的Docker映像进行签名,并且在运行之前还应该对其进行验证。
  4. 使用安全软件和linter:使用安全软件扫描docker映像中的任何漏洞,您还可以使用linter来静态分析Dockerfile并在存在安全漏洞时发出警告。
  5. 不要将敏感信息泄漏到Docker映像:机密必须保存在Dockerfile之外。如果您复制密钥,则它们将被缓存在中间docker容器上,为避免此问题,您可以使用多阶段构建或docker secret命令。

信用:感谢Liran Tal和Omer Levi Hevroni的blog。我从那里学到了这些最​​佳实践,请访问以获取更多详细信息和更多最佳实践。