报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

小米集团的 DevSecOps 实践

  • 2020-12-01
  • 本文字数:3637 字

    阅读完需:约 12 分钟

小米集团的DevSecOps实践

多年来,软件开发以及其引发的软件安全问题总是相生相伴。最近几年,国内有越来越多的软件开发团队和企业开始践行 DevOps 的研发模式。随着 DevOps 的发展,研发安全保障的思维和技术也在不断演化发展,其中一个重要的思想就是 DevSecOps。什么是 DevSecOps?它的价值是什么?DevSecOps 怎样在企业落地?......针对这些问题,InfoQ 记者采访了小米集团信息安全与隐私部负责人王书魁。


据悉,王书魁有 13 年的安全从业经验,于 2016 年加入小米集团,一直都在参与小米集团整个安全体系的建立。


“人人为安全负责”的 DevSecOps 理念


众所周知,在传统的安全流程中,开发团队负责价值交付,运维团队负责可用性保障,安全团队负责安全保障。但是,这个流程存在一些问题:安全人员与研发人员是割裂的、相互独立的,有时甚至是相互对立和冲突的。


王书魁说:“很多时候,业务会觉得安全在找业务的麻烦,安全觉得业务对安全不重视,安全与业务大部分时间在扯皮,这导致安全风险的闭环管理时间周期长、成本高。“


并且,随着业务容器技术、无服务器技术的发展,业务的研发周期和功能迭代频率越来越快,而安全能力的滞后性则越来越明显。


他认为,企业需要一开始就考虑应用和基础架构的安全性,同时在安全上做到最大程度的左移,以及通过合适的工具来实现安全自动化,将业务研发资源、运维资源做到和安全能力的融合。


DevSecOps 作为 DevOps 的延伸,在保证企业高效研发效能的前提下,将安全引入进来,作为整个企业所有成员的责任,贯穿到整个业务生命周期中。它改变了传统安全是安全团队职责的现状,践行“人人为安全负责”的理念来建立整个安全体系。


在王书魁看来,安全的宗旨始终为业务服务,帮助业务变得更安全。


在 DevOps 中,安全无法很好地融入进去,它会被边缘化,甚至阻碍业务的发展,降低业务安全性。而 DevSecOps 则进一步加强研发、运维、安全之间的沟通交流,加上整合高自动化的工具,将安全工作融入到研发体系内,把安全属性嵌入到整条流水线,以此在保证业务快速发展的同时保障其安全性。


DevSecOps 的目标是解决业务、安全、运维之间的冲突和矛盾,让大家意识到安全是每个人的责任。并且,通过安全左移、安全自动化能力,将安全融入到业务的每个环节中,让安全成为业务的一个重要属性。


据他介绍,DevSecOps 有三个最重要的因素:人、流程、技术。人是一切问题的根本,也是所有工作的起点,同时也是最难的因素,人是有自私性的。在研发流程中增加安全因素,隐形地提高了研发成本。研发不单要考虑功能的正常,还要保证安全性编码不存在安全问题,同样针对运维人员也是如此。


在制度流程方面,业务版本控制、CI/CD、服务器运维流程等已经形成,这都需要对现有的流程制度进行改变,增强不同团队的协作。“在人员因素和流程制度都没问题的前提下,技术来保证 DevSecOps 的具体实现,构建更安全的工具链,实现安全自动化、流程闭环化等。”


SDL 和 DevSecOps


在传统基于瀑布和敏捷开发的研发模式下,诞生了很多软件安全开发的管理理论方法,比如 BSIMM、SAMM 等。其中,一个行之有效且大量被 IT/互联网行业使用的最佳安全实践是安全开发生命周期,即 SDL,英文全称为 Security Development Lifecycle。



微软 SDL 安全活动简图

但是,虽然企业采用传统的 SDL 方式管控多年,但是入侵和数据泄露依然层出不穷。


在王书魁看来,SDL 需要贯穿整个研发流程,从需求分析、设计、编码、测试、维护等每个环节都需要安全人员的参与,对安全有高依赖性。企业想要做好 SDL,不仅要在安全上有较大的投入,而且需要企业的安全团队有一定的规模和实力。这些也最终决定企业 SDL 的成熟度。


在传统基于瀑布模型的开发体系中,SDL 比较适用;当企业变成敏捷模型时,尤其是 DevOps,整个研发过程会很灵活,研发效能得到极大提升。这个时候,SDL 如果不能很好地做出改变,就会影响效率,甚至导致安全风险增加,阻碍业务的发展。


