本文是一篇客座博客,作者是Shiftleft CEO和创始人Manish Gupta。
包括SaaS在内的、部署在云端的软件正在改写开发和部署软件的各项规则。昨日的单体应用已经让位于众多的微服务,后者每周都会更新几次,或者在一些企业中,一天之内更新多次。
创新的步伐是惊人的。客户期望看到这种快速的步伐,并且供应商们也把这看作是一个关键的竞争优势。但是,变化会破坏安全性。加上不能满足AWS、Azure或GCP现代云基础设施的需要,传统的安全解决方案表现出来的情况是已经不再适合了。
如果软件持续成为创新的引擎,那么重新思考如何保护云端的工作负载就十分有必要。在数字时代,云端的软件和SaaS第一次使开发软件的企业也能托管客户使用的软件。
在企业中,我们不再需要开发软件,并把它交付给全球数百个客户,因此客户便可以在各自的数据中心上托管这些软件。与把软件看作是一个黑盒子,并使其只专注于检测威胁所不同的是,我们第一次能够通过理解软件的特定需求来保护软件。
当前,深度防御传统的安全产品是保护企业软件最好的做法。这就要求一个典型的企业能够保护从多个ISV(独立软件开发商)那里购买来的应用程序,并将其部署在数据中心上。因为企业和安全供应商没有访问源代码的权限,因此便不能理解应用程序的特定需求,所以传统的安全架构主要专注于检测威胁。
因此,企业在安全方面的努力开始着眼于下一个它们能够理解的事上,也就是威胁布局。因此,深度防御基础设施的关键要素包括:反病毒程序(AV)、入侵检测系统、网络应用程序防火墙、应用程序白名单和沙盒。
以下记录的是采用专注威胁这一做法的所有缺点:
● 专注威胁使基础设施只能被动响应。在安全供应商能够为一个未知的威胁编写算法前,他们能够做的只有等待,眼睁睁的看着威胁到来。
● 安全产品不能理解应用程序,并且还依赖于匹配检测威胁的模式。因此,它们会产生大量的误报。这就使得手动操作安全工具并将其应用到环境中的任务就落到了客户的身上。
● 如果有足够多的时间,诸如WAF之类的一些安全产品就能够自动对其自身进行优化,以便学习应用程序的行为。但是,如果底层应用程序变化太频繁,优化过程永远都跟不上。
● 在资本和运营方面,效率也是很低下的,因为它依赖了多个会产生数千个误报的产品。这些误报最终会被提交给安全运营中心(SOC)——SOC由几个负责识别一个真正的事件或攻击的人员操控。
传统的安全产品不能保护云软件
人们开发和使用应用程序的方式在不断变化。将软件迁移到云端和软件使用即服务(SaaS)为传统的安全产品带来了以下额外的挑战:
● 安全的归属:与客户在其数据中心上部署软件所不同的是,保护SaaS的责任落到了拥有SaaS的独立软件供应商(ISV)的身上。在提高SaaS的安全性上,ISV有三个重要的方面可以发挥关键的作用——开发者、开发运维和安全。
● 敏捷的CI/CD:昨日的单体应用正在被拆分成多个微服务——有时是几百个——每一个微服务在每个月都会被更新几次,或者,在一些企业中,在一天之内被更新多次。传统的安全攻击无法跟上这种敏捷的步伐,因为对它们的手动的优化过程不能再快,同时,它们也不能进行学习,其自我调节的速度也无法高于持续整合/持续部署(CI/CD)。
● 工作负载的分布:将工作负载分布在单个或多个云供应商那里并不能提供一个单个的控制点,在这个控制点上,安全产品能够得到部署。
● 加密和API:微服务互通信经常会使用API,并得到加密,这一点是传统的网络解决方案所没有的。通过人为干预解密或再次加密流量,加密的问题就能得到解决,但费用十分高昂。除非企业能够理解每一个API,使用API才优于传统的网络安全解决方案。
● 分层的基础设施:企业正在利用一个或多个公有和私有云上的容器和虚拟机器来改变应用程序的规模。任何一个特定于一个公有云或一些容器的安全解决方案都不能满足现代SaaS供应商在安全方面的要求。此外,基础设施即服务(IaaS)供应商正在不断演变成平台即服务(PaaS)供应商——为保护他们的应用程序,这一点ISV(独立软件供应商)应当引起关注。在基础设施的安全性方面,IaaS供应商已经做得非常好,随着他们不断演变成PaaS供应商,他们在保护运营环境方面也同样会做的很出色。
仅专注威胁使基础设施只能被动地进行响应,而由于与模式进行匹配的这一特性,也会使它产生大量的误报。因此,为保护软件,主动抑制攻击,采用一个新的模型十分有必要。现在,一个新的方法正在兴起,它能够查看和理解每一个新版应用程序或微服务的安全DNA。
安全DNA是安全特定的、在应用程序的创建阶段提取到的智能代码。通过安全DNA,代码能够得到分析,安全也能在运维的过程得到增强。通过查看所有软件app的实际DNA,诊断和修复安全问题的速度就能够得到提高。
这一种全新的看待安全的方式并不会影响CI/CD的处理速度。更进一步地,随着工作负载的不断执行,安全DNA就能够以一种无缝的方式得到使用,从而保护app远离不可预见的、在生产中很有可能会产生的威胁。只要将目标锁定在生产中应用程序的实时可视性上,误报就能得到降低。
现在,是时候重新思考我们可以如何保护云端的软件了。