企业级容器安全最佳实践

因为容器虚拟化技术能够充分利用硬件资源,对于开发团队就像梦想照进了现实。尽管容器化没有推翻虚拟机在企业应用开发和部署上的地位,可是Docker等工具在实现开发、测试和部署大规模现代软件的速度和敏捷性方面大展身手。Docker容器具备诸多优势:无需复杂的hypervisor、可移植性、资源隔离性、轻量级、开放标准、完美适应微服务架构。众多的应用经过容器隔离起来,相互独立地运行在同一台宿主机上,哪家公司不喜欢呢?docker

容器的速度和易用性带来了无限的可能,开发团队很容易被吸引。迄今为止,Docker容器的下载量已经超过4个亿。可是,对于容器化的担心真真切切地存在。若是你被一时的热情冲昏了头脑,反而会拔苗助长,没法利用容器的潜力,阻碍开发的快速迭代和创新。若是你的公司决定要安全地拥抱docker,你须要谨慎地处理安全问题并避免牛仔编程文化。shell

须要澄清的是,Docker声称本身是安全的,但关键在于你必须负责任地使用。当你开始使用Docker,你会在镜像仓库(repos)发现有不少可下载的模板(“images”),它提供了一条编写微服务应用的捷径,从而大大加快开发速度。问题是你如何判断哪些images是安全的,是否包含漏洞。我的开发者可能不太关心Image的漏洞,可是对于企业,安全和数据审查是相当重要的,必须有人维护。那么问题就来了:如何将企业的安全策略应用于Docker呢?编程

Docker最佳实践

非营利组织网络安全中心(CIS)针对docker的安全配置发布了一个详尽的、超过100页的基准测试结果,有一些特定的点须要关注一下。安全

1. 关注你使用的镜像(images)

全部容器都来源于镜像,比较典型的是操做系统及其附属项(shell, default users, libraries, 依赖包)。正如Docker安全的一个页面上所描述:Docker容器运行的一个主要风险是:默认设置提供的隔离多是不完善的,一方面是由于配置参数时只能考虑单个因素,另外一方面镜像可能包含操做系统漏洞。所以,这须要使用者去修改容器配置和验证镜像——这条规则适用于每个容器。网络

2. 实现自动化部署的代理(agent)

Agent能够协助你设置容器的安全参数,由于它可以自动获取镜像(image)的信息并将其展示给你。虽然Docker Hub上的镜像在不断检查、共享和更新,你不能依赖邮件列表和问题报告来发现和管理漏洞。单个容器的安全仍然须要用户本身去负责,因此你须要本身去检查依赖。你的镜像仓库里有哪些镜像,镜像是如何运做的,你都应该理解,而且拥有本身的扫描和检查机制。Agent很适合作这项工做,由于不论是运行在宿主机上,仍是容器中,Agent的系统开销都很小。架构

3. 以什么方式运行容器

运行容器最安全的方式之一是是在只读模式下运行,容器不能被修改,而对于其余人访问的权限都没有。若是你在只读模式下运行,就不须要给每一个容器配置一个agent了,也能够重用你验证过的镜像。若是容器以读/写模式运行,最好的作法是在每一个容器一个代理。同时设定一些规则,不容许从公有仓库下载镜像,也不容许root下运行容器。负载均衡

4. 管理容器与外部的交互

一个运行的容器能够暴露端口到宿主机的任何一个网卡(network interface)——这是极其危险的。一个解决办法是只暴露宿主机的一个网卡到外网,任何外部来的请求,好比入侵检测,入侵预防、防火墙、负载均衡等均经过这个网卡处理。容器端口也应该绑定到宿主机上一个受权的可信端口。微服务

5. 须要熟练的Linux管理技巧

Docker支持不少安全加强选项,但默认状况下是没有设置的。所以,你须要一个Linux专家来管理基础设施,以保证Docker容器正常运做,并防止宿主机被误配置。工具

总的来讲,企业使用Docker的最佳策略是结合CIS基准安全测试与企业现有的安全策略,为企业内的Docker容器创建一套安全配置“姿式”,并给开发团队创造一个安全的实验环境。测试

本文由时速云工程师赵帅龙编译,原文连接:企业级容器安全最佳实践

相关文章
相关标签/搜索