从2012年Gartner的研究报告“DevOpsSec: Creating the Agile Triangle”提出了DevSecOps的概念, 到目前DevSecOps已经成为构建企业级研发安全的重要模式。 DevSecOps模式中有些重要的原则:安全左移、默认安全、运行时安全、安全服务自动化/自助化、基础设施即代码(IaC)、持续集成和交付,以及需要组织和文化建设。
在DevSecOps的过程中,最重要的一环就是安全工具能够快速集成到自动化平台,保证平台的持续集成和交付,从而提高产品的整体的安全水平。 在整个研发过程中静态安全检查工具是保证代码安全的重要手段,每个安全检查工具因为技术实现上的差异,对不同的安全缺陷有着不同的检查能力,所以稍微大型一些的开发团队, 在开发的时候会引入多个安全扫描工具,以获取安全检查能力覆盖的最大化。 但多工具的集成, 就会对程序员或平台的集成会带来以下问题:
- 对于开发人员
- 在使用IDE的时候, 缺少一个通用的检查工具结果接口和交互接口;
- 需要查看多个检查工具的结果;
- 对于集成平台
- 需要学习每个工具的输出扫描格式;
- 在扫描报告转入到缺陷跟踪系统的时候, 缺少一个通用的缺陷转换程序;
- 缺少一个通用扫描结果度量方式。
为了解决这些的问题,由微软、Micro focus等几家静态分析软件公司提出了:静态分析结果交换格式(Static Analysis Results Interchange Format (SARIF))。
微软 为SARIF 创建了一个网站 https://sarifweb.azurewebsites.net/,包含规范、工具和库、 查看器。