1.2.2 影响DevSecOps发展的关键因素

从2012年DevSecOps概念的提出,到2022年DevSecOps在全球范围内开始广泛实践,整整经历了十年时间。这其中,诸多因素影响着DevSecOps的发展,主要有以下三个方面。

1. 从安全体系/模型来看

在业界普遍的认知里是把DevSecOps放在应用安全的范畴。在应用安全领域,最早的企业是微软,它推出了业界广为人知的SDL模型,可以说,在应用安全方向乃至整个网络安全领域,微软是为业界做出杰出贡献的企业。在很长一段时间内,软件工程的开发模型是以瀑布模型为主,当SDL在国内企业真正落地的时候,通常会碰到很多问题。例如,整个体系太复杂、笨重;威胁建模很少有企业真正做起来。所以当敏捷开发模型发展起来之后,微软又发布了SDL的敏捷版本,以适应开发模式由瀑布模型向敏捷的转变。

在这个过程中,对于软件安全也出现了一些其他模型,如Open SAMM、BISMM,这两个模型可以用于指导应用安全的开展,但它们更偏重于评估软件安全的成熟度。从上述这些模型的出现和模型的适应范围,读者可以明白安全模型的使用是与研发模型相关的,所以当DevOps发展起来后,与之相适应的DevSecOps模型也随之发展起来就比较好理解了。

2. 从产业发展来看

整个IT产业的发展也就是最近60年的事情,从IT产业一开始的发展到今天的全面互联网化,走的是两条路。如果把互联网比作城市,传统行业比作农村,一条路是从城市走向农村,另一条路是从农村走向城市。

从城市走向农村,是指互联网行业向传统行业渗透的过程,是主动的。例如,互联网早期的产品主要是邮箱、BBS、搜索引擎、新闻网站等,这种形态下的产品研发参与人员主要是互联网技术公司。到电商行业做到全国皆知时,其产品研发人员主要集中在电商行业。到后来的金融、保险、打车、外卖等行业,这段时期,国内的互联网一直在高速增长,在慢慢进入传统行业的地盘。在快速增长、行业渗透的背景下,出现了第二条路,从农村走向城市。

从农村走向城市是指传统行业的互联网化,这条路被动且增长很慢。当社会发展到“互联网+”时期之后,从农村走向城市这条路开始发力,并高速增长。在我们身边,越来越多的传统企业在互联网化,从最开始的家电行业,到现在很多关乎民生的行业,如教育、医疗、汽车等。这些传统企业在业务演进过程中,纷纷建立了自己的软件研发中心,开始变得跟互联网企业一样。当这两条路走到交叉点时,是生产模式的拐点,整个互联网增速变缓,所有的人都开始向内部要增量,这时候提出的DevSecOps理念更契合企业管理者的诉求,依托DevSecOps的发展,同时解决既要安全又要增量的问题。

3. 从技术发展来看

在技术发展上,现在的互联网人并不比以前的人更聪明,现在能想到的东西,在很早之前就已经有人想到了,只是那个时候在技术上不适合做DevSecOps。技术发展到了今天,再提出DevSecOps则更容易落地。

首先是研发能力成熟度。从瀑布模型→敏捷开发→DevOps的发展路径,是业务发展不断改进、不断优化选择的结果。如果是在瀑布模型的开发模式下提倡DevOps的一套理念,则很难落地。

其次是研发管道的成熟。早期从事软件开发时,使用的代码管理软件仅仅是SVN+ Harvest,很多流程化的管理是依赖人去操作的;后来慢慢变成了Git+Hudson,这时候已经有了自动化构建、自动化部署的雏形,现在使用Git+GitLab+Jekins,周边生态的成熟使得整个开发、构建的CI/CD流程打通了,这是DevSecOps得以发展的重要一点。

最后是自动化运维技术的发展,尤其是虚拟化和容器化等运维技术成熟。例如,OpenStack、Docker、K8s这些基础设施虚拟化、容器化及编排软件的产生,使得自动化运维的门槛变得更低,进一步利于DevSecOps的落地。

正是这三方面的原因在过去很长一段时间内,影响和制约着DevSecOps的发展。现在,对于大型企业来说,通过研发管道和云基础设施,可以顺利完成DevSecOps的落地;对于小公司来说,依赖于公有云(如AWS、Azure、阿里云),通过平台能力和公开API,也可以快速地完成DevSecOps的落地。