某种意义上,SDL 本质上是减少企业中安全风险的一种手段,它自身并不能杜绝漏洞的产生,加上企业对 SDL 的理解各有不同,因此在企业的落地也会千差万别,导致企业的安全能力参差不齐。所以,SDL 并不能解决企业的所有安全风险。


相比 SDL 的瀑布模型,DevSecOps 更偏向敏捷模型,业务不再是开发完成后进行安全测试,研发、测试和部署是同时进行。在 DevSecOps 中,责任不再是安全团队兜底,安全成为每个人的责任,安全柔性嵌入到开发及运维流程中,安全自动化能力的提升解决了人员成本过高的问题,人更趋向于运营方面,处理反馈流程中遇到的问题。此外,DevSecOps 更适用于周期短、迭代快的互联网业务。


小米集团的 DevSecOps 实践过程


2012 年,小米安全团队成立之初,就参考 SDL 的方法来建立自己的安全体系。随着业务的不断发展,原有的 SDL 已经无法满足安全以及业务团队的需求。而小米安全团队也开始研发和沉淀各类自动化安全系统。


王书魁表示,“在整个安全演变过程中,我们已经具备一定的 DevSecOps 雏形,只是最开始并不清楚这就是 DevSecOps 的一部分。”


在尝试 DevSecOps 前,小米的安全体系面临不少挑战:业务发展循序,安全人员人手不足,安全人员大量时间处于救火状态,疲于应付业务的安全漏洞、处理业务中发现的安全问题。


2018 年,小米正式以 DevSecOps 为指导原则对安全体系进行升级。一方面,他们想解决安全人员人手不足,并改变业务与安全对立的局面;另一方面,通过 DevSecOps 推动内部资产的梳理和统一业务的研发标准以及上线部署流程。



DevSecOps 的实施前期,他们重点提高自动化的能力,包括资源发现和管理、入侵检测和对抗,同时不断优化安全流程制度。


资源发现和管理上,将运维资源与安全扫描打通,做到新资产的监控和扫描、所有资产做到 7x24 小时的全自动扫描,同步对相关运维日志进行监控,提升感知能力。


安全流程上,建立安全 BP 制度,安全 BP 将新业务上线安全评估测试纳入到对业务的安全考核中,强制业务在方案设计、业务研发过程中遵循安全标准进行,通过安全培训、安全意识宣传贯彻等多个方式让业务意识到安全是每个人的责任。安全在业务中介入越早,它对业务的侵入性越低,逐渐改变业务和安全对立的局面。


在工具上,小米大部分 DevSecOps 工具是通过自研完成的。王书魁说:“其好处是能更好地和业务、运维系统进行融合,能更大程度上完成自动化能力建设。好的 DevSecOps 工具应该能很大程度上实现安全的自动化能力,对业务的侵入性小。在功能上,它需要具备数据的分析展示能力,可以更好地为安全运营人员提供重要核心的数据支持。在安全检测方面,安全问题的误报要低,规则可定制化。”


在组织上,小米很早就成立了集团层面的安全与隐私委员会,并由小米集团副总裁崔宝秋担任委员会主席,小米首席安全官、云平台总经理陈洋担任副主席,由上至下推动安全体系的建设。据他介绍,针对每个业务部门的安全,安全部都有相应的安全 BP 进行对接,实施和开展具体的安全工作。业务部门有专门的安全工作组成员与安全部门对接。


DevSecOps 的落地过程中,他们面临的最大挑战是人的问题。实际上,DevSecOps 需要“人人为安全负责”,王书魁坦承,“针对这一变化,不是所有人都能接受。有的人会理所当然的认为,安全就是安全团队的责任。”


如何解决这个问题?他们的做法是:


  • 通过组织层面成立安全 BP 工作组,来强化安全团队和业务团队的沟通。基于安全 BP,让安全更加深入到业务中,更了解业务的流程和制定对应的安全方案,让业务真正感受到安全在帮助业务;

  • 在指标和考核上,他们会关注漏洞按时修复率。为不同风险等级漏洞定义不同的修复周期,当漏洞出现需要对应工程师在修复周期内完成修复,而不是用漏洞数量等指标来考核,希望能够和业务站在一起,有助于提升安全意识和能力;

  • 在安全意识宣传和安全培训方面,他们也做了很多工作,不仅有面向全体员工的基础培训,而且还有针对不同业务或不同角色的专项培训;

  • 在技术上,他们为业务提供了多种自动化的系统或工具、安全 SDK,还会和业务的流程结合起来,让安全融入到业务流程中,同时避免人工过度参与阻碍业务流程;


强调责任共担。无论在任何时候,安全都不是业务的对立面。所有的安全风险,安全始终和业务团队站在一起,共同解决。


