SDL软件安全开发流程总结
前言
现在有很多公司SDL的流程刚刚起步,我想分享一下自己在SDL中的一些经验。由于经验尚浅,无法估量整个SDL的建设情况,以下只是自己在工作中的理解和拍脑袋的想法,请各位大佬指点。
SDL全称SecurityDevelopmentLifecycle,又称作安全开发生命周期,包括安全培训、安全需求设计、安全开发、安全检测和安全监控五个阶段。本文会以安全检测为重点展开。
1安全培训
安全培训的重点是提高全体项目人员的安全意识,包括产品经理的安全意识和研发测试人员的代码安全意识。
项目的中期可开展针对性的培训,例如代码中经常出现的问题、测试过程中多次出现的漏洞等都可以作为培训的重点。
2安全需求设计
针对系统业务要求实施风险评估工作,根据需求文档与项目经理确定安全需求,制定安全需求表,供后续开发检测时使用。
3安全开发
安全开发阶段由项目经理把控。作为安全人员,在项目开始前对所有研发人员做好安全培训,中期做针对性的问题漏洞培训,能够减轻在安全检测时的工作量。
4安全检测
在从前任职的公司,安全体系相对完善,所有的新项目上线前都需要经过三步检查——代码审计、Web应用扫描、人工渗透扫描。
代码审计
使用Jekens拉Gitlab代码放入Fortify中扫描。开发过程中,开发人员每次更新代码都要进行扫描,并有权限查看Fortify相关项目漏洞情况,进行整改(不允许有中高危以上漏洞)。开发有权对漏洞进行忽略处理,但需要承担相应后果。若不知道如何处理,可请安全组提供解决方案。(代码扫描可以使用其他安全工具)
WEB应用扫描
WEB应用扫描不需要安全基础即可操作。因为安全人员比测试人员少,一般交予测试人员协助处理。扫描器可选择项很多,包括开源或者商用,选择适合自己的就好。
人工渗透扫描
这也是最后一步。针对不同的应用发布情况,若是应用为新应用则需要对总体项目进行渗透测试;若为增量项目(版本迭代更新)则只需要对增加项相关接口做测试。渗透人员由安全组人员负责。
以上报告中出现中高危以上问题必须整改,整改完成前不允许上线。
5安全监控
一般来说,公司都具有安全设备,安全的维护也可以借助SRC(SecurityResponseCenter安全应急响应中心)或者第三方漏洞平台。
6SDL流程监督
最后分享一下关于SDL流程监督的经验。
SDL流程由项目经理负责,同样SDL的监督对象为项目经理,项目经理为整改流程的主导。流程监督是贯穿整个开发周期的,包括前期的安全培训、需求设计,中期的代码开发、安全检测,后期的安全监控。
再介绍一下在SDL流程中的《安全选项表》。《安全选项表》中的内容为等级保护和网站备案中必须存在的一些安全功能项,属于法律合规的内容。不是产品必须符合其中的内容,而是尽量符合。若不用相关功能,可以在表格中解释一下,日后在做等级保护等检查时也可直接提供与检查人员。
若项目为全新项目,则按照《安全选项表》(图1)中流程进行。产品经理需要参考表中的内容,对项目进行梳理,选择保留项。若选项不保留,则需要在备注中说明理由。
图1(图表内容太多,后台回复“安全选项表”获取完整内容)
开发和测试根据产品填写好的《安全选项表》内容进行测试。部分安全专业的测试工作由安全人员进行测试。完成最后的安全测试并允许上线后,三份测试报告和此安全选项表格要进行归档。其中比较重要的环节是对四条线的人(项目经理、产品、开发、测试)培训安全选项表内容。
若项目为后期迭代,则需求评审的时候需要安全人员参与,负责安全性评估和后期渗透检查。代码和WEB应用扫描可以照常进行。
结束语
以上SDL整体的流程完全依据个人平时的工作理解而成,供大家参考。有错误的地方欢迎大佬们指正,有更好的完善方法也欢迎大家补充探讨。
相关资料