通过容器,开发者能够创建“微服务”。这些微服务实质上是应用的小型化可重复使用组件。由于能够重复使用,所以微服务能够节省开发者的时间。同时它们能够跨不同平台部署。
得益于这些优点,容器被广泛采用也就一点也不奇怪了。不幸的是,安全部门仍在研究它们是如何工作的,以及如何以最佳方式确保它们的安全。据迈克菲公司近期对全球1500名IT专业人员进行的调查显示,在员工数量超过500人的公司中,约80%的公司目前正在使用容器,但仅66%的公司针对容器制定了安全策略。据CyberEdge公司对1200名IT决策者的调查显示,容器如今实际上已经与移动设备紧密相连,而后者是公司最大的安全挑战。
安全为什么是容器领域内的一项挑战有着多重原因。第一个原因是容器的部署速度;第二个原因是容器通常需要将应用拆解为更小的服务,从而导致数据流量增加和访问控制规则复杂化;最后一个原因是容器往往运行在带有新型安全控制的云环境中,如亚马逊等。
云安全厂商StackRox的联合创始人兼首席技术官AliGolshan认为,容器安全工具的生态环境还不成熟。“这与虚拟机和云的早期阶段很象。为了让它们工作,公司需要创建专用工具和基础设施,同时要实现这些还需要许多资源。目前还没有现成的解决方案,也没有足够多的解决方案涵盖所有的使用情况。”
容器的寿命很短且管理不善
传统的软件开发流程为创建、测试和部署,而在容器时代这一流程迅速被抛弃。实际上,开发者常常会从公共仓库中找出一个随时可用的镜像,然后将它们放到云端。
EastwindNetworks公司首席安全与战略官RobertHuber称:“在信任度上存在着模糊地带,即可能被批准也可能不被批准。”他指出,容器镜像为一套方便的且已经准备就绪的代码,但是提供商可能没有时间或是没有兴趣监控其中的安全问题或是发布版本说明。
Huber称:“理想情况下会有一套检测版本的流程,但是我从未看到有任何公司这么做过。公司应当持续检测正在使用的容器是否有最新版本,代码是否已经被修补以及是否更新至最新。然而目前这些工作都压在了开发者身上并且是人工检测。我相信公司会转而使用自动化程度更高的流程,但是目前这里出现了缺口。它们像导弹那样发射后就不管了。你拉来一个容器并运行它们,然后就完事了。”
在开发者创建自己的容器时情况也好不到哪里去。开发速度意味着没有时间进行质量控制或安全测试。当有人通知说容器好了,这些容器就已经完成了自己的工作并且生命周期也已结束了。KudelskiSecurity公司的方案架构主管BoLane称:“当安全团队介入时,容器的生命周期可能已经结束了。这是一种挑战,需要有一种新的安全思维模式。”
他指出,安全意识需要在早期就植入到开发流程中,并尽可能地实现自动化。例如,如果开发者从外部源下载了镜像,那么在容器启用前需要扫描漏洞、未修补的代码和其他潜在问题。他问道:“一旦启用,那么如何维护和监控它们,尤其是生命周期特别短的容器的安全状态以及与其他组件的交互。”
云安全厂商SkyhighNetworks联合创始人SekharSarukkai以其公司为例进行了说明。他称,他们有自己的云服务方案,所以他们要应对所有这些挑战。
Sarukkai称:“我们正在部署最新的架构堆栈,我们也有微服务。实际上,我们一天可以多次向生产环境中部署。根据惯例,你需要进行安全测试或渗透测试,而这些测试是不能在DevOps环境中实施的。”
他指出,企业必须要找到让许多功能实现自动化的办法。这意味着要有能力识别已部署的所有容器并确保它们的组件都是安全的,然后通过应用控制和应用白名单将它们部署在一个安全的环境中,最后对它们进行持续监控。
在4月份召开的RSA大会上,迈克菲推出了一款具有该功能的产品,即迈克菲云工作负载安全(McAfeeCloudWorkloadSecurity)平台。Sarukkai称:“它们能够保护在公有云和私有云环境中的Docker容器和这些容器上的工作负载。这些环境包括AWS、Azure和VMWare。我认为这是首款能够隔离受感染的工作负载和容器的云工作负载解决方案。”
该产品还能够通过检查不必要的管理员权限、未处理的加密要求等措施降低配置风险。他称:“产品还提升了修复速度。通过与客户合作的研究显示,速度提升了90%。”
他还指出,迄今为止他看到的几乎所有容器安全问题都是因为未能正确配置所导致的。“我认为这里隐藏着最大的风险。”
庞大的服务网
虽然配置管理和补丁管理非常困难并且很容易被攻击者利用,但是它们是可以解决的问题。应用拆散为相互联通的小型服务所带来的复杂性则是一项更为艰巨的挑战。
传统的完整应用只会有一个服务和几个端口。Eggplant公司首席技术官AntonyEdwards称:“你可以准确知道不法分子将企图从什么地方入侵,这会让确保安全变得容易些。但是在微服务中,你会有许多服务并且常常会有许多端口,这意味着需要保护许多入口的安全。此外,每个入口都缺乏相关信息,这导致识别哪些人是不法分子变得十分困难。”
这些重担将会落到确保单个服务的安全上,单个服务的安全将变得极为小心谨慎,如最低权限、严密的访问控制、隔离和审核等等。Edwards称:“这些措施自上世纪七十年代就已经有了,如今我们需要严格落实它们。”
说起来总是比做起来容易。ShiftLeft公司联合创始人兼首席执行官ManishGupta称:“公司将他们的应用拆得越零散,数据流就会变得越复杂,也就越难以识别每个微服务都做了什么。”
如果有泄露出来的硬编码访问证书或是认证令牌,那么整个系统将很容易被攻击。Gupta称:“这真的是一个大问题,而人们并没有意识到这个问题到底有多严重。”
随着越来越多的关键系统改用软件即服务的交付模式,问题会变得越发严重。他说:“这意味着你正在将大量的数据汇集到自己的应用中,Equifax和优步公司数据泄露事件就是典型的例子。目前这些非常敏感的重要数据正在微服务之间流动,而几乎没有人对此拥有良好的可见性。”
泄露的容器会产生漏洞
另一个潜在的安全挑战来自容器。它们运行在一个共享的环境中,客户不知道自己的邻居是谁;如果这个环境是公有云,则会让人更为不安。事实上,在前几年就已经发现Docker和Kubernetes容器管理系统中存在漏洞。
在公有云上运行容器的公司已经开始意识到这个问题。红帽公司OpenShift容器平台的高级产品经理KirstenNewcomer称:“在和我交流的客户中,大多数客户都会直接询问能够将主机与容器隔离以及能够将容器彼此隔离的工具有哪些。”
据Portworx公司关于2017年容器部署的调查报告显示,70%以上的受访者将他们的容器运行在Linux上。Newcomer称,在确保容器被隔离方面,其主要特点为可以利用Linux的命名空间和针对强制访问控制的附加层使用安全增强型Linux。“此外还有被称为LinuxCapabilities的功能,其允许用户限制Linux系统中不同类型的访问权限”
这些对于Linux安全专家来说是非常熟悉的概念,但是对于容器部署团队或是那些从Windows转过来的公司来说可能是全新的东西。至少那些运行自己的容器环境的公司,无论是公有云还是私有云,他们都完全掌控着这些安全设置。当使用现成的容器,他们不得不相信云提供商已经正确设置了底层安全基础设施。
迄今为止,在允许进程脱离容器的漏洞中,还没有一个造成了重大的公共数据泄露。然而空间被Docker和Kubernetes等多个平台控制的事实意味着如果攻击者迅速利用某个漏洞,那么它们将会产生非常广泛的影响,所以提前做好准备是值得的。
本文作者MariaKorolov在过去二十年中长期关注新兴技术和新兴市场。
原文网址https://www.csoonline/article/3268922/network-security/whysecuring-containers-andmicroservices-is-a-challenge.html