Page 48 - 《软件学报》2021年第10期
P. 48

3020                                 Journal of Software  软件学报 Vol.32, No.10, October 2021

                    在一个公司内部,拥有坚实的安全文化是至关重要的.安全文化位于整个 DevSecOps 金字塔的底部,它是支
                 撑 DevSecOps 建立的基石.在安全文化的感染下,开发人员和运维人员能够主动学习安全技能、提高自身的安
                 全意识,并主动承担日常开发和运维活动中的安全责任,更好地落实“人人对安全负责”的理念.同时,为了支持这
                 种安全文化的建立,公司的组织结构也需要进行一定的调整,进而促进安全团队与其他团队之间更好地交流和
                 协作.例如,组织需要聘请更多的安全专家,安全团队也需要为开发和运维团队进行相应的安全培训等.开发人
                 员和运维人员在掌握了一定的安全知识之后,才可以使用既定的安全自动化工具来实现自动化安全.但 100%安
                 全的自动化通常是难以实现的,很多时候仍需进行必要的人工配置和检查.此外,对安全度量指标的跟踪贯穿了
                 整个 DevSecOps 金字塔,公司需要使用不同的度量指标来反映系统的实际运行状况,并持续改善 DevSecOps 的
                 安全工作流程.

                 3    DevSecOps 典型实践

                    DevSecOps 的核心特征揭示了 DevSecOps 的基本思想,但如何将这些原则落实到日常的开发和运维活动
                 中,目前业界仍然缺少公认的最佳解决方案               [29] ,大部分企业也仍处于对 DevSecOps 实践的探索阶段.现有的一些
                 研究试图对能够在 DevOps 中集成的安全措施加以总结                [15,21,41] ,但由于受访的组织数量有限、相关的学术研究
                 数量不足、研究时间较早等多种因素影响,这些研究给出的安全实践数量相对较少且粒度较粗,对业界实际的
                 指导意义有限.因此,本节基于现有的学术文献和灰色文献,综合了国内外企业实践探索经验,整理总结了一些
                 常用的 DevSecOps 典型实践,试图弥补这一不足.根据我们整理得到的典型实践的适用范围,进一步将这些实践
                 分为阶段实践和通用实践两类,接下来将分别从这两个方面对 DevSecOps 中的一些典型实践进行阐述.需要指
                 出的是:本节我们并未罗列 DevSecOps 实践的全部内容,同一阶段内的不同实践也没有明确的先后之分.组织在
                 具体开展 DevSecOps 相关实践时,需要综合考虑自身的组织结构、开发/生产环境、DevOps 成熟度                        [42] 等多个方
                 面的因素,进而更好地将这些实践应用于实际的工业生产中.
                 3.1   阶段实践
                    DevSecOps 实践试图在 DevOps 现有工作流中无缝接入安全相关实践,以提高 DevOps 整体流程和最终交
                 付的安全性.DevOps 工作流及其相关实践已在多篇研究文献                  [6,43] 中进行了详细的介绍,这里不再赘述.图 6 展示
                 了一种典型的 DevOps 流程,它根据软件开发各个阶段主要工作内容的差异,将 DevOps 流程分为 8 个阶段.但在
                 实际生产中,这些阶段之间并不会存在明显的界限.本文为方便展开,仍按照这八个阶段分别进行叙述,并通过
                 各个阶段交付的制品产生联系.












                                                 Fig.6    Flow chart of DevOps
                                                    图 6   DevOps 流程图

                    如图 7 所示:在本阶段中,工作人员需要对上一阶段交付的制品进行操作,从而产出新的制品并交付给下一
                 个阶段.开发人员需要持续地将自己编写完成的代码提交至指定仓库的分支中进行自动化构建、测试等相关操
                 作.运维阶段和监控阶段都是对生产环境中的产品进行操作,在这两个阶段之间不会有新的制品产生.一旦产品
                 被正式部署到生产环境中,就需要进行监控和日常维护.下面,本文将分阶段地对部分典型的 DevSecOps 安全实
                 践进行具体的阐述,并详细说明相邻阶段之间的内在联系.
   43   44   45   46   47   48   49   50   51   52   53