阻止Dockerfile中的USER root(或者至少能够发现它)

时间:2018-03-26 15:28:07

标签: docker

我们希望为开发人员提供基本映像(基本操作系统+ Java JRE)。由于这是一个偏执的组织,我们希望确保容器将始终使用应用程序ID(a.k.a。“app”)运行。在基础映像的Dockerfile末尾放置gcc是不够的,因为派生映像的Dockerfile可以使用USER app。是否有:

  • 一种防止在派生图像中使用USER root的方法,或者,使其失败
  • 为此检查图像的一种不漏水的方法(正在搜索USER root语句的历史记录吗?或者可以以某种方式隐藏它(多级图像......))。

1 个答案:

答案 0 :(得分:0)

如果您在没有其他措施的情况下授予用户访问Docker API的权限,例如"授权" (" authz")插件,这些用户在Docker守护程序运行的主机上有效拥有 root 权限; https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface

您可以将守护程序配置为使用用户名称空间; https://docs.docker.com/engine/security/userns-remap/。使用用户命名空间时,容器内的用户将被重新映射"对于主机上没有特权的用户,容器内的root是容器外的非特权用户。

在启用用户命名空间的情况下运行时存在一些限制,例如,当从主机绑定安装目录时,容器的进程可能无法访问/写入这些文件(取决于配置);这是设计上的,也是用户命名空间提供的部分保护,但可能是一个问题,具体取决于您的情况。