《安全攻防技能》-SDL

来源极客时间《安全攻防技能30讲》
以下是自己总结笔记,仅用于学习思考!

2004年,微软提出了SDL(安全开发生命周期)

一、SDL中的基础概念

先了解一下DLC(软件开发生命周期)。DLC 将软件开发过程分为 5 个阶段:需求分析、设计、开发、测试和部署。

1、什么是SDL?

SDL 的出现不是为了颠覆传统的 DLC 框架,而是希望在 DLC 中加入足够清晰的安全需求,以此来为软件开发的过程提供完整的安全防护。

SDL的标准执行流程有7个步骤:安全培训、需求分析、设计、开发、测试、部署和响应。
《安全攻防技能》-SDL

培训

安全培训是第一步。SDL 中明确提出:开发、测试、运维和产品经理每年至少进行一次安全培训。培训的内容包括安全概念和框架、威胁评估、Web 安全、安全测试以及隐私保护等。

需求分析

SDL要求在需求分析时候,需要把安全防护的需求考虑进来。
包括三个方面:安全标准、安全指标、风险点评估。

设计

设计为后续的开发、测试和部署环节制定响应的方案和计划。
为安全标准确定具体的实施方案。
安全指标的响应方案则是在软件开发方案中,尽可能地考虑安全问题,降低可能出现风险的概率。
对于需求阶段定义的风险点进行完整的风险评估。

开发

安全人员的工作则是尽可能地避免开发人员的代码出现安全问题。其实,我们可以通过限制工具和方法、定期审查代码来实现。

测试

一方面,我们需要评估软件是否符合当初的安全设计方案,是否存在不一致的地方。根据安全设计方案,一项一项去确认是否符合要求。

另一方面,我们要进行动态的安全测试。动态测试的方法有两种,执行漏洞扫描和进行模糊测试。

部署

在各项事情都确认完毕之后,我们就需要对整个项目进行归档了。归档之后,包括代码、需求列表、设计方案和应急预案在内的所有的内容都不允许改动。完成了这些,最终上线。

响应

软件上线之后,安全人员所需要做的,就是及时响应和处理安全事件。这就是应急响应了。

二、如何推动SDL落地?

1、我们要基于现有的制度拓展SDL,循序渐进,先定义好普通软件开发的制度,再加入安全元素。

2、落地SDL要灵活变通,不要生搬硬套,根据公司情况慢慢推进,提升SDL的落地效率。

3、在SDL的覆盖面上,我们要有取舍。对于一些量级小、敏感数据少的业务,我们可以适当降低安全标准。让每个业务都遵守SDL,不太现实。