什么是DevSecOps
DevSecOps是2017年美国RSA大会新出现的一个概念,大会甚至专门为这个概念和方向设置的议题和讨论会。DecSecOps是一种全新的安全理念与模式,即“每个人都对安全负责”,从DecOps的概念延伸和演变而来,其核心理念安全是整个IT团队(包括开发、运维及安全团队)每个人的责任,需要贯穿从开发和运营整个业务生命周期每一个环节才能提供有效保障,通过加强内部安全测试,主动搜寻安全漏洞,及时修复漏洞、控制风险,实现与业务流程的良好整合。来自Garnter研究公司的分析师David认为,当今的 CIO 应该修改 DevOps 的定义,使之包括安全理念变成为 DevSecOps。DevSecOps是糅合了开发、安全及运营理念以创建解决方案的全新方法”。
此次在DecSecOps专题研讨会分享《下一代安全需要你!》的DecSecOps机构总监Shannon Lietz对DevSecOps的概念做了比较细致的解释和说明,她认为DevSecOps是通过初始创建和依据真实有效反馈的持续改进实现产品价值、运维、安全等各方面需求的一种实践,这种实践方式可以更快地完成更安全软件。DevSecOps是一套体系化的方法论,由战略驱动,一套流程与工具支撑,通过开发、运维和安全团队共同努力将安全和合规作为属性嵌入软件。
图1
DevSecOps的背景和意义
笔者认为DevSecOps的出现将对应用及IT基础设施的安全管理产生极其深远的意义,DevSecOps的广泛应用将标志着应用及IT基础设置的安全管理进入到一个全新的时代,将安全作为管理对象的一种属性,从应用和IT基础设施开发开始进行全生命周期的安全管理,构建一个安全属性很高的应用或IT基础设施,而不仅仅是通过安全为应用和IT基础设施提供保障。笔者认为,DevSecOps的应用将彻底改善企业和机构在应用和IT基础设施的安全现状。
过去安全开发跟安全运营总是割裂开,回顾企业和组织机构以往对应用及IT基础设施安全管理的态度和内容,我们可以将其简单地划分为两个阶段——“安全事故管理阶段”和“安全风险与合规管理阶段”。
第一阶段,企业和组织机构对应用和IT基础设施的安全管理聚焦在安全灾害事故管理上,通过快速发现和响应安全灾害事故抑制事故影响面、减少损失。
第二阶段,频繁发生的安全灾害事故促使主管机构、企业和组织机构对应用系统和IT基础设施开始进行安全风险和合规的管理,希望能做到防患于未然。当前,合规和安全风险管控仍然是全世界大多数企业信息安全业务领域的主要的目标。
由于绝大部分企业IT部门会采用开发团队负责价值交付、运维团队负责可用性保障、安全团队负责安全保障的方式完成IT业务的管理,导致大部分企业和机构的安全、开发和运维部门业务目标相互独立、割裂,有时甚至是对立和冲突,最终导致安全风险的闭环管理时间周期长、成本高。要实现安全风险彻底闭环管控,有必须采用DevSecOps的理念,将开发、运维和安全有效整合在一起,做到安全问题,人人有责。
DevSecOps实践的主体内容
DevSecOps的实践可能会颠覆企业现有的IT开发与运营模式,如今DevSecOps有希望让二者展开协作。为了确保能开发出安全性高的应用和IT基础设施,安全领域工作范围需要贯穿开发和运营环节,有可能会颠覆现有的开发和运营的模式。RSA大会DevSecOps研讨专题演讲嘉宾Chris Carlson做了比较详细的介绍。
如图2和图3所示,传统安全运营工作与DevSecOps模式下安全运营工作最核心的区别在于两点:
图2
图3
- 新模式力安全工作前移(Shift Left)。采用安全在软件开发前期介入的方式降低解决安全问题的成本,前期介入的内容包括对开发、维护人员的安全意识培训、安全开发规范的培训、安全需求(非功能需求)的导入、前期的代码审计工作、基于白盒的安全测试、渗透测试等内容。在运营阶段增加的内容与前期开发阶段类似,主要内容集中在对新安全需求实现情况的验证以及软件整体安全评估。IBM的研究人员曾公开过统计数据,在产品的发布以后修复安全问题的成本是在设计阶段解决成本的4到5倍,而在运维阶段修复安全问题其成本将达到甚至超出100倍。虽然在DevSecOps模式中,安全工作环节增加了,但是从软件整个生命周期的开发与维护成本来看,提前发现问题会导致安全成本大幅降低。
- 安全与开发工作的对接。为了避免安全工作(例如:测试与评估、安全策略的部署等)成为开发瓶颈,使得应用系统在最短周期内实现其应有的价值和安全属性。DevSecOps采用快速迭代的开发方式,这就需要实现安全与开发工作实现无缝对接,将安全工作导入现有的开发工作流程和工具中,包括将安全需求导入至统一需求管理流程与工具、安全测试工作与持续集成/持续部署(CI/CD)对接、安全测试结果导入至缺陷管理工具等诸多环节。
而MITRE提出从攻击视角进行协同,MITRE是一家美国非营利性研究机构。他们提出,开发阶段的安全目标是预防导致漏洞的安全问题;运营阶段的安全目标是通过保护已部署系统的基础设施、配置与使用,防止系统出现安全问题。所以,最终目标是使所有的运营软件没有漏洞,彻底安全。安全开发与安全运营的共通之处是都需要了解攻击者攻击软件的方法,这是两者的核心问题。尽管如此,两个领域在抽象化水平和目的等具体需求上各有不同,但又相互协同。安全开发需要从理论上了解攻击者的意图,以全面提高安全,而并非针对单个实例。安全运营需要详细掌握攻击者的具体攻击行为,以识别、了解攻击,预估其影响,规划缓解方案。安全开发提供的是自上而下视角,安全运营则是自下而上视角,两者达到平衡后,每个领域都可以解决自己的需求,同时为另一领域主要关注的问题提供重要输入。
图4
DevSecOps实践的难点
此次RSA大会上,来自甲方、乙方和第三方机构都讲述DevSecOps实践的难点,大致可分成三类问题。
第一类问题是战略与文化的挑战,对传统开发模式和安全运营模式来说,DevSecOps实质上是一种颠覆性的模式变革,其实践的推动首先需要CIO从战略高度推动。第二类是文化与观念转变,实现DevSecOps需要改变过去只有安全人员对安全负责的态度和观念,必须能让开发团队、运维团队和安全团队认识到每个人都需要对安全负责。
第二类问题是人员技能与知识结构的调整,DevSecOps实践需要开发人员、运维人员和安全人员通力合作,能站在对方的视角客观看待问题。具体到开发人员而言,不仅仅需要开发技能,还需要对运维及安全有了解,对运维人员和安全人员也是一样,需要各自扩充不同领域的通用技能与知识。
图5
第三类问题是流程与工具的对接。DevSecOps达到初始目标需要实现快速迭代,在开发和运营的过程上需要高度自动化。开发、运维、安全工作的工具和流程需要无缝对接。这对大多数企业而言,需要是个艰巨的挑战。
图6
DevSecOps在国内外实践的现状与展望
通过此次RSA大会的DevSecOps专题研讨,我们不难发现在海外DevSecOps仍然在初始阶段,各个领域的专家仍在研讨阶段,DevSecOps暂时还没有一个通用化的标准或实践指南,此次交流上也仅有1~2个实践案例进行分享。在国内,虽然DevSecOps仍然是个全新的理念,但是在我国运营商行业、能源行业和金融行业早在2~3年前就提出过三同步要求(同步规划、同步建设、同步运营)并在IT建设项目开始实践。三同步要求与DevSecOps的核心理念在实质上完全相同,我们可以理解在项目实践上其实国内要领先或早于国外。
目前,我国传统企业和互联网企业对互联网的应用水平已经逐步达到世界领先的水平。笔者相信未来在中国由业务驱动的DevSecOps实践会走在欧美甚至世界的前端,引领其发展。
本文转载自:RSA2017浅谈下一代应用及IT基础设施的安全管理模式--DevSecOps | 绿盟科技博客,有少量修改。