王书魁说:“通过上述一系列的工作,让每个人对安全都有新的认识,让他们意识到安全需要每个工程师的参与。”


事实上,DevSecOps 在小米集团的落地,不仅让安全工作变得容易开展,业务对安全的重视程度也不断提高,业务和安全不再是对立的,而是相互合作。并且,安全不再处于救火的状态,安全问题可以得到更早发现。最后,由于安全的左移,业务的安全性得到很大程度的提高,业务不再需要更改最初的设计架构来修复安全问题,业务修复漏洞的周期变短。


目前,小米集团在 DevSecOps 领域正在做一些新尝试。


DevSecOps 实践中,不仅涉及技术人员,而且还需要很多非技术人员的参与,“需要将大家的优势转化成一个整体,非技术人员要具备很好的事件运营思维,而这是技术人员所欠缺的“。


他们正尝试融合技术和非技术安全人员的能力,推动整个体系建设的闭环,并且尝试将 DevSecOps 体系中的能力数据化客观展示,从而反映整个 DevSecOps 体系的状况。


2020-12-01 10:0511941
用户头像
万佳 前InfoQ编辑

发布了 677 篇内容, 共 367.2 次阅读, 收获喜欢 1802 次。

关注

评论 1 条评论

发布
用户头像
明年是安全的大年. 信我!
2020-12-07 14:01
回复
没有更多了
发现更多内容

SAP Emarsys 和 SAP Spartacus 的集成

汪子熙

SAP Spartacus 思爱普 三周年连更 Emarsys

Java线程中的wait、notify和notifyAll解析

共饮一杯无

Java 多线程 三周年连更

基于TCP协议的Socket通信

芯动大师

TCP协议 Socket请求 三周年连更

华为云网站安全解决方案:守护企业数字化转型之路,提升业务效率与安全

YG科技

数据库、

华为云网站安全解决方案:全面保障企业网络安全,助力业务稳定高效运行

YG科技

开源趣事~记给OpenHarmony提PR的那些事

Bob

开源 Open Harmony

2023-04-18:ffmpeg中的hw_decode.c的功能是通过使用显卡硬件加速器(如 NVIDIA CUDA、Intel Quick Sync Video 等)对视频进行解码,从而提高解码效

福大大架构师每日一题

golang 音视频 ffmpeg 福大大

一文读懂 Spring Bean 的生命周期

老周聊架构

三周年连更

在Mac上快速体验AI作画

IT蜗壳-Tango

三周年连更

华为云网站安全解决方案:守护您的网站,让安全无忧

YG科技

尚能饭否|技术越来越新,我对老朋友jQuery还是一如既往热爱

浅羽技术

jquery 前端 Web 框架 三周年连更

DAYU200关闭自动息屏的几种方式

坚果

OpenHarmony 三周年连更

“程序员”未来会失业吗 | 社区征文

BROKEN

三周年征文

使用 docker manifest 构建跨平台镜像

江湖十年

Docker Desktop docker image docker build Docker 镜像

跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

No Silver Bullet

uni-app ios 跨平台应用开发 三周年连更 web-view

HTTP事务的时延

阿泽🧸

三周年连更 HTTP时延

中小企业如何保障网络安全?用了这么多项目华为云其实还不错!

YG科技

IPv6域名软件

穿过生命散发芬芳

ipv6 三周年连更

项目讲解之常见安全漏洞

越长大越悲伤

Java Web 安全

华为云网站安全解决方案:中小型企业的云上云下安全守护专家

YG科技

一文掌握 Go fmt 标准库常用方法的使用

陈明勇

Go golang 三周年连更 输入输出 fmt

华为云:网络安全愈发重要,企业该如何保障自身业务安全?

YG科技

灵活应用Nginx Map:实战经验与实用方法

小毛驴的烂笔头

nginx linux运维 Nginx实践

华为云网站安全解决方案助力客户——构建风险全面可控的网站安全架构

YG科技

Go语言并发编程利器(一):如何正确使用Channel

Jack

热爱所有热爱

闫同学

三周年连更

动态资源技术JSP|Java与Html的美好相遇

浅羽技术

Java html 服务端 jsp 三周年连更

文心一言 VS chatgpt (11)-- 算法导论2.3 7题 3.1 4~5题

福大大架构师每日一题

福大大 ChatGPT 文心一言

IT分享丨我是如何利用华为云网站安全解决方案帮助中小型企业实现IT安全

YG科技

灵活应用Nginx Rewrite:实战经验与实用方法

小毛驴的烂笔头

nginx linux运维

Django笔记十之values_list指定字段取值及distinct去重处理

Hunter熊

Python django distinct values

小米集团的DevSecOps实践_安全_万佳_InfoQ精选文章