您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
DevSecOps的理解与思考
 
 
   次浏览      
 2021-3-1
 
编辑推荐:
文章主要介绍了什么是DevSecOps、DevSecOps中的安全自动化测试(扫描)及用DevSecOps理念来解决第三方组件的漏洞问题 。
本文来自于Freebuf,由火龙果软件Linda编辑推荐。

什么是DevSecOps

“DevSecOps”,一种全新的安全理念与模式,从DevOps的概念延伸和演变而来,其核心理念为安全是整个IT团队(包括开发、运维及安全团队)每个人的责任,需要贯穿从开发到运营整个业务生命周期的每一个环节。

看到这个概念,第一反应是“安全运维”,是不是新瓶装旧酒呢?确实一直以来,不论从主机安全还是到网络安全,很多工作都是安全运维的交集,既涉及到安全,同时也涉及到运维,没有运维足够的支持很多安全工作也比较难开展。但是经过一段时间,发现最初的理解实际比较片面,刚才提到的并不是真正DevSecOps所要传达的理念,DevSecOps的出现是为了改变和优化之前安全工作的一些现状,比如安全测试的孤立性、滞后性、随机性、覆盖性、变更一致性等问题;通过固化流程、加强不同人员协作,通过工具、技术手段将可以自动化、重复性的安全工作融入到研发体系内,让安全属性嵌入到整条流水线。

我目前所能理解的DevSecOps

由于本人知识和经验有限,对DevSecOps的理解可能只停留在比较浅显的认知。

目前我在工作中能真正涉及和可以应用的有两部分,第一块是在资源管理,第二块是在CI/CD这部分,监控告警、日志分析、或者其他内容,怎么应用到DevSecOps中我本人还没有很成型的思路。

资源管理这块,我们用到的,主要是依赖于YRDCMDB系统“银河”来实现的,CMDB里存储了宜人贷的所有主机、IP、域名、集群、应用等所有软硬件信息,这样在进行安全检查、安全扫描的时候,就可以直接调用银河来获取完整的信息、或者直接调用银河来执行一些简单的扫描任务。

宜人贷端口监控从银河获取IP信息完成对应的端口扫描。

基于资产管理可以更快速、准确的知道新上线的域名、应用等,从而触发安全扫描,减少遗漏。

在主机安全方面,我们未来也打算基于CMDB来做更多的联动,因为CMDB本身就自带“远程采集”和“远程执行”的属性。

DevSecOps中的安全自动化测试(扫描)

当我们谈到S-SDLC的时候,总是希望安全可以更早的介入,但是随着项目的增多、迭代频率的增加,完全依赖人工测试的方式不但会压垮安全测试人员本身,也会严重影响到整个软件交付的速度,拖累整个上线周期,最终很多应用在得不到任何安全检查的情况下偷偷上线。

为了提升效率,可以将部分自动化的安全检查工作纳入到CICD的流程中,并且将大部分流程自动触发和执行,让安全测试人员可以聚焦到更核心的业务和工作上,同时尽可能减少安全测试工作对软件发布带来的时间消耗。

代码静态安全检查有商业化的解决方案比如Coverity,我们这里使用的是开源解决方案,Sonar+FindbugSecurity,根据需求精简了规则,在持续构建的过程中,会进行代码静态安全检查。

第二阶段,当完成功能自动化测试后,可以进行安全自动化测试(扫描)。在这里我们简单封装了开源的漏洞扫描工具,将扫描任务、漏洞执行描述、结果等信息通过WEB方式进行展示,方便统一使用和管理。

下面这张图是我们未来想要继续改进的方向,大致思路如下:

在各个业务的功能自动化测试平台集成安全测试用例

√ 功能测试平台主动调用安全测试平台(传入登录操作所需的信息)

√ 安全平台模拟登录后,开始进行扫描

√ 最终将结果反馈给CI平台

这里涉及到和功能测试自动化团队的协作,对于成熟的测试团队,让他们来实现一个登录初始化的数据并且构造一些业务数据,应该不是很难的事情,这样安全测试人员就不再需要去维护每个业务的登录去构造数据了,有了登录和一定的业务数据,安全扫描的效果也会好上很多。

用DevSecOps理念来解决第三方组件的漏洞问题

在软件开发中,安全人员还经常遇到的问题就是来自第三方组件的安全漏洞应急,比如今年发生的Struts2、fastjson等漏洞,都是在软件开发过程中引入的,这块儿是比较好和DevSecOps相结合的。

不考虑入侵排查的因素,正常的响应流程一般为1DAY高危漏洞爆发,安全人员获取和验证POC之后,在WAF中添加恶意请求特征,缓解风险,同时推进补丁升级。传统的方式一般是人肉统计、或者通过批量命令执行检查线上服务器的制定目录和文件、lsof进程所打开的文件等,这样的方式,第一容易出现遗漏且效率低下,第二应急结束后未来又有新的系统发布再次引入了该漏洞组件后,并不能及时发现。

这里我们引入了XRAY+统一发布的方式来解决这个难题。在构建过程中,会根据漏洞库进扫描二进制文件,一旦发现包含高危漏洞的组件被引入,可直接告警或直接阻断发布。

XRAY的工作方式如下:

√ 文件HASH比对

√ 可对接多个漏洞库:NVD、Blackduck、Whitesource、Aqua等

√ 支持深度分解检测:从docker镜像、到rpm包、war包、jar包等,层层分解,进行扫描

甚至根据漏洞库的修复方案,可直接对受影响版本自动更新版本号以及解决依赖升级问题(这个我没有验证过)。这里想针对docker多说两句,线上环境的一致性和变更管理其实很困难,我觉得docker很大的一个好处就是解决了环境一致性问题,因为每次都需要重新构建,从OS到组件再到应用,无形之中也对漏洞修复工作带来了便利性,修复效率有所提升。

每次构建的软件都保存在仓库中,可以快速筛选出使用的第三方组件,比如fastjson

而通过统一发布平台和仓库的关联,则可以快速找到哪些项目包含了带漏洞的组件,并且之前已经被发布到线上环境,做到快速筛查。

总结

DevSecOps这个概念提出来的时间虽然不长,而且和以往S-SDLC的思路也有一些交集,但是却再次定义了安全在软件工程中的重要性以及结合方式;在敏捷思想和DevOps已经足够成熟的今天,相信未来会有更多思想被提炼出来、也会有更多的最佳实践来提高安全工作的效率。

   
次浏览       
相关文章

DevOps转型融入到企业文化
DevOps 能力模型、演进及案例剖析
基于 DevOps 理念的私有 PaaS 平台实践
微软开发团队的DevOps实践启示
相关文档

DevOps驱动应用运维变革与创新
运维管理规划
如何实现企业应用部署自动化
运维自动化实践之路
相关课程

自动化运维工具(基于DevOps)
互联网运维与DevOps
MySQL性能优化及运维培训
IT系统运维管理
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]
 
最新文章
DevOps 道法术器,立体化实施框架
DevOps 中高效测试基础架构的最佳实践
DevOps 在公司项目中的实践落地
如何基于 Kubernetes 构建完整的 DevOps 流水线
阿里云Kubernetes实战
最新课程
DevOps体系实践、工具与平台
基于Kubernetes的DevOps实践
互联网运维与DevOps
基于Kubernetes构建企业容器云
企业级DevOps工作体系与平台
更多...   
成功案例
北京 DevOps体系实践、工具与平台
神龙汽车 DevOps体系实践、工具与平台
中国移动通信 网络规划与管理
某航空公司 IT规划与企业架构
某金融公司 IT服务管理(ITIL V3)
更多...