Docker——被称为容器的操作系统级虚拟化实例平台,已成为超级流行的基础设施技术。灵活的容器化,完全改变了我们大规模部署和维护应用的方式,其中大企业市场是关键驱动因素。
4月底,Docker首席执行官本•格鲁布在DockerCon大会上发言,分析用户体验和经验教训,庆祝该平台巨大的成功。如今,所有容器开发中有1/3都在生产环境中完成,大多以成百上千台主机上线的形式呈现。
事实上,涉及容器化,大公司往往身先士卒;云监视公司Datadog发现,过去1年里Docker采用率上升了40%。
今天不断变化的技术格局里,除了积极面与成长势头,我们不能忘记的一个核心重点是:信息安全。想要保护你的容器部署,以下5个潜在威胁和策略可以参考。
容器的顾虑
1. 恶意及脆弱镜像
Docker Hub 注册表托管着超过10万个公共容器资源库,免费的。比如说,搜索WordPress,会得到官方(也是必须下载的)资源库,但还有许多修改版。
这是因为,任何人都可以在 Docker Hub 上发布新资源,所以,在部署前一定要确保熟悉项目维护者。从虚假源执行未经测试的版本,可能会导致主机不稳定,非故意引入脆弱组件,甚或恶意代码执行。
就替代方案来说,目前崭露头角的是官方Docker商店和“认证”项目,可以提供一系列万无一失的部署就绪包。Hub上的付费计划,主打“安全扫描”工具,可检查镜像中的已知漏洞;可信第三方也能提供内置资源库扫描的自有容器注册表。
2. IAM突破
身份和访问管理与现代云技术紧密相关。Gartner专业词典解释称:
IAM是让正确的人,在正确的时间,以正确的理由,访问正确资源的安全守则。它解决的是日趋异构的技术环境中,确保合理访问资源的任务关键需求。
云提供商,比如AWS,旨在默认提供强化的IAM角色架构。这些可与弹性计算云(EC2)同时使用,或应用到另一提供商实现上,以确保用户根据最小特权原则分配到恰当的访问权限。
部署私有容器或内部开发的容器时,另外的IAM考虑,源自确保自身注册表受到充分保护。双因子身份验证和单点登录,可支持你的安全环境并帮助拦截恶意人士。
3. 过量资源使用
一般情况下,Docker容器没有资源限制。因此,不受限制地积极部署容器,可导致主机性能严重下降。要对内存、带宽和磁盘使用(块I/O)设限,以便缓解性能问题——这有可能是恶意代码(比如DoS代码执行)或主机错误配置引起的。
4. 容器突破
侵入某个容器的黑客不应该能横向移动到其他容器或Docker主机。然而,Docker发展迅速,提权漏洞亦可能出现。所以,要谨慎打造基础设施,时刻谨记分层深度防御方法。
尽管只影响用root权限运行容器(不推荐)的用户,但请考虑Docker引擎0.11容器突破的例子。概念验证代码在2014年6月18日公布,并很快由Docker团队公开透明地解决了。
顺便提及,Docker支持安全漏洞的负责披露。所以,如果你掌握了影响Docker产品或服务的漏洞信息,请联系security@docker.com。
5. 编配安全
虽然此文围绕Docker容器安全展开,编配(Orchestration)平台及其组件的安全防护措施也必须要做好的。编配涉及任务管理与自动化,比如容器集群与调度,公司企业往往诉诸Kubernetes和Mesos之类的工具来有效管理。