安全开发生命周期能够确保应用程序具备充足的安全性,而自动化是推行它的一个重要手段。不少企业的安全团队已经在这方面进行了很多努力,但也面临着新的挑战。比如重复建设、实施质量良莠不齐、信息分散、没有形成闭环等等。安全服务平台是这个困境的破局者。
为提高软件的安全性,在企业中实施安全软件开发生命周期(下文简称S-SDLC)是必然的选择。自动化为企业推动S-SDLC提供了有力支持,可以很大程度上降低S-SDLC中各项安全活动的实施难度,从而使得开发团队愿意主动的落地执行这些安全活动。典型的例子就是自动化源码安全扫描。
不少企业已经在自动化这条路上做出了很多努力,效果当然是有的,但是自动化仅仅只是起步,还有更多挑战等着企业来解决,比如下面这些:
久而久之,自动化所带来的红利也逐渐被这些挑战所吞噬,甚至对于使用自动化来解决S-SDLC落地难的信心也开始了动摇。
什么是安全服务平台?我们先不急着看它的定义,我们先来看看下面几个场景,感性的认识一下安全服务平台。
开发团队在公司统一搭建的持续交付流水线里新建了一个项目,随后惊喜的发现流水线里默认已经有了好几个安全环节,无需开发团队再做任何额外的搭建和集成工作:
分析业务需求中有哪些安全风险,这项活动对业务分析师而言挑战太大,但他/她发现用JIRA管理起来的用户故事卡里,有一部分故事卡中自动出现了一些安全风险提示。这是安全服务平台基于用户故事卡中的业务和技术上下文自动推断出来的,提醒开发团队对安全进行必要的考虑。
某天,开发团队的项目经理和安全团队同时收到了一条短信,提示说检测到了源码及密钥泄露。这是安全服务平台自动发送的报警提醒,原因是安全服务平台检测到了开发团队中的某位同事的个人Github账号下的公开代码仓库里,发现了公司的源代码,还有一些内部服务器的账号和密码。
有一个类似于数据驾驶舱的Web页面近实时的呈现了当前整个企业中所有开发团队已经开展了的安全活动。查看这个页面的是安全团队,他们能从这些可视化后的数字表盘里,轻松的掌控各个开发团队S-SDLC的实施情况。
与此同时,当前整个企业范围内有哪些开发团队“编码出来的”安全漏洞、危害级别如何、是否得到修复等等信息也是一目了然。应用安全风险是在趋于收敛还是滑向失控的边缘,安全团队也能得到更好的了解。
虽然还有更多安全服务平台的使用场景,但这不妨碍我们给出关于安全服务平台的定义了。安全服务平台,核心是对多种安全工具、服务进行统一封装,并通过API或UI交互,以及融入交付基础设施等途径,向开发团队提供便捷易用的安全服务集合。这些通过安全服务平台而提供出来的安全服务集合,贯穿了软件开发的完整生命周期,从需求分析和技术设计,一直到上线运营及运维。与此同时,安全服务平台也服务于安全团队,向其提供一系列安全管理服务。
之所以说安全服务平台是目前推行S-SDLC的困境的破局者,是因为它所创造出来的独特的价值:
经常听到有安全团队抱怨说,开发团队并不是真正的重视安全,不然为何那些明明对开发团队有好处的安全活动,到最后他们都不做呢?还有的安全团队使劲猛推S-SDLC,结果推得开发团队绕着安全团队走,唯避之而不急。
其实并不是开发团队对安全漠不关心,也不是他们有意躲着安全团队,他们的内心其实也是希望看到自己开发出来的应用程序的安全性足够高,只是开发团队有一个隐藏的要求:不管做什么安全活动,以及怎么做这些安全活动,实施成本必须足够低,低到开发团队认为这不会影响交付速度,不会导致lead time的增加。
把安全活动自动化是一个很好的开始,但这不是终点,开发团队的需求并没有得到很好的满足。尽管一些安全活动(例如自动化源码安全扫描)已经高度自动化了,但是在开发团队还是免不了要做一些搭建或者配置工作。这一点点看似微不足道的时间消耗或者精力投入,就犹如软件发布最后1公里这个问题一样,阻碍了安全活动最终的落地实施。
安全服务平台秉承了自动化的理念,并且把其发挥到了极致,通过技术手段直接帮开发团队搭建、配置好安全工具,如此一来造就了开箱即用的服务,对开发团队而言使用成本直接降到了0,使用这个安全服务的意愿和动力一下就充足了起来。还是以自动化源码安全扫描为例,当开发团队新建一条流水线的时候,默认直接就有安全源码扫描环节,无需配置,直接运行查看结果即可。
一个开发团队搭建一套安全扫描系统,N个开发团队就会搭建N套安全扫描系统,尽管可以通过自动化脚本来加速这个过程,但从资源的使用角度来看,始终存在重复建设的问题。
安全服务平台对安全工具进行了封装,统一对开发团队提供服务,这使得开发团队无需再自己搭建一套安全扫描系统,避免了系统的重复建设。
安全服务平台提供了多种安全服务,并且把这些服务的运行结果统一汇集起来,让开发团队能够更加方便的在一个地方查阅到自己所构建的应用程序的安全性。
更进一步,安全服务平台还能把各项安全服务的运行结果反馈回持续交付流水线,这使得开发团队能够在第一时间知晓安全活动的结果,并及时的做出处理。这样的做法能够帮助开发团队形成安全信息闭环,构建出一个正向良性的反馈环路。
####(4)提供多维度的信息可视化,便于安全团队追踪管理、推动S-SDLC中各项活动的开展
尽管S-SDLC提倡赋能开发团队,让开发团队以自驱动的方式去开展各项安全活动,但这些安全活动到底有没有开展?开展的效果怎么样?有没有遇到什么困难或者异常情况?这些信息在以前只能靠安全审计,或者安全团队主动去追问才能得知,而且得到的答案可能也比较模糊。
而安全服务平台由于记录下了各个开发团队、各项安全活动的详细运行数据,通过可视化等手段能够向安全团队提供更加精准的数据反馈,使得安全团队能够获得数据支撑,以便于持续改进优化S-SDLC的推行计划。
安全服务平台统一封装了各种安全工具或者第三方安全服务,因此对这些工具或服务做维护也变得更加容易操作。比如,某个安全工具需要进行版本升级,原先只能以发送通知的方式告诉开发团队尽快完成升级,但开发团队是否及时响应就不能很好的控制了,而且如果某些开发团队并没有使用这款安全工具,那么这样的通知对他们而言也是信息噪音。现如今,只需安全团队将安全服务平台所封装的这个工具进行升级,那么所有通过平台使用这款工具的开发团队无需做任何操作,便能直接享受升级后的功能。同理,对于安全扫描规则的更新也是类似的过程,将变得更加易于维护。
当我们了解了安全服务平台的这些独特价值之后,让我们再回过头来看看之前提到的那些新冒出来的挑战,你会发现通过安全服务平台都能得到比较好的解决:
S-SDLC,也即安全开发生命周期能够确保应用程序具备充足的安全性,而自动化是推行S-SDLC的一个重要手段。不少企业的安全团队已经在这方面进行了很多努力,但也面临着新的挑战。比如重复建设、实施质量良莠不齐、信息分散、没有形成闭环等等。
安全服务平台是这个困境的破局者,它封装了一系列安全工具和第三方安全服务,并通过多种方式统一的向开发团队提供便捷的安全服务,使得开发团队更有意愿落地实施S-SDLC中的安全活动。并且安全服务平台还为安全团队的管理提供了支持。
既然安全服务平台如此优秀,那么该如何构建这样的平台呢?有没有什么核心原则需要考虑?有没有什么前提条件?它似乎有多种服务提供形式,那到底有哪几种呢?除了S-SDLC相关的安全服务外,平台还可融入其他安全功能吗?这些问题我们留着下篇文章为大家详细解答。
文/ThoughtWorks马伟