Docker API 安全 - 如何阻止客户端的某些功能?

Docker API Security - How prevent certain functionality from client?

我开发了一个基于 Docker 和 Docker API 的解决方案。现在,我正在努力使其尽可能安全。我启用了 TLS 并配置了我自己的 Docker 注册表,以帮助降低不需要的图像和未经授权的访问的风险。此外,我启用了 SELinux 并使用 IPTables 来确保只有我想要的客户端才能访问 Docker API.

首先,我可以假设 Docker 主机是完全安全的。虽然现实中可能不是这样,但这不是我现在要处理的问题。

我一直担心的问题与获得批准的客户有关,以及他们在被黑后几乎可以做任何事情的能力。因此,如果客户端受到威胁,那么客户端密钥也会受到威胁。在这种情况下,黑客可以发出 Docker API 请求来构建图像(来自提供的 tar)、start 图像以及我的 Docker 主机上的任何其他内容.我的任务是设法防止这种情况发生。

我的一个想法是以某种方式允许 Docker API 仅发送 tar 一组批准的图像。但是,如果有办法做到这一点,我找不到它。

另一个想法是完全阻止 Docker API 构建图像。再一次,如果有办法做到这一点,我找不到它。

所以,我可能会因为没有问足够直接的问题而被提醒,但是...

关于如何限制 Docker API 客户端允许的功能有什么建议吗???

感谢您的任何想法。我在 Centos 7 上 运行 Docker 1.8.2.

Docker 有一个待定的插件功能将提供此支持。具体来说,我必须升级到 docker 1.10,并开始使用这些家伙提供的插件:https://github.com/twistlock/authz.

我在让它工作时遇到了一些问题,功能仍然很原始,但看起来很有前途。只需要等待一些功能。

这里还有一个很好的博客:https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/