如何考虑Docker安全性

Docker安全吗? 随着越来越多的组织将生产工作负载迁移到容器,这就是价值数百万美元的问题。但也是一个简单的问题,并没有肯定或否定的答案,而不是用二进制术语来思考Docker安全性(也就是说,试图确定它是否安全),最好深入研究Docker如何工作的细节,以便了解Docker安全范例如何发挥作用。那么,让我们来看看Docker如何工作以及这对容器安全性意味着什么。要回答Docker是否安全的问题,我们首先来看看Docker堆栈的关键部分:

如何考虑Docker安全性

Docker有两个关键部分:Docker Engine,即运行时;Docker Hub,是Docker容器的官方注册表。 保护系统的两个部分同样重要。 要做到这一点,需要了解它们各自包含哪些内容,哪些组件需要保护,以及如何保护。让我们从Docker Engine开始吧。
Docker Engine
Docker Engine从容器映像文件托管和运行容器。 它还管理网络和存储卷。 保护Docker Engine有两个关键方面:命名空间和控制组。命名空间是Docker从Linux内核继承的功能。 命名空间将容器彼此隔离,以便容器中的每个进程都无法查看在相邻容器中运行的进程。最初,Docker容器默认以root用户身份运行,这引起了很多关注。 但是,从v1.10开始,Docker支持名称空间,允许您以非root用户身份运行容器。 默认情况下,在Docker中关闭命名空间,因此需要先激活它们才能使用它们。Docker中对控制组或cgroup的支持允许您设置CPU,内存,网络和块IO的限制。 默认情况下,容器可以使用无限量的系统资源,因此设置限制很重要。否则整个系统可能会受到一个饥饿容器的影响。除了命名空间和控制组之外,还可以通过使用SELinux和AppArmor等其他工具进一步加强Docker Engine。SELinux为内核提供访问控制。 它可以根据您为主机设置的策略,根据容器中运行的进程类型或进程级别来管理访问。 根据此策略,它可以启用或限制对主机的访问。AppArmor会将安全配置文件附加到主机上运行的每个进程。 该配置文件定义了进程可以使用的资源。 Docker将默认配置文件应用于进程,但您也可以应用自定义配置文件。与AppArmor类似,Seccomp使用安全配置文件来限制进程可以进行的调用次数。 这完善了DockerEngine中可用的基于Linux的内核安全功能列表。
Docker Hub
当Docker Engine管理容器时,它需要Docker堆栈的另一半来从中提取容器映像。 那部分是Docker Hub——容器图像存储和共享的容器注册表。容器图像可以由任何人创建,并公开供任何人下载。这既是好事,也是坏事。 这很好,因为它可以实现开发人员之间的协作,并且只需点击几下就可以非常轻松地启动操作系统或应用程序的实例。但是如果下载具有漏洞的公共容器映像,则会出现安全性问题。经验法则是始终下载官方存储库,这些存储库可用于大多数常用工具,并且永远不会从未知作者下载存储库。除此之外,应扫描每个下载的容器映像是否存在漏洞。对于私有存储库的用户,Docker Hub将扫描下载的容器映像。它会免费扫描一些存储库,之后您需要支付扫描作为附件。Docker Hub不是Docker容器的唯一注册表服务。其他流行的注册表包括Quay,AWS ECR和GitLab Container Registry。 这些工具还具有自己的扫描功能。 此外,Docker Trusted Registry(DTR)可以安装在防火墙后面,但需要付费。
第三方安全工具
虽然上述安全功能为Docker Engine和Docker Hub提供了基本保护,但它们缺乏专用容器安全工具的功能和范围。 像Twistlock这样的工具可以完全保护您的Docker堆栈。 它超越了任何一个部分,并为您提供整个系统的整体视图。Docker是各种移动和静态部件的复杂网格。显然,插入这些安全工具中的任何一个都不会立即使整个堆栈安全。 它将采用这些方法的组合来保护所有级别的Docker。所以,下次有人问你Docker是否安全时,你应该问他们他们指的是Docker的哪一部分。 然后,您可以解释影响该层的各种安全注意事项。
原文链接:https://www.infoworld.com/article/3201967/how-to-think-about-docker-security.html
标签: