返回 登录
0

Docker和企业安全:建立最佳实践

虚拟化容器的高效的硬件利用率使开发团队梦想变成现实。或许容器化永远不会替代虚拟机在企业应用开发和部署中的地位,但是越来越流行的像Docker这样的系统满足人们开发、测试和部署现代大型的软件的期待列表中的速度和敏捷这两个需求。没有重量级的管理程序、极度便携、分隔资源、惊人的轻量级容器、开放标准、完美的微服务架构、包含许多开箱即用的干净的软件包的单一Linux实例,所有这些特质加起来,叫我们如何不爱她。

开发团队很容易为这样的速度和便捷带来的可能性倾倒(至今已经有超过4亿Docker容器的下载,这是令人兴奋的)。但是确实有对容器化和安全的担忧。你当然不能因此抑制你的热情就把快速迭代和创新抹杀了(这样就彻底地否定了所有美好的可能),但是如果你想你的组织安全地拥抱Docker,你确实需要避免牛仔式的编程文化,需要预先考虑安全。

明确地说,Docker模型确实是考虑了安全的,但是负责地使用是关键。当你开始使用Docker时,你很快发现网上Docker库中有许多可以下载的模板(镜像)可以作为开发你自己的微服务的捷径,因此你可以指数级地提高开发速度。问题是你不知道哪些镜像是安全的(他们可能存在隐患),在哪里可能存在最近的安全告警。镜像的隐患对个人应用开发者可能不是个大问题,但是对企业来说,安全和数据符合策略是重要的并且必须得到保证。问题来了,在应用Docker时应该注意什么呢?

Docker最佳实践

为了在你的组织中确保最佳实践,可以参考互联网安全中心(CIS)提供的超过100页的Docker配置的 安全标准 资源。此外,下列这些方面也需要注意。

  1. 知道你在使用什么镜像
    所有容器都继承自一个父镜像,典型情况就是一个基础操作系统和一些依赖(shell、缺省用户、软件库、依赖的软件包等)。Docker的安全须知中明白地说:“运行Docker容器的一个首要风险是容器的缺省的能力集合和配置可能没有提供足够的资源隔离,或者是由于容器本身的原因,或者是和内核的缺陷配合的原因。”所以小心地设置容器的能力集和验证任何镜像是否满足安全需求是每个用户自己的责任,这对每一个容器都是适用的。

  2. 部署代理
    代理为你的容器的安全参数进行设置提供帮助,因为他们自动地让你可以看到父镜像中的内容。因为终端用户自己需要确保每一个容器的安全性,你需要一个方法来自己检查依赖(虽然镜像在发布和更新时在Docker Hub上不断地被扫描,但是你不能依靠邮件列表和问题跟踪报告来管理隐患)。当你往你的方案中加东西时,你应该理解底层的细节并且自己做扫描和验证。代理在主机和Docker容器的层面用很小的开销来做这件事。

  3. 考虑你运行的方式
    以只读模式来运行Docker容器是最安全的运行方式之一,这样他们就不能够被其他人修改或非法访问。如果在只读模式下运行,你不需要每个容器都安排一个代理,你可以重用一个验证过的父镜像。如果你在即可读又可写的模式下运行,你最好在每个容器中放一个代理。你也应该设置一条不允许从公共场所获取镜像的规则,并且永远不在特权优先级来运行容器。
  4. 管理容器与外部的交互
    从安全角度来说,一个容器接受任意网卡任意端口上来的连接请求是一条红色警报。好的方法是只暴露一个安装了例如入侵检测、入侵防御、防火墙、负荷分担等服务的特定的外部接口来过滤所有到来的流量。容器的端口也应该绑定在可靠的特定的主机接口上。
  5. 需要过硬的Linux系统管理技能
    Docker可以提供增强的安全能力,但是缺省他们是关闭的。所以有Linux专家来确立你的Docker工作流程和巩固你的Linux主机来避免错误配置显得非常关键(许多常见的Docker错误都是由于用户的错误配置导致的)。

总体而言,企业应用Docker的最佳策略是把互联网安全中心的安全标准和你现有的安全策略融合起来。这将会确保你的所有Docker容器保持安全的状态,给在上面开发的团队提供一个更安全的场所。

原文链接:http://resources.infosecinstitute.com/docker-and-enterprise-security-establishing-best-practices/

责编,魏伟,关注Docker,寻求报道和投稿请联系邮箱weiwei@csdn.net

评论