不考虑安全的数字化转型都是伪命题
促进数字经济发展。促进数字经济发展。加强数字中国建设整体布局。建设数字信息基础设施,推进5G规模化应用,促进产业数字化转型,发展智慧城市、数字乡村。加快发展工业互联网,培育壮大集成电路、人工智能等数字产业,提升关键软硬件技术创新和供给能力。完善数字经济治理,释放数据要素潜力,更好赋能经济发展、丰富人民生活”。
以数字化为重要抓手的数字经济已经发展成为一个重要的经济形态,数字经济也被连续多年写入政府工作报告,在刚过去的 2022 年《政府工作报告中》,数字经济被再次提及(如上),这足以看出软件在推进企业数字化转型,加快数字经济发展中起着重要作用。
软件:数字化与数字经济发展重要推动力
有数据表明中国软件产业产值每增加 1%,数字经济产值便会增加 0.511241%,说明我国软件产业的发展对数字经济增长具有比较显著的促进作用。因此,在国务院发布的《“十四五”数字经济发展规划》中将软件和信息技术服务业规模增长定为“十四五”期间数字经济发展的主要指标,并明确指出软件和信息技术服务业规模要从 2020 年的 8.16 万亿元增长到 2025 年的 14 万亿元。而软件的安全能力将是数字经济高速发展过程中的有力保障,安全也将是软件的重要生命线。
安全:软件的生命线
安全就是金钱
安全问题为企业带来多方面的损失,最直接的经济损失,诸如交付勒索赎金,缴纳监管部门的处罚等;其他间接的损失诸如法务风险、品牌影响,这些问题很有可能导致客户的流失,市场份额的缩小,最终也转化到了经济损失上,所以安全就是金钱。
2021 年,美国最大的保险公司之一 CNA Financial,在其 IT 系统遭受攻击后,向勒索软件组织支付了 4000 万美元;
2021 年 12 月,沃尔玛网络系统存在安全漏洞,未及时处置,被深圳市公安局福田分局等依据相关规定决定给予沃尔玛(中国)投资有限公司警告的行政处罚,并责令改正;
2020 年的 SolarWinds 供应链攻击问题,波及影响了到了很多重量级客户,对其主体公司的声誉造成了很大的影响;
在数字化时代,数据就是核心资产,软件被用来产生数据、分析数据、挖掘数据,最终让数据产生价值,软件安全将直接影响数据安全,数据的不安全则直接导致重大经济损失。根据 IBM 发布的《数据泄漏成本报告》显示,数据泄漏在各行各业都存在,由于数据泄漏导致的企业需要为此承受百万美元的损失。
软件安全之怪现状
愈发频发的安全问题
-
2022 年 3 月,三星电子遭受黑客攻击,导致大量机密信息遭泄漏;
-
2022 年 2 月,英伟达发现遭受黑客攻击,导致重要信息被盗;
-
2021 年末, log4j 漏洞波及全球,至今余威尚在;
-
2020 年的 SolarWinds 软件供应链安全问题,影响波及众多大厂,其中不乏思科、英特尔等;
日益严峻的安全形势
开源的迅速崛起以及至今依旧存在的新冠疫情,让软件的安全形势依旧不容乐观:
-
Sonatype 发布的《2021 年软件供应链状态》报告显示,针对开源供应链的攻击增长了 650%;
-
Anchore 发布的《Anchore 2021 年软件供应链安全报告》显示,64% 的企业在过去一年遭受了软件供应链攻击;
-
Synopsys 发布的《2021 年开源安全和风险分析报告》显示,84% 的样本代码库包含至少一个漏洞,而每个库的平均漏洞数量为 158;
-
Contrast 发布的《DevSecOps 状态报告》显示,79% 的受访者表示他们的开发环境上平均有 20+ 漏洞,生产环境上至少有 4 个漏洞;
更加严格的安全监管
-
中国数据治理法律领域的“三驾马车”,《数据安全法》、《个人信息保护法》以及《网络安全法》已经生效并实施。
-
已经处罚过众多国际大厂的《通用数据保护条例》(GDPR),威力生猛;
-
美国总统签署了《加强国家网络安全的行政命令》以加强网络网络安全和保护联邦政府网络;
仍旧存在诸多误区的安全意识
-
甩锅:安全是安全团队的事情;
-
狭隘:被黑客攻击勒索才是安全问题范畴,其他一切(配置错误、敏感信息泄漏等)都是不小心;
-
侥幸:全世界那么多软件、软件开发者,攻击怎么可能针对我的软件,我怎么可能成为那个倒霉蛋;
-
短视:安全需要招人、买工具、搭体系,成本高,但是看不到收益;
-
盲目自信:这么多年,从来没有遭受过攻击;
软件安全的破局之道:DevSecOps
DevSecOps 将 DevOps 做了扩展和延伸,目的是将安全融入到软件开发生命周期内,全方位保障应用程序安全,从而达到在快速交付高质量软件的同时还有安全性的保障。DevSecOps 有三个核心要素:安全左移、持续自动化、人人为安全。
DevSecOps 的核心要素
- 安全左移(shift left)
在传统软件开发的时候(典型如瀑布式开发),安全介入的时间比较晚,一般在软件开发生命周期的测试阶段,甚至更靠后,这时候更“向右”。在半年甚至一年才发布一次的情况下,这种安全处理方式是业界普遍的做法。但随着用户需求的多样化、敏捷化,软件发布的频率必须要提高才能响应用户日益增常的需求,在这种情况下,软件的敏捷开发逐渐盛行起来,月发布、周发布、甚至天发布都是很稀松平常的了,在这种发布频率下,还要保持软件的安全性,就给软件开发带来了很大的挑战。
应对这种挑战的方法就是让安全早介入,在编码甚至计划阶段就介入(诸如威胁建模),这就形成了安全“左移”。左右是针对软件开发生命周期而言,越往左,越靠近开发侧。
左移的背后有一个安全问题修复成本与软件研发生命周期关系的逻辑:
可以看出在软件开发生命周期早期(计划、编码)阶段,发现安全问题,修复的成本是很低的,到了生产线上则修复成本是陡升的。因此,安全“左移“的最终目的是尽可能在软件开发的早期发现安全问题,以便快速采取修复措施,同时降低成本。这和新冠疫情的早发现、早隔离、早治疗有异曲同工之妙。
- 持续自动化
安全测试方法众多(SCA、SAST、DAST 等),覆盖软件开发生命全周期,如果将这些安全防护手段以自动化的方式运行,有两点优势:一,减少研发、测试等人员的工作量,减少重复的体力劳动,得以让他们把更多的精力放在业务创新与赋能上;二,持续自动化能够针对每次代码变更都做到全方位安全防护,让每一次代码变更都以安全方式交付。
最常见也是最通用的方法就是将安全测试融入到 CI/CD Pipeline 里面。
- 人人为安全
Patrick 在 2009 年的时候提出了 DevOps。大家的常规认知就是把 Dev 与 Ops 结合起来即可,但是在 2020 年伦敦的 QCon 上提到了 DevOps 已经不仅仅是研发和运维的事情了(DevOps beyond Development and Operations),软件加速交付的挑战、风险与瓶颈也有可能来自于其他团队,诸如市场,财务,法务等等。对于安全来讲也是,DevSecOps 不仅仅是 Dev、Sec、Ops 三个团队的融合,而是所有团队、所有人都要为软件的安全负责,共同消除安全所带来的风险,最终做到软件的安全、快速交付。
DevSecOps 的落地指南
可以遵循“PPT”模型来落地 DevSecOps,即人(People)、流程(Process)以及工具(Tool):
-
人:坚持以人为本。人是最关键、最核心的生产要素。这里面的人不仅仅指研发、运维、安全人员,应该包含所有与软件研发相关的人。在以人为本的基础上,进行组织架构转变、公司(团队)文化打造,最终达到提高人员工作效率、改善工作体验的目的;
-
流程:构建适宜流程。流程应该尽量做到标准化、自动化、透明化,而且要让工作人员对流程达成一定共识,以便大家都能够遵循流程。比如 CI/CD 中要嵌入哪些安全手段、在出现安全问题是,CI/CD Pipeline 应该终止,安全漏洞的报告要透明化,漏洞追踪要可视化,明确漏洞修复的标准等等。
-
工具:选择合适的工具。工具是 DevSecOps 落地实践的最终支撑点。与安全相关的工具非常多,针对不同的开发阶段,有开源也有商业版本。没有一款工具能够搞定所有的安全问题,安全的全方位保障往往是多种工具链的结合,选择能够和现有研发流程无缝集成、研发人员使用起来方便、部门之间协作顺畅是非常重要的。
化简为繁,万法归一:极狐GitLab DevSecOps
- 万法归一:一个平台,端到端的安全能力
极狐GitLab的 DevSecOps 功能覆盖软件全生命周期,提供从计划到上线的的全流程安全保障能力,完成从软件静态到动态的安全护航。
- 便捷易用:开箱即用
极狐GitLab DevSecOps 功能开箱即用,用户无需安装配置第三方工具,无需额外学习编程语言,研发、测试、运维均可快速上手开始使用。
- 持续安全:无缝集成极狐GitLab CI/CD
与极狐GitLab CI/CD 能够无缝集成,针对每一次代码变更都执行完整的安全检测,做到真正的安全持续自动化。
- 化繁为简:报告统一展示
多种安全扫描的结果统一展示,打破由多种安全工具单独产生安全报告所带来的安全信息孤岛,能够更加方便的筛选出真正具有参考价值的安全漏洞数据。
- 修复闭环:使用极狐GitLab workflow
当有任何代码变更时(创建 MR),嵌入 CI/CD Pipeline 中的安全检测手段被触发,相应的安全扫描结果会在 CI/CD 流程结束时展现在 MR 中,漏洞的级别(高中低)、来源(来自 SAST 还是 DAST 等)均一览无余,帮助研发在第一时间找到安全问题,进行及时修复,及时防止了有问题的代码被合入主分支,从而“感染”主分支的代码。
- 拒绝背锅:漏洞修复,有据可依,有迹可查
一旦在 MR 中看到安全问题,可以直接点击安全漏洞,在查看详情的过程中,直接创建 Issue 来对安全问题进行追踪,在安全问题修复之后,关闭 Issue。在后期的复盘中,可以通过直接查看 Issue 来找到相应的负责人、修复情况等。
软件犹如人生,安全好比保险,买一份保险(安全),保一生平安(交付)。越早购买保险(早介入),保费越少(成本少),保障越好(效果好),属于未雨绸缪;越晚购买(晚介入),保费越高(成本高),保障越差(效果差),属于亡羊补牢;终生不买(无安全意识),则无任何抵御风险的能力,万一遭遇不幸(被攻击),则回天乏术(game over)。