Docker的安全问题使用非官方的图片

如何确保docker集装箱将是安全的,尤其是在使用第三方容器或基础图像时?

  1. 是否正确,在使用基本映像时,可能会启动任何服务或挂载主机文件系统的任意分区,并可能将敏感数据发送给攻击者?
  2. 因此,如果我使用第三方容器,哪个Dockerfilecertificate容器是安全的,我是否应该遍历整个基本映像的链表(可能很长),以确保容器实际上是安全的,并做它打算做什么?

如何系统,明确地确保docker集装箱的可靠性?

考虑类似于android / iOS移动应用的Docker镜像。 您从来不确定自己是否可以安全运行,但是如果来自Google Play或App Store等官方来源,安全性可能会更高。 更具体地说,来自Docker中心的Docker镜像通过安全扫描,其细节尚未公开。 所以从Docker集线器中取出恶意镜像的可能性很小。 但是,当涉及到安全问题时,永远不会有任何偏执。 有两种方法可以确保来自任何来源的所有图像都是安全的:

  1. 主动安全性:对与Docker镜像对应的每个Dockerfile进行安全源代码审查,包括您已经expression过的基本镜像
  2. 反应式安全性:运行Docker工作台,由Docker Inc.开源,Docker Inc.作为一个特权容器运行,查找运行时已知的容器的恶意活动。

总之,尽可能使用Docker hub的Docker镜像。 执行DockerFiles的安全代码评论。 运行Docker工作台或任何其他可以捕获由容器执行的恶意活动的等效工具。

参考文献

  1. Docker安全扫描以前称为Project Nautilus: https : //blog.docker.com/2016/05/docker-security-scanning/
  2. Docker工作台: https : //github.com/docker/docker-bench-security
  3. Dockerfile的最佳实践: https ://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

Docker映像是独立的,这意味着除非你在容器和networking模式下运行它们,否则他们无法访问主机的任何networking或内存堆栈。

例如,如果我通过使用该命令在容器内运行图像:

docker run -it --network=none ubuntu:16.04

这将启动docker container ubuntu:16.04,不需要挂载主机的存储,也不会与主机共享任何networking堆栈。 您可以通过在容器中和主机中运行ifconfig并对它们进行比较来testing。

关于检查image / base-image是干什么的,从上面得出的结论是对你的主机没有任何坏处除非你将/ improtant / directory_on_host挂载到容器,并且在启动容器之后将其除去 )。

您可以通过检查dockerfile(s).yml docker-compose .yml文件来检查运行后的图像/基础图像。