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

戴启铭  等:DevSecOps:DevOps 下实现持续安全的实践探索                                            3015


                 investigated  for companies  to transit  to DevOps. DevSecOps, a  solution  to realize continuous security  in DevOps, has attracted
                 widespread attention from academia and industry, and has also gradually become a hot research topic in the field of software engineering.
                 In recent  years,  as  DevSecOps research  and practice  develop rapidly, people have gained  a  more  comprehensive understanding of
                 DevSecOps  and  more relevant security practices have  been  introduced.  Hence, this paper  summarizes the five  aspects of background,
                 characteristics, practice, benefits, and challenges, with the aim to introduce the core content of DevSecOps to the software engineering
                 community in China for the first time in detail. Focusing on the latest theoretical research content of DevSecOps and the current state of
                 corporate practice, it is also aimed to provide a reference for practitioners to implement DevSecOps practices. Hopefully, this paper could
                 provide some foundation for researchers to explore DevSecOps and call for more researchers to participate in the research of DevSecOps.
                 Key words:    DevOps security; DevSecOps; continuous security; DevSecOps practice

                                                                              [1]
                    从 21 世纪初开始,为了应对复杂多变的市场环境和频繁变更的业务需求 ,敏捷原则在软件开发中不断普
                                                        [3]
                          [2]
                                                                      [4]
                 及,以 Scrum 、极限编程(eXtreme programming) 、看板(KanBan) 为代表的敏捷开发方法被广泛应用.但主
                 要关注开发过程的敏捷开发方法,通常容易忽略软件生命周期中的其他部分.DevOps 的出现改变了这样的软件
                 开发模式,它覆盖了开发与运维的各个阶段,成功地将开发和运维紧密地集成在一起,将价值快速且持续地交付
                 给用户  [5,6] .经过十余年的发展,DevOps 仍未能形成清晰、明确的定义             [79] .但在 DevOps 工作模式下,开发人员和
                 运维人员通过持续集成、持续部署             [10] 等自动化过程相互协作,共同解决软件生命周期中遇到的各种问题.有研
                 究在调查国内 DevOps 应用现状后表明:在企业中应用 DevOps,能够显著提高 IT 服务能力                     [11] ,为企业创造出巨
                 大的市场收益.DORA 的 2019 年度 DevOps 年度调查技术报告            [12] 也给出预测:未来几年,DevOps 团队数量将会
                 继续呈现增长趋势.
                    DevOps 为企业带来了高频率的发布和部署,例如:Facebook 公司能够在一天内完成高达 500 次的部署上
                 线 [13] ;Microsoft 的架构师 Fesenko 也表示,应用 DevOps 能够极大程度地缩短部署所需时间           [14] .但在这种高速的
                 开发模式下,软件安全通常难以得到保障              [15,16] .一旦软件中的安全漏洞被黑客发现并加以利用,企业将承受难以
                 估量的损失.例如,2018 年,由于应用程序中存在 22 行不安全的 JavaScript 代码,英国航空公司遭受到黑客的恶意
                 攻击,直接导致大约 38 万消费者的个人信息和付款信息被泄露                   [17] ,造成了极其恶劣的影响.因此,在 DevOps 中引
                 入安全实践来保障软件的安全性,已成为各大软件公司的基本共识.
                    为了给软件安全开发提供必要的指导.早在 2006 年,McGraw               [18] 就列举了一些可应用于传统的瀑布开发模
                 式下的安全实践.但不同于传统的瀑布开发模式,DevOps 下的开发节奏更快,迭代周期更短,很多耗时的安全实
                 践将难以适用.为了在 DevOps 模式下实现保障软件安全的目标,企业亟需对传统的安全实践进行改进,或者采
                 用全新的安全实践方法来匹配 DevOps 的开发节奏.
                    合理、正确地集成安全实践,离不开安全团队的全力支持与配合.DevOps 成功打破了开发团队和运维团队
                 之间的沟通壁垒,实现了价值的快速交付              [19] .但在 DevOps 环境下,安全团队与其他团队之间的交流却有待加强.
                 开发和运维团队需要理解安全工作,安全团队也需要为其他团队提供必要的安全指导.为此,DevOps 需要进行
                 相应的拓展,进一步打破安全团队与开发和运维团队之间的交流竖井,进而在企业内部形成人人对安全负责的
                 安全文化.
                    在上述背景下,2012 年,Gartner 研究员 MacDonald 提出了安全 DevOps 的相关概念,即 DevSecOps.他指出
                 DevOps 在安全方面存在缺失       [20] ,并提出在 DevOps 开发模式中融入与之速度相匹配的安全控制方法,以保障产
                 品的开发过程和交付质量.DevSecOps 的出现,极大地丰富了 DevOps 理论体系,为在 DevOps 开发模式下解决安
                 全问题提供了新的解决思路和实践方式.通过在整个软件生命周期的全阶段中集成安全实践,实现了 DevOps
                 开发节奏下的持续安全.2017 年,RSA 会议(https://www.rsaconference.com/usa/2017)首次为 DevSecOps 设置了专
                 门的议题和讨论会,DevSecOps 也被提升到前所未有的高度,并在国际上掀起了对 DevSecOps 的研究浪潮.在这
                 种研究氛围下,DevSecOps 的理论研究和实际应用得到了迅速发展,并取得诸多成果.例如,Myrbakken 等人                         [21] 从
                 定义、特征、益处和挑战这四个方面初步介绍了 DevSecOps;Prates 等人                [22] 着重对 DevSecOps 中的度量指标进
                 行了深入研究.
                    然而,国内对 DevSecOps 这一重要理论的认知基本停留在空白阶段,尽管国内已经有部分研究者注意到
   38   39   40   41   42   43   44   45   46   47   48