Page 47 - 《软件学报》2021年第10期
P. 47
戴启铭 等:DevSecOps:DevOps 下实现持续安全的实践探索 3019
的交付时间,也会耽误新功能的开发进度.为了处理好这一问题,DevSecOps 提倡将安全工作尽可能左移 [21] ,并
分散到日常的开发和运维活动中.在组织结构上,DevSecOps 期望组织管理者能够充分意识到在 DevOps 流程中
添加安全元素的重要性,在组织内部大力宣传和支持 DevSecOps 运动,积极提高安全团队在组织中的地位,让安
全团队参与到整个软件交付的过程中去,进一步促进组织间各个团队的合作与交流.
自动化
为加快产品交付的速率,组织需在内部建立合适的工作流程,将自动化工具集成到 DevOps 流水线中 [37,38] ,
以实现持续集成、持续部署等活动 [8,10] .DevSecOps 在此基础上提出:需要将安全自动化流程嵌入到软件的开发
和运维中,以实现整个 DevOps 生命周期的持续安全.这种做法能够显著提高最终交付的产品的安全质量,也能
够提升组织自身的安全信心.DevSecOps 指出:加入的安全实践不应当拖慢组织的开发速度,仍需要支持组织高
频率的交付行为 [39] ,自动化地完成既定的安全任务.这种自动化的安全控制手段也被称为安全即代码(security
as code) [29] ,它是 DevSecOps 强调的重点部分之一.DevSecOps 的目标是实现 100%的安全自动化控制 [21] ,以期在
没有人为干预的情况下,实现对全部安全问题的检测和反馈.
度量
在 DevOps 中,度量作为提高流程可见性、判断方法有效性的重要手段之一,其重要性不言而喻.工作人员
通过观察不同的度量指标(如代码提交频率、部署频率等),能够及时了解到系统当前的运行状态 [40] 和项目的整
体进展,对组织工作流程中发现的问题加以总结并改进.在 DevSecOps 环境下,除了需要检测通用的 DevOps 度
量指标之外,也添加了安全方面的相关度量.相关人员通过持续检测这些安全指标,及时进行信息监控和反馈,
继而实现持续安全的目标.例如,DevSecOps 鼓励在开发过程中跟踪威胁和漏洞 [21] ,并对发现的漏洞和威胁做好
记录和管理 [29] .DevSecOps 建立的度量标准通常需要与自动化流程紧密结合,在整个软件生命周期中对指定的
度量指标进行实时监控,进而评估、控制和改善整个软件开发过程.Prates [22] 在研究中总结了多个 DevSecOps
的相关度量指标,但组织在实际制定度量标准时,仍然需要结合组织实际情况进行多方面的考量.
共享
DevOps 指出,开发团队和运维团队需要共享知识、工具和技术来促进团队之间的交流合作 [34] .同样地,
DevSecOps 提倡在 DevOps 建立的共享氛围中加入安全团队 [21] .安全团队需要了解开发团队和运维团队所面临
的安全挑战,并帮助他们改善原有的工作流程.反之亦然,开发团队和运维团队能够了解到安全团队注重的安全
问题,在早期就加以防范,进而促进不同团队之间的理解与沟通.此外,安全团队还需要为开发和运维团队统一
安全工具集,并将这些自动化的安全工具集成到 DevOps 流水线中,防止因为工具不一致而导致的额外工作.公
司内部也需要定期组织技术交流和技能培训活动,以帮助开发和运维人员提高自身的安全意识,能够主动避免
一些常见的安全问题.安全团队在与其他团队的交流过程中,也能够了解到他们常用的技术手段,并提出一些针
对性的安全改进建议.倘若在组织内成功建立了这样一种共享氛围,安全团队与其他团队之间的交流壁垒将会
被进一步打破,组织的凝聚力和安全文化也会得到进一步的提升.
上述列举的 4 个方面的特征之间也存在着一定的联系,Tomas 等人 [29] 提出 DevSecOps 金字塔(如图 5 所示)
来表示它们之间的关系.
Fig.5 Pyramid of DevSecOps proposed by Tomas [29]
图 5 Tomas 提出的 DevSecOps 金字塔 [29]