原标题:如何破解DevSecOps实施三大挑战?
随着DevOps的普及,DevSecOps也开始被一些企业关注。根据GitLab发布的2021年全球DevSecOps年度调查报告,36%的受访者团队已经使用了DevOps或者DevSecOps开发软件,尤其是那些迁往云平台的新兴应用,DevSecOps的应用得到更多普及机会。
Synopsys发布的《2020年DevSecOps实践和开源管理报告》也表明,DevSecOps在全球范围内迅速增长,总计63%的受访者表示他们正在将一些DevSecOps活动融入其软件开发计划中。
尽管DevSecOps已经成为DevOps生态当中的一波热潮,但当企业实际推行DevSecOps时,情况往往变得颇为棘手。DevSecOps并不能“一键启动”,它的落地需要一系列工具与实践的协同支持。
DevSecOps与DevOps的区别
2012年,Gartner首次提出DevSecOps理念。四年后,它发布了一份名为《DevSecOps: How toSeamlessly integrate Security into DevOps》的报告。
这份报告的核心理念是:安全是全体IT团队所有成员的责任,要贯穿到业务生命周期的每一个环节。对应DevOps快速交付和灵活响应变化,DevSecOps的价值是在不牺牲安全性的前提下,快速落地和实施安全。
除了强调每个人都对安全负责,DevSecOps还强调安全前置,以及要柔和的、嵌入到企业现有的开发流程体系。
从字面上看,DevSecOps与DevOps的差别是前者比后者多了“Sec(Security)”上。实际上,这两者之间的差别也正是体现在“安全”上。简单地说,把Security纳入到DevOps的体系之中,人人都是安全员,这就是DevSecOps。
众所周知,DevOps颠覆了传统的瀑布流模式,它打通了开发和运维之间联系,让两者顺利进行沟通、协作与整合,再通过自动化和持续迭代、持续集成的敏捷,实现了软件的快速迭代和交付。
但这个流程其实和安全关系不大,软件的安全性评估还是按照传统的流程,处于软件交付的最后阶段。这就导致软件安全检查和评估要么被忽略,或者软件被迫延期交付,使得DevOps的效果大打折扣。
DevSecOps的目的就是要设法改变这一现状。DevSecOps通过在DevOps流程的每个阶段或检查点嵌入安全性检查来消除DevOps和安全之间的障碍,从而更快、更安全地生成高质量的代码。
DevSecOps的优势在于,提高软件安全性的同时,提高开发团队的开发效率,缩短交付时间,让产品尽快上市。
DevSecOps落地充满挑战
DevSecOps“既要快速交付代码,又要保障代码安全”,这听起来似乎是种相互矛盾的要求。正因如此,DevSecOps的落地始终伴随着一系列挑战。
阻碍大部分企业转向DevSecOps的头号挑战,来自文化层面的抵触情绪,毕竟人更喜欢待在自己熟悉的舒适区内。常有人认为安全保障会拖慢软件开发工作速度、甚至阻碍创新。
同时,DevSecOps强调将开发人员与安全专家统一起来,共同建立起协作环境。但这两大团队间总是存在一定程度的摩擦,甚至认定对方总在跟自己作对。
为了满足业务需求,开发人员希望不断加快代码的交付速度。但是安全团队的核心重点在于保障代码安全,而这两个截然不同的目标导致团队之间难以彼此理解、协同工作。
另外,安全人员的不足也可能影响DevSecOps的落地。根据Cybersecurity Ventures发布的报告,到2021年全球网络安全职位空缺将多达350万个。
由此可以推断,尽管安全漏洞与攻击事件一直在不断增加,但市场上仍然缺乏充足的网络安全工程师人才。
DevSecOps落地的另一个挑战,是自动化工具还需要优化和丰富。和DevOps一样,DevSecOps也非常依赖自动化的工具,需要借助工具来构建脚本、将源代码进行编译、进行软件漏洞扫描。
总体而言,DevSecOps落地有三个关键点:人和文化、流程、技术。
在人和文化方面,DevSecOps 强调的是人人参与安全,人人为安全负责,安全是大家的事。
在流程方面,要更多地考虑整合流程,建立相关安全流程,加强不同团队间的协作。同时,安全需要低入侵、柔和的嵌入开发和运维流程。
在技术方面,通过构建安全工具链,实现更多的自动化安全检测。
DevSecOps实践有章可循
既然DevSecOps的实施是一个复杂的流程,那么是否有方法能够将DevSecOps落地?
虽然还没有任何具体的、连续的路线图式步骤设计,但可以尝试将DevSecOps流程拆解为几个具体步骤。
一切以规划为起点
规划的战略水平与简洁程度将直接决定最终实施结果。因此,单靠对功能特性的描述还远远不够,企业还需要建立起测试验收标准、用户设计以及威胁模型。
开发环节
团队应首先对现有实践的成熟度开展评估。在此阶段,可以通过多个来源收集资源以作为路线指导,也可以建立起代码审查系统。由此支撑起的统一架构,将成为DevSecOps后期成功的重要基础。
构建环节
自动化构建工具无疑是这一阶段中绝对的主角。利用此类工具,我们可以构建脚本、将源代码组合为机器码等。自动化构建工具不仅提供多种强大的功能、丰富的插件库,还具备多种易于上手的用户界面,其中一部分甚至能够自动检测易受攻击的库并及时加以替换。
DevSecOps工具集拥有广泛的覆盖范围,包括源代码版本控制、构建自动化、测试自动化、安全验证、性能测试、配置管理等等,甚至可能进一步扩展至优先级划分、问题跟踪与团队协作式项目管理系统等相对细化的领域。
测试环节
通过稳定可靠的测试实践,将强大的自动化测试框架全面引入管道当中。部署工作通常通过IaC工具进行,由其自动执行流程并加快软件交付速度。
运维环节
运营维护无疑是运营团队的一项常规职能。考虑到零日漏洞可能引发的巨大威胁,运营团队必须给予关注。
此外,运营团队还需要重视人为错误蔓延,包括使用DevSecOps通过IaC工具快速高效地保护企业自有基础设施。同时,使用强大且持续性的监控工具,借此保证安全系统能够按预期形式运行。
以上只是DevSecOps实施中的一些基础步骤。根据项目的具体规模与复杂性,路线图可能还需要涵盖另外一些特定附加步骤。
结语
尽管DevSecOps在实施落地上充满着挑战,但DevSecOps的体系正日趋成熟,相关方法论、技术与实践经验都有了明显的提升,配套工具链技术也日趋完善。随着DevSecOps在国内大型互联网公司的落地实践,让大众对DevSecOps也有了更深的理解和认识。
从需求层面看,DevSecOps市场正逐步进入成长期。软件开发商、大型互联网厂商、银行和具有一定规模和技术实力、自建IT系统的大型集团性企事业单位,是目前DevSecOps市场中主要的三类客户。以软件投入金额3%-5%的比例估算安全投入,DevSecOps市场未来还是极具成长性的。
特别声明:本文为合作媒体授权DoNews专栏转载,文章版权归原作者及原出处所有。文章系作者个人观点,不代表DoNews专栏的立场,转载请联系原作者及原出处获取授权。