怎样提高容器的安全性
2019-05-15DavidStrom
David Strom
要想保护好Docker和容器基础设施,应把策略、明确的工具和仔细检查应用程序等各种因素结合起来。本文介绍了怎样开展这方面的工作。
Gartner将容器安全列为今年十大最受关注事项之一,因此现在是时候仔细研究这一问题并制定可靠的安全实施计划了。尽管容器已经出现10多年了,但由于其轻量化和可重用代码、灵活的特性以及较低的开发成本等因素,变得越来越流行。我将介绍保护DevOps/构建环境所需的各种工具、容器自己的工具以及用于监视/审计/合规目的的工具。当然,没有任何一种工具能完成所有工作。
请按照以下几个基本步骤开始工作。
1.首先看云提供商提供了什么
第一步是要熟悉云提供商提供的内置安全性。这包括Azure安全中心、Google Kubernetes引擎、Google云安全命令中心和Amazon Inspector等工具。有些工具,例如Azure安全中心,是通用的安全工具,并不是为容器而设计的。
2.要熟悉与生Docker相关的安全特性
这包括使用策略以防止资源滥用、设置访问控制组并确保在不需要根访问的地方删除根访问。
3.考虑Github开源项目
在某些情况下,检查代码中安全最佳实践的Bench Security等项目,以及seccomp等其他Linux原生工具則是低成本的选择。后面我会介绍其他开源工具。
要学习和理解很多软件,但应该掌握几个常见的特性,包括身份和身份验证——无论是对于企业的用户还是对于企业打算构建的最终应用程序,以及怎样控制访问。此外,还应该能够检查和审计日志文件,以及怎样查看和筛选日志文件,以提供有关安全状况的可操作的信息。最后,还有用于保护API密匙和SSL证书等机密的底层基础设施。
不知所措了吗?我们才刚刚开始。让我们看看需要保护的三个区域,以便保护企业环境中的容器。
1.保护构建环境
由于容器对开发人员而言是如此有用,所以在创建容器时,应该进入DevSecOps域,并添加安全特性,而不是等到项目被编码为插件之后。这始终是保护应用程序安全的最佳举措。在选择正确的安全工具之前,需要回答以下几个重要的问题:
可以自动执行哪些工作流以确保应用程序的安全?有些工具可以帮助实现这一点,特别是编排工具。然而,很多编排工具都只是专注于容器的管理和扩展性问题,而不一定关注安全细节。很难在实用性和实际保护之间达到平衡。
对于应用程序和用户的访问控制,需要多大的粒度?在这里,很容易理解这些控制是怎样应用的,以及它们有哪些局限性。例如,最好是查看哪些代码部分和容器具有根/内核访问权限,决定是否需要赋予它们这种级别的访问权限才能完成工作。
应该使用运行时应用程序自我保护(RASP)技术吗?是的。与专注于应用程序的常规RASP工具一样,一些工具专门用于容器运行时应用程序保护,可以是静态扫描,也可以是使用开发环境不断进行集成。后一种形式很有帮助,因为容器代码在不断变化,当你需要修补或者更新某些内容时,连续的代码审计可以节省大量时间。一个好的RASP容器工具应该能够标记异常行为,挡住潜在的威胁,并且能够隔离特殊事件以便更深入地进行取证分析。
2.保护存放容器的底层主机
大多数情况下,这意味着运行精简版的Linux,尽可能少地运行服务,以减少可能出现的攻击面。有些工具是为保护主机本身而设计的。另一种方法是使用上面提到的Docker控制组,同时隔离名称域以反映安全策略,并将容器彼此分开以防止相互感染。一些企业使用来自云提供商的虚拟专用连接来实现这种隔离。在这一过程中,使用访问级别和其他机制来隔离工作负载,并限制每一主机运行的容器的数量。出于这一原因,有些企业对每个主机只运行一个容器。
3.保护容器的内容
我们可以看一下图像的软件供应链。其中的一个基本特性是能够强制实施图像源的完整性保护,也就是说一旦某个员工(或者通过最初从中获取容器的开放源代码项目)对图像进行了修改,你就能知道修改了什么。
考虑到很多容器是在互联网上共享的,因此这是很有用的特性。与此相关的是能够扫描这些图像以确保它们没有被感染。你多久可以这样做一次,并且能自动执行这些扫描?能够从可信来源获取图像是很有帮助的,但是每个人都会犯错误,并且可能在不经意间引入安全问题。
但是,对于某些企业来说,可能实际上并不关心容器中存在哪些漏洞。这似乎令人惊讶,但它也是合理的,只是需要提高警惕。只有当你能够充分地保护容器边界,或者因为实际应用程序代码没有触及容器代码的这些部分时,才能这样做。你对安全工具有多大的信心可能是决定你能容忍多少漏洞的最终因素。
典型的容器安全产品
现在让我们来看一些典型的产品。这里的基本决定因素是,你觉得应该使用多少开源软件,或者换言之,购买商业产品的预算是多少?
启动寻找工具过程的一个好方法是借助于Sysdig。他们有一系列很好的教程(当然使用他们的软件作为模型),帮助了解一些常见的安全用例,例如审核运行时代码中的异常行为、进行取证分析和漏洞检查。该公司还提供其开源RASP工具Falco以及商业工具Monitor和Secure,后者用于图像扫描和漏洞监控。
主要的开源工具包括:
Anchore,用于漏洞分析和图像扫描;
Apparmor,用于满足RASP的需求;
Cilium,用于网络和HTTP层安全;
Coreos Clair,用于静态代码分析;
Dagda,用于静态漏洞分析和监控,以及
Saucelabs,提供免费的实时和自动代码测试功能。
主要商业供应商包括:
Alertlogic,从事管理容器标识和日志分析;
AquaSec,进行RASP、审计、图像扫描和容器IDS;
Flawcheck,被Tenable收购,利用Nessus安全专业知识,将其融入到容器图像扫描仪中;
Twistlock,进行RASP和其他的机器学习保护,以及
Threatstack,其云安全平台包括了漏洞监控工具。
最后,对这方面的成本提一些简单的建议。大部分供应商都提供试用版(有些时间短至一周,有些持续数月),因此你可以在购买前进行试用。很多这类试用版都有注册页面,这样他们就可以找到自己感兴趣的线索。因为这些工具是按照API调用或者其他使用指标来收费的,所以它们中的大多数都有复杂的定价模型,每家供应商的网站上并没有发布这些模型。
例如,Sysdig的定价页面提供的信息非常少。我发现,在年度订购计划中,其价格是每一主机每月30美元起价,量多还有折扣。为容器保护定价面临的挑战是,你可能不知道容器基础设施的全部范围,并且,考虑到变化太快了,甚至可能无法估计总成本。因此,在进入商业领域之前,你最好还是从开源代码开始吧。
David Strom为《CSO在线》、《网络世界》、《计算机世界》和其他出版物撰写安全、网络和通信等领域的文章,并探讨相关的专题。
原文网址
https://www.csoonline.com/article/3388025/how-to-improve-container-security.htmlt