我知道docker守护进程需要以root身份运行,因此我听说这可能会带来一些安全问题,例如如果容器受到攻击者的攻击,则攻击者可以更改主机的系统文件。
在遭受攻击的情况下,有什么预防措施可以减轻损失?
运行docker守护进程时应该注意什么实践?我考虑使用vagrant启动虚拟机,在虚拟机中运行docker。
在遭受攻击的情况下,有什么预防措施可以减轻损失?
运行docker守护进程时应该注意什么实践?我考虑使用vagrant启动虚拟机,在虚拟机中运行docker。
只有信任的用户才应该被允许控制您的Docker守护程序。这是一些强大的Docker功能的直接结果。
具体来说,Docker允许您在Docker主机和guest容器之间共享目录;并且它允许您这样做而不限制容器的访问权限。
如果您公开了REST API,则应通过https进行。
最后,如果您在服务器上运行Docker,则建议您在服务器中仅运行Docker,并将所有其他服务移至由Docker控制的容器中
有关VM,请参见"Docker容器真的安全吗?"
最大的问题是Linux中的所有内容都没有命名空间。目前,Docker使用五个命名空间来更改进程对系统的视图:进程、网络、挂载、主机名、共享内存。
虽然这些为用户提供了一定级别的安全性,但绝非全面,如基于内核的虚拟机(KVM)。
在KVM环境中,虚拟机中的进程不直接与主机内核通信。它们没有任何访问内核文件系统(如/sys
和/sys/fs
、/proc/*
)的权限。
以下是几项从安全角度遵循的最佳实践:
致谢:感谢Liran Tal和Omer Levi Hevroni的博客。我从中学到了这些最佳实践,请访问该网站获取更多细节和其他的最佳实践。