Page 49 - 《软件学报》2021年第10期
P. 49
戴启铭 等:DevSecOps:DevOps 下实现持续安全的实践探索 3021
Fig.7 DevSecOps phase practices workflows
图 7 DevSecOps 阶段实践工作流
3.1.1 计划阶段
计划阶段是进行软件开发前的准备阶段,在这一阶段中,开发人员需要确定需求、明确交付目标,这些需求
可能由客户直接提出、是来自产品部门的新想法,或者是监控阶段反馈的安全问题.计划阶段位于 DevOps 生命
周期的起始位置,倘若在该处就能够充分考虑安全性需求,尽可能多地识别出软件所面临的安全风险并加以处
理,那么无疑会缩小可能的攻击面,也能够避免在开发后期发现安全问题增加的修复成本.在软件开发早期加入
安全实践,对保证整个项目的安全性至关重要 [44] .它是”安全左移”的内在要求,也是更加注重安全团队的重要体
现方式.在这个阶段,我们可以考虑以下安全实践.
安全需求工程
确定需求通常是开启项目的第 1 步,但在具体讨论时却通常又不会涉及软件的安全性需求 [44] ,这就很容易
导致所交付的产品或服务存在一定的安全隐患.Mead 和 Stehney 等人 [45] 提出使用安全需求工程来将安全性需
求合并到具体的项目开发中,它包含了 9 个步骤:统一定义、识别安全目标、选择启发式技术、开发工件、引
出安全性需求、对需求进行分类、执行风险评估、优化需求和需求检测.由于 DevOps 对安全需求工程提出了
更高的响应速度上的要求,因此在当前的开发场景下,我们需要对安全需求工程进行一定的精简.例如,可以开
发出能够直接将安全需求映射成为可运行代码的框架,进而简化安全需求工程的额外负担.
固有风险评估
系统的设计需要规避固有的安全问题,固有风险评估便是进行软件安全设计中的一项重要步骤,它需要归
纳系统所面临的固有安全风险、判断这些安全风险可能带来的影响以及风险转变为现实的可能性.固有风险评
估是一个需要不断重复的过程,在不同的阶段进行风险评估,也有着不同的目的 [18] .在软件开发周期的早期进行
固有风险评估主要是为了对产品进行安全加固设计,而在后期则主要为了检验安全设计的效果.
威胁建模
威胁建模是进行系统安全设计的另一个重要过程,它能够在软件开发生命周期的早期发现系统所面临的
安全威胁,是一种用来识别、量化并正确应对系统所面临的威胁的结构化方法 [46] .使用威胁建模方法,需要正确