传统的软件开发生命周期关注核心点在于需求分析、需求设计和需求编码实现,但是事实证明只注重软件业务功能设计实现而缺乏对产品安全考量的产品终将会为此而付出惨痛的代价,例如:因为缺乏对安全相关法律法规的了解,在产品业务功能实现中过度采集用户个人数据信息并将其进行滥用和不安全的存储而带来的法律追责问题和应用产品强制下架整改;因为产品发版后被攻击者恶意攻击造成系统无法正常使用而被迫强制下线进行漏洞修复等,为了规避产品上线后由于潜在的安全问题而带来的经济损失以及时间成本等问题SDL应运而生。
SDL(Security Development Lifecycle,安全开发生命周期)是由微软提出的一种从安全角度指导软件开发的管理模式,它主要通过在传统的软件开发生命周期的各个阶段穿插一系列的安全活动来保障和提升产品自身的安全能力
SDL侧重于软件开发过程中的安全保证过程,旨在开发出安全的软件应用,致力于消除软件产品中潜在的安全漏洞和降低(甚至消除)产品中潜在的安全风险问题,同时在帮助开发人员构建更安全的软件和在解决安全合规要求的同时降低软件开发成本
微软在提出SDL的同时也给予了一套实践参考标准:
微软SDL参考标准可以进一步细化为以下三个核心:
下面是对微软SDL参考标准进行进一步细化的流程版本,也是目前国内比较通用的一种:
SDL的核心理念是在软件开发的每一个阶段增加相应的安全活动来减少软件开发中可能出现的安全漏洞数量并将安全缺陷降低到最小程度,结合微软提出的各个环节我们可以将其流程划分以下七部分:安全培训、安全需求、安全设计、安全开发、安全测试、发布审核、安全响应,期间穿插的可以进行落地实践的安全活动主要如下所示:
SDL落地并非一朝一夕的事情,期间不仅要结合企业自身的特点进行不断的调整进行完善,而且在实施期间也会遇到很多的难点和问题:
本篇文章作为SDL安全体系建设的第一篇文章主要介绍了软件危机以及引入SDL的目的和SDL的基本流程,后续我们会将SDL的各个环节进行逐一概述,当然也欢迎各位读者一起交流,不足之处还请不吝斧正~