Docker安全问题使用非官方图像

时间:2016-10-11 09:19:48

标签: security docker containers

如何确保Docker容器安全,特别是在使用第三方容器或基本映像时?

  1. 是否正确,在使用基本映像时,它可能会启动任何服务或挂载主机文件系统的任意分区,并可能将敏感数据发送给攻击者?
  2. 因此,如果我使用第三方容器,Dockerfile证明容器是安全的,我是否应该遍历基本映像的整个链接列表(可能非常长)以确保容器实际上是安全的并且按照它打算做什么?
  3. 如何系统,明确地确保码头集装箱的可靠性?

2 个答案:

答案 0 :(得分:3)

考虑类似于Android / iOS移动应用的Docker图像。你永远不确定它们是否可以安全运行,但是当它来自Google Play或App Store等官方来源时,它的安全概率会更高。 更具体地说,来自Docker hub的Docker镜像通过安全扫描细节尚未公开。因此,从Docker中心获取恶意图像的可能性很少。 然而,在安全方面,人们永远不会偏执。有两种方法可以确保来自任何来源的所有图像都是安全的:

  1. 主动安全性:对与Docker镜像对应的每个Dockerfile进行安全源代码检查,包括您已经表达过的基本图像
  2. 反应安全:运行由Docker Inc.开源的Docker工作站,该工作站作为特权容器运行,用于查找容器的运行时已知恶意活动。
  3. 总之,尽可能使用Docker hub中的Docker镜像。执行 DockerFiles 的安全代码评审。运行Docker工作台或任何其他可以捕获容器执行的恶意活动的等效工具。

    参考

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

答案 1 :(得分:1)

Docker镜像是自包含的,这意味着除非您在具有卷和网络模式的容器中运行它们,否则它们无法访问主机的任何网络或内存堆栈。

例如,如果我使用以下命令在容器内运行图像:

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

这将启动docker容器ubuntu:16.04,不会挂载到主机的存储,也不会与主机共享任何网络堆栈。您可以通过在容器内和主机中运行ifconfig并进行比较来对此进行测试。

关于检查图像/基本图像的作用,从上面得出的结论对你的主机没有任何害处(除非你将/ improtant / directory_on_host挂载到容器,并且在启动容器之后删除它们 )。

通过查看dockerfile(s)docker-compose .yml个文件,您可以查看运行后图片/基本图片的内容。