如何破解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市场未来还是极具成长性的。

极客网企业会员

免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。

2021-07-19
如何破解DevSecOps实施三大挑战?
如何破解DevSecOps实施三大挑战?

长按扫码 阅读全文