微软的SDLC安全开发周期介绍小结

SDL 的出现不是为了颠覆传统的 DLC 框架,而是希望在 DLC 中加入足够清晰的安全需
求,以此来为软件开发的过程提供完整的安全防护。SDL 的标准执行流程有 7 个步骤:
安全培训、需求分析、设计、开发、测试、部署和响应。流程如下图:

1. 培训
在 SDL 中,安全培训是第一步。之所以会这么设计,就是因为很多公司都对安全人员给予
了过高的期望,认为他们能够解决一切的安全问题,而忽略了对开发、测试、运维等人员的
安全意识培训。这就导致安全人员一直处于一个“救火”的状态,无法从根本上杜绝安全问
题的产生。
因此,SDL 中明确提出:开发、测试、运维和产品经理每年至少进行一次安全培训。培训
的内容包括安全概念和框架、威胁评估、Web 安全、安全测试以及隐私保护等。

2 需求分析
SDL 要求在需求分析的过程中,我们必须把安全防护的需求考虑进来。在需求分析阶段,
安全人员提出的防护需求主要包括三个方面。
安全标准:为软件制定对应的安全标准。比如,需要对敏感数据进行加密存储、需要进
行二次认证等。
安全指标:定义软件在上线时需要满足的安全指标。比如,在上线时,软件必须经过安
全测试,且不允许存在任何高危漏洞。
风险点评估:安全人员会对整体需求进行评估,找出需要对安全性重点关注的部分,也
就是风险点。比如某个需求会使用到用户的隐私数据,那么风险点就是这些隐私数据。
这三个方面的安全需求,能够为软件开发划定最低的安全保障,也能够时刻提醒软件开发环
节的各个人员保持对安全的关注。

3   设计
对需求进行分析整理之后,我们就需要对软件的功能和架构进行设计了。那我们都需要设计
些什么呢?其实就是为后续的开发、测试和部署环节制定响应的方案和计划。针对上面整理
出的三个方面的安全需求,我们也需要在设计环节中,给出具体的实现方案。
在设计的过程中,我们需要对安全和开发成本进行平衡考量,使得最终的安全设计方案能够
被所有项目人员认可。
      为安全标准确定具体的实施方案。比如,对敏感数据作加密存储,那么,具体的加密算
法是什么,密钥怎么生成和存储,都需要在设计阶段确定方案细节。
安全指标的响应方案则是在软件开发方案中,尽可能地考虑安全问题,降低可能出现风
险的概率。比如,依据最小权限原则,明确软件每个用户和角色能够进行的操作。或者
确定审计需求,明确各个阶段需要记录的日志及时发现攻击行为。
对于需求阶段定义的风险点进行完整的风险评估。依据识别数据、攻击和漏洞的方式,
明确需要采取的安全防护机制,提升这些关键风险点的安全性。

 

4  开发
在开发阶段,安全人员的工作则是尽可能地避免开发人员的代码出现安全问题。那究竟应该
怎么做呢?其实,我们可以通过限制工具和方法、定期审查代码来实现。
首先,我们可以限制开发人员使用的工具和方法。比如:为了避免插件漏洞,我们可以只允
许开发人员使用通过我们验证的插件和工具;为了避免 SQL 注入漏洞的出现,我们可以限
制开发人员使用字符串拼接的方式执行 SQL 等。
其次,我们也需要对开发人员产出的代码进行定期的安全审查,通过人工或者工具分析,发
现一些没有得到限制的安全漏洞。比如,没有对用户的输入进行验证等。

 

5  . 测试

测试的内容主要包括两个方面。
一方面,我们需要评估软件是否符合当初的安全设计方案,是否存在不一致的地方。有的时
候,虽然我们在设计的时候考虑了最小权限原则,但是在实际开发的过程中,也可能由于开
发人员的理解偏差或者 BUG,导致权限滥用的出现。因此,在测试阶段我们需要依据当初
的安全设计方案,一项一项去确认是否符合要求。
另一方面,我们要进行动态的安全测试。动态测试的方法有两种,执行漏洞扫描和进行模糊
测试。漏洞扫描很好理解,我们可以通过向软件发起一些测试性的攻击脚本,来验证是否存
在漏洞。模糊测试就是不断向软件发起随机或者异常的请求,然后看软件是否出现报错等情
况,以此来检测可能存在的漏洞。


6. 部署
在测试完成之后,软件就可以准备部署上线了。
到这一步,可以说安全人员已经把安全漏洞出现的可能性降到最低了。但是,我经常说“没
有 100% 的安全,安全人员需要随时为可能发生的安全事件做好防护准备",所以,在软件
上线前,我们需要做好安全预案。
我来举个例子。一旦出现数据泄露事件,运维人员必须第一时间对数据库进行隔离,开发人
员需要下线软件相关功能,产品人员需要做好用户的安抚工作,安全人员需要立即对相关日
志进行保存,然后分析事件产生的原因。这就是一个安全预案的基本框架,但是每一步的具
体操作,还需要我们根据实际情况来细化。
预案准备完成之后,我们还需要再一次进行安全确认工作。这个过程主要是来确定,软件的
整个开发流程是否有严格按照既定的 SDL 流程进行,以及最终的软件是否满足我们开始提
出的三个安全需求。
在各项事情都确认完毕之后,我们就需要对整个项目进行归档了。归档之后,包括代码、需
求列表、设计方案和应急预案在内的所有的内容都不允许改动。
完成了安全预案、安全确认和归档之后,我们就可以进行软件的最终部署上线了。


7. 响应
软件上线之后,安全人员所需要做的,就是及时响应和处理安全事件。这就需要用到我们在
部署阶段制定的安全预案了,为了执行这个安全预案,我们需要成立安全应急响应小组。这
个小组的工作就是对安全事件以及外界的漏洞情报进行监控,一旦发现安全事件立即对事件
进行评估,决定需要启动的安全预案。通过安全应急响应小组,我们可以保持对线上软件安
全的时刻监控,保障软件的安全和稳定。
现在,相信你已经能够理解 SDL 是如何从根源上解决安全问题的了。我来简单总结一下:
SDL 通过安全培训来解决人的问题,然后在需求和设计阶段提出安全需求,在开发和测试
阶段发现安全漏洞,最终在部署和响应阶段处理安全问题。
如何推动 SDL 落地?

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值