官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
随着DevOps广泛宣传和快速发展,其已被越来越多的企业接受认可。在银行业,中国工商银行、招商银行、中信银行、郑州银行、中国农业银行、交行卡中心、浦发银行、百信银行均有项目通过《研发运营一体化(DevOps)能力成熟度模型》能力的评估认证。DevOps可以有效解决跨部门高效协作、软件产品持续迭代交付等问题,使企业更加灵活,更具竞争力,但其并不完美。DevOps虽然保障了发布产品的质量,但并没有保障产品的安全性,例如新版本完成开发,通过流水线完成了自动测试和自动部署,但安全测试人员缺发现新投产版本存在安全漏洞,这将导致流水线不得不回退,在修复缺陷后再重新开始。产生这种问题的根本原因在于,DevOps不能及时检测并修复软件中的安全漏洞。随着软件应用发布的周期在不断被缩短,更新频率不断被提升,传统的安全保障方法已经完全跟不上这样快节奏的迭代发布速度。随着信息系统安全事件频发,人们逐渐认识到不仅要具备持续交付的能力,还需要确保产品的安全性。因此有专家提出应该修改DevOps的定义,使之包括安全理念,这种将安全理念融入DevOps的理论,业界称之为DevSecOps。
DevSecOps理念是将开发、运维和安全研发理念,三者相结合的全新安全解决方案,其是在整个生命周期的每一个环节,落实安全研发措施,以安全是整个IT团队的共同责任的思想,为软件产品安全打下坚实的基础。
那么DevSecOps如何具体实现哪?具体实现DevSecOps,主要是安全性与DevOps的结合,其关键是在于将安全检查自动化,使安全检查能够适应快速迭代发布的节奏,在DevOps流水线中自动完成安全检查,确保交付产品安全。
在考虑安全检查自动化之前,首先要确定要将哪些安全检查环节、手段融入到流水线中,即哪些检查需要实现自动化。目前,大部分企业已经实现了将安全要素融入软件研发全生命周期(SDL),即在需求、设计、编码、测试各阶段,分别融入安全需求、安全设计、安全编码、安全测试,来确保产品的安全性。其中需要在持续交付流水线中实现自动化的有安全编码检查和安全测试。
安全编码检查自动化方面,目前大部分专业源代码安全扫描工具都提供API等接口调用功能,即大部分工具都具备被集成到流水线中自动调起源代码扫描的条件。源代码安全检查工具的自动化,首先应明确安全编码基线要求,建议以制度方式发布源代码安全编码要求。其次,再将安全编码基线要求配置成为源代码安全检查工具扫描规则,使通过源代码安全工具扫描的源代码,确保其能够符合安全编码要求。最后再将源代码安全检查工具集成到DevOps流水线中,在代码完成自动构建时,自动对构建代码进行安全扫描,若扫描发现缺陷,将缺陷信息推送至研发人员,同时终止流水线作业。待研发人员完成缺陷修复后,再新重启发起自动发布流水线。为减少因源代码缺陷导致流水线频繁中止重启,建议在编码过程,每日代码归并时自动开展源代码安全扫描,在发布前发现并修复代码中存在的缺陷。
在自动化安全测试方面,目前插装式全漏洞扫描工具产品已逐渐成熟,其在单元测试、回归测试时,自动收集测试流量,针对测试流量进行分析和自动构建漏洞测试请求,在开展功能测试的同时,即可完成安全测试。若发现漏洞可实时将漏洞信息推送研发团队。
以上就是如何实现软件研发安全检查自动化,将理念融入到DevOps研发过程中。笔者认为DevSecOps是由DevOps发展而来,DevSecOps的实现,也应建立在DevOps基础上,即在DevOps建设方案基础上,将安全工具与DevOps流水线集成,在持续集成和交付过程中,自动完成安全检查活动,以此实现DevSecOps建设。
DevSecOps可能不会解决所有问题,后续可能会继续融合其他理念,产生新的理论体系,但目前来说,其是软件研发领域,满足产品快速发布需求,又能保证产品质量和安全的有效方法。