1.4 安全左移在SDLC中的意义
2021年,网络安全事件频发。其中,危害巨大、影响深远的案例屡见不鲜。例如:1月13日,国内突发incaseformat病毒事件,并呈大范围爆发趋势;3月20日,知名电脑厂商遭遇REvil勒索团伙攻击,被要求支付创当时纪录的高额赎金;3月24日,超过650万以色列选民的个人信息,包括姓名、身份证号、家庭住址和电话号码等被泄露;5月7日,美国一家成品油管道运营商遭到勒索软件网络攻击。
种种事件告诉我们,网络空间充满挑战和威胁,个体、组织,甚至区域和国家都可能面临数据泄露或遭受未知攻击的风险。系统和开发安全受到了高度重视。目前,基于国内外网络公开度高、攻击面大,国内部分软件需要依赖进口,政策层面有多项相关法律法规开始实施等现状,可知将安全纳入SDLC已是大势所趋。
安全软件开发势在必行。通常意义下,在软件开发流程当中,安全的意义只是在最后扫描漏洞,确保审计合规就可以。而安全、成熟的系统需要的绝不仅仅是“哪坏修哪”的“修理工”,而是能够从思想上对安全负责,在业务上有应对预案和策略的团队。
近年来,“安全左移”的观念逐渐成为主流。但是,“安全左移”并不是什么新创造出来的词汇,它的思想最早来自测试阶段。测试左移就是将测试实践向前移至软件生命周期的早期阶段,换言之,就是“尽早测试,经常测试”。
早在2001年,Larry Smith就提出了这种观点。测试人员在软件生命周期的早期介入,主动发现和处理缺陷,通过持续测试,将问题及早暴露出来,从而提升产品的质量,带来更好的产品和用户体验。产品质量的提升能够确保更好的回报率。当然,也有“右移”的说法,指的是产品上线后对问题快速响应,以保证产品质量。
这里谈到的“安全左移”,重在加强企业对安全的重视,将开发、运营、安全从割裂推向融合,从散兵发展成集团,从各扫门前雪变成一个篱笆三个桩,奠定持续测试的基础。
提出“安全左移”概念的Larry Smith曾说过,开发初期解决安全问题,相较于发布上线后再解决安全问题,前者的成本要低得多。包括Gartner、IBM、HP等在内的多家组织都曾发布相关研究报告,指出在部署阶段解决安全问题的成本是开发阶段的几十甚至上千倍,如图1-2所示。
图1-2 软件生命周期中各阶段解决安全问题的成本倍率
通过把安全活动设置在软件生命周期中的各个阶段,加强安全培训,许多问题都可以在前期被发现和解决,不至于积压到最后演变成紧急事件。
从安全左移中我们学到,“未雨绸缪”“战术上重视敌人”实际上是一种快与慢的博弈,在开发阶段开展测试和安全活动可能会占用一些时间,但是从长远来看更合理。Edwards Deming在《走出危机》的“管理14要点”中也提到过:不要让质量保障依赖于检验。
这里我们可以用简单的一句话来形容安全左移的特点:以人为本,技术驱动,降本增效。