为了安全起见,将公共可访问的应用程序作为Docker容器运行是否有用?

时间:2015-02-02 16:31:38

标签: docker

有很多用于docker的用例,它们都与可移植性,测试,可用性等有关,这对大型企业应用程序特别有用。

考虑互联网中的单个Linux服务器,它充当邮件网络和应用程序服务器 - 主要供私人使用。没有集群,不需要迁移可以从同一映像创建的服务,也不需要类似的服务。

在考虑整个服务器的安全性时考虑将每个提供的服务包装在Docker容器中,而不是直接在服务器上(在chroot环境中)运行它们是否有用,或者是否使用大锤破解坚果?

据我所知,安全性确实会增加,因为服务真的是孤立的,甚至获得root权限也不会逃脱chroot,但维护需求会增加,因为我需要维护几个独立的操作系统(安全更新,日志分析......)。

您会建议什么,以及您在小型环境中使用Docker获得的经验?

1 个答案:

答案 0 :(得分:1)

从我的安全角度来看,或者将是Linux容器和Docker的优势之一。但要获得安全的环境并在容器内完全隔离,还有很长的路要走。 Docker和其他一些像RedHat这样的大合作者已经在保护容器方面付出了很多努力和兴趣,Docker中的任何公共安全标志(关于隔离)都已得到修复。今天Docker并不是硬件虚拟化隔离方面的替代品,但有些项目在Hypervisors中运行容器,这将有助于这一领域。此问题与提供IAAS或PAAS的公司更相关,他们使用虚拟化来隔离每个客户端。

在我看来,对于你提出的案例,在Docker容器中运行每个服务会在你的安全方案中再提供一层。如果其中一项服务受到威胁,将会有一个额外的锁定来访问您的所有服务器和其他服务。也许服务的维护增加了一点,但是如果你组织你的Dockerfiles使用一个普通的Docker镜像作为基础,而你(或其他人)定期更新那个基本镜像,你不需要更新所有Docker容器一个人。此外,如果您使用定期更新的基本映像(即:Ubuntu,CentOS),那么影响这些映像的安全问题将会快速更新,您只需重新构建并重新启动容器即可更新它们。也许是一项额外的工作,但如果安全性是一个优先事项,Docker可能是一个附加价值。