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]
   42   43   44   45   46   47   48   49   50   51   52