文章前言
传统的软件开发生命周期关注核心点在于需求分析、需求设计和需求编码实现,但是事实证明只注重软件业务功能设计实现而缺乏对产品安全考量的产品终将会为此而付出惨痛的代价,例如:因为缺乏对安全相关法律法规的了解,在产品业务功能实现中过度采集用户个人数据信息并将其进行滥用和不安全的存储而带来的法律追责问题和应用产品强制下架整改;因为产品发版后被攻击者恶意攻击造成系统无法正常使用而被迫强制下线进行漏洞修复等,为了规避产品上线后由于潜在的安全问题而带来的经济损失以及时间成本等问题SDL应运而生。
SDL简介
SDL(Security Development Lifecycle,安全开发生命周期)是由微软提出的一种从安全角度指导软件开发的管理模式,它主要通过在传统的软件开发生命周期的各个阶段穿插一系列的安全活动来保障和提升产品自身的安全能力
SDL侧重于软件开发过程中的安全保证过程,旨在开发出安全的软件应用,致力于消除软件产品中潜在的安全漏洞和降低(甚至消除)产品中潜在的安全风险问题,同时在帮助开发人员构建更安全的软件和在解决安全合规要求的同时降低软件开发成本
微软标准
微软在提出SDL的同时也给予了一套实践参考标准:
微软SDL参考标准可以进一步细化为以下三个核心:
-
培训阶段:对软件产品开发相关的人员(产品经理、项目经理、研发人员等)进行安全培训,培训内容应当贯穿整个SDL生命周期的各个环节,尤其是对安全意识、安全制度、安全规范、安全评审等的培训讲解
-
过程阶段:定期评估SDL过程的完备性并对随着新技术的发展和新威胁的引入提出应对措施,使用过程内指标确认过程遵从性,使用发布后指标帮助指导SDL进行进一步的改进
-
响应阶段:制定完备的安全响应方案向相关各方提供项目扼要令人信服的指导,同时对响应阶段的所有数据进行存档,通过事后复盘对响应阶段的不足之处进行不断的补充和完善改进
下面是对微软SDL参考标准进行进一步细化的流程版本,也是目前国内比较通用的一种:
落地实践
SDL的核心理念是在软件开发的每一个阶段增加相应的安全活动来减少软件开发中可能出现的安全漏洞数量并将安全缺陷降低到最小程度,结合微软提出的各个环节我们可以将其流程划分以下七部分:安全培训、安全需求、安全设计、安全开发、安全测试、发布审核、安全响应,期间穿插的可以进行落地实践的安全活动主要如下所示:
落地难度
SDL落地并非一朝一夕的事情,期间不仅要结合企业自身的特点进行不断的调整进行完善,而且在实施期间也会遇到很多的难点和问题:
-
领导重视:企业领导不重视安全问题将会导致一系列的安全事项无法推动,此时可以考虑通过安全漏洞驱动或者安全风险评估驱动
-
安全团队:安全团队需要具备在SDL各个环节需要的引入的安全能力(例如:渗透测试、应急响应、代码审计、安全合规等)的工程师
资源调度:在实施SDL期间很常见的一个问题就是团队内部人手不够、团队之间沟通协商资源调度问题,这一点尤其在安全培训环节会很是显
-
制度实施:制度规范的难点在于安全制度制定的全面性、制度规范的实施落地情况等,比较常见的一种情况是很多企业都是制定了一箩筐制度,但是落地的寥寥无几
-
安全卡点:安全评审是产品正式上线对外发版的最后一道门槛,很多企业在安全评审阶段并不会直接完全遵从安全评审的要求,部分因为业务优先需要走所谓的\\”绿色通道\\”,但是很多时候其实业务优先和安全优先总是很难度量,但是一定要提前做好有兜底措施
文末小结
本篇文章作为SDL安全体系建设的第一篇文章主要介绍了软件危机以及引入SDL的目的和SDL的基本流程,后续我们会将SDL的各个环节进行逐一概述,当然也欢迎各位读者一起交流,不足之处还请不吝斧正~
原创文章,作者:七芒星实验室,如若转载,请注明出处:https://www.sudun.com/ask/34192.html