前言
在甲方已经工作了一段时间,在做测试的过程中,也看了一些关于安全体系的文章,下面是我对SDL体系的一些初步了解,分享出来与大家共同探讨。
SDL简介
SDL(security development lifecycle)是安全开发生命周期,侧重于软件开发的安全保证过程,构建更安全的软件同时降低开发成本。
SDL的核心理念就是将安全考虑集成在软件开发的每一个阶段:需求分析、设计、编码、测试和维护。从需求、设计到发布产品的每一个阶段每都增加了相应的安全活动,以减少软件中漏洞的数量并将安全缺陷降低到最小程度。
SDL体系一般使用于传统的瀑布式开发,其需求比较固定,流程较长。
SDL目的
过去,企业应对安全问题往往是在上线前甚至上线后通过人工渗透测试、自动化安全扫描等方式发现漏洞,然后反馈至开发人员修改。这种方式存在下面的问题:
1)开发人员修复漏洞的周期长、成本高;
2)问题发现滞后,可能会限于当下技术而搁置安全问题;
3)同样的安全问题频繁出现,安全维护成本居高不下。
SDL就是为了解决这种问题,将安全集合在开发的每个阶段,尽早发现安全漏洞,尽早测试,降低修复安全漏洞的成本。
微软SDL流程
为了应对这些问题,不同企业或组织都提出了SDL模型,目前微软的SDL模型可以说是应用更广泛的一种,接下来一起来看看微软的SDL模型。
从下图可以看出,SDL分为了培训,需求,设计,实施,验证,发布,响应阶段。
流程没有好坏之分,关键是要适合公司的状态,因此,在实际操作的过程中,不可能完全与上面的流程相同,要根据公司的实际情况进行改变。
安全培训
培训是最基础的一部分,旨在提高开发团队全体人员的安全意识,这有利于后续的操作。培训应该当做是一个常态化的工作来做,每周或每个月都应该组织安全培训。
开发和测试团队对安全管理工作的理解和支持是SDL体系顺利实施的基础,因此必须重视人员培训,精心开展相关人员培训工作。
目标:提高团队安全意识,减少安全风险发生
培训对象:开发人员,测试人员、项目经理、产品经理等
培训内容:常见的安全漏洞,不安全的组件列表,不安全函数等等
难点:开发人员时间不易协调