|
|
1
2
官方Docker引擎开箱即用目前不支持对注册表服务器的硬限制。您可以在出站连接上使用防火墙规则来实现这一点,但这很容易失败,除非您只允许出站连接到已知的白名单。即使您设法在网络级别实现这一点,它也不会阻止某人从tar文件导入映像,甚至不会阻止构建与其他注册表服务器上的映像相同的映像。 相反,Docker的方法是使用公证人/内容信任对图像标记/清单进行加密签名,以验证它是否来自已知来源。这将处理图像,而不管它们是如何在docker主机上拉取、加载或构建的。在Docker CE中,这是从客户端选项强制执行的,因此可以很容易地将其禁用(尽管Docker CE中直接访问Docker socket的客户端可以做的不仅仅是运行公共映像,它们实际上是根用户在您的主机上)。有一些工具可以插件到docker引擎的authz接口,包括Twistlock和openpolicy Agent,但我不知道它们是否允许您强制实施内容信任。 使用Docker EE,在服务器端很容易启用该选项。UCP中有一个开关,可以强制只运行具有可信签名的映像。最大的缺点是,我所做的每一个docker安装都需要使用外部来源的图像,比如DockerHub。要使用这些映像,您现在需要将它们从这个环境外部提取出来,并将它们推送到您自己的注册表中,用您自己的凭据对它们进行签名。保养就成了一件头疼的事。 除了维护一个令人头疼的问题外,我看到很少有人用这个选项锁定Docker EE,原因是:它违背了DevOps的所有目标,即允许开发人员在不需要ops批准的情况下管理他们的工具集。如果他们想从java8切换到java9,开发人员应该很容易实现,ops应该关心的是生成的映像中是否存在漏洞,而不是用于创建它的基础映像。 |
|
|
2
0
刚在redhat文档中找到: 这可以在docker daemon config上完成:
然后做:
|