2021-03-03

思多普(SDAP)软件源代码检测分析平台简介

一、概述
在软件开发生命周期中,越早发现软件的安全和质量缺陷,修正的成本越低。代码静态分析就是在代码编写阶段即可进行的自动化测试,能够在开发过程中检测软件源代码在安全、质量和合规性方面的缺陷,帮助开发人员越早解决代码问题。
代码静态分析已是一个较为成熟的技术,有大量的商业和开源检测工具用于代码检测。但,这些工具在检测语言和检测规则的侧重点、检测操作方式、数据管理等方面各式各样,而且,有的工具是单机版、有的只有命令行接口、有的无数据保存和展现能力等,这给最终用户带来使用上的困难。同时,代码静态分析由于其技术原理上的限制存在检测瓶颈,采用多工具检测来提高检测结果的准确性是用户目前较好的选择。另外,如何将已购买的多种工具的检测能力在公司范围内通过统一的服务平台共享出来也是需要解决的实际问题。
SDAP(Software Detection and Analysis Platfprm)软件检测分析平台,针对软件开发过程中源代码的白盒、自动化检测提供一个公共检测平台,屏蔽各种检测工具的差异性,提供大众、公共服务。SDAP的目标是让各种检测工具更加好用、更加完美、更加智能,它将是连接检测工具和最终用户的桥梁。
SDAP提供代码编写、持续集成、阶段版本发布、第三方检测等过程中源代码安全、质量和合规性的自动化检测,检测结果实时推送、持久化存储、多维度统计分析和质量指标计算。借助SDAP,开发人员在编程语言上安全漏洞、可靠性、规范性等问题能自动化检测、实时解决,将精力投入到业务功能的实现上,从而提高研发质量和效率。
SDAP是在多年代码检测静态分析工具的工程应用实践上,为解决开发部门、测试部门、检测机构代码检测上的各类痛点(如:有的工具只能单机运行、界面操作繁杂、编译环境维护困难、检测规则配置麻烦、无法存储大量历史数据、系统响应慢、无质量指标分析、多工具检测数据无法统一等)而开发的一款平台软件。
SDAP目前已完成Fortify、Coverity、Klocwork、Checkmarx、Parasoft、Pinpoint、Cobot、Codesafe等商业检测工具的无缝接入,同时内置Spotbugs、Tscancode,Cppcheck、sonar、PMD、CheckStyle、codeQL、Clang等开源检测引擎。SDAP通过定制和优化组合各种工具的检测规则,提高检测结果的准确性,降低误报率。
二、系统架构
在这里插入图片描述
SDAP采用前后端分离的全分布式架构,SDAP-WEB-front全静态界面,后端所有服务可独立部署和无状态可横向扩展,检测节点在检测框架的调度下分布式并行运行,采用ES集群进行大数据量的存储和检索,状态数据保存在redis中。
(1)SDAP-WEB-front:基于html、css、js的纯静态界面。
(2)SDAP-WEB:提供统一登录及权限服务;按照组织机构-项目-检测项目-检测任务的模式,实现各类检测的执行和监控;屏蔽各类工具的差异性,提供一致的检测规则、代码审计、缺陷分析、质量指标和缺陷报告等功能;对于编译检测工具,提供自动化的编译环境维护功能。
(3)SDAP-CM:为实现并行接受或者拉取检测对象而开发的分布式检测对象接受服务,同检测客户端实现点对点的大数据传输,保证系统的运行效率和可靠性。
(4)SDAP-Schedule:是CM和Scanner的职能调度器,通过智能算法确定下一个将要服务的CM和Scannner。
(5)SDAP-AN:实现检测结果的统一分析。
(6)SDAP-Monitor:对各检测节点进行统一监控。
(7)SDAP-BackEnd:统一的数据访问服务。
(8)SDAP-Report:报告生成服务,为报告实时生成提供服务。
(9)SDAP-Authenciation:鉴权服务,为所有服务调用提供权限认证服务。
(10)SDAP-Audit;审计日志服务。
(11)SDAP-DPM:检测过程实时监控服务。
(12)SDAP-Scanner:是适配各类检测工具的通用检测框架,探测检测工具的编译环境,开展检测执行,进行结果分析。

三、典型界面

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、应用场景
(一)研发部门
1、测试人员、配置管理员使用SDAP-Web,上传源代码检测对象或由SDAP自动从配置管理系统拉取,SDAP-Scanner在后台检测,SDAP-AN自动分析结束,用户登录SDAP-Web查看、导出缺陷。开发人员审计确认,整改代码缺陷后,再次提交检测,通过SDAP-Web查看问题是否解决。
2、开发人员在IDE中从SCM中检出自己的代码,通过SDAP-Lint(Eclipse插件)从SDAP-Web中获取这部分代码的缺陷,在IDE中显示定位源码,进行分析和审计。审计确定代码缺陷或漏洞后,开发人员在IDE中整改完毕提交代码到SCM,SDAP自动从SCM拉取代码,SDAP-Scanner后台全量检测,更新IDE中显示的缺陷,开发人员在IDE查看是否解决问题。也可登录SDAP-Web查看缺陷及解决情况并导出质量报告。
3、开发人员使用SDAP-CA在开发本地进行检测前期准备工作后,将编译捕获的中间文件发送SDAP平台进行实时检测,此种方式支持增量检测。
(二)研发管理层
研发项目经理、研发质量管理经理、公司领导可登录SDAP-Web,查看某单位、某项目、某开发人员的当前质量状态和历史变化趋势等数据。
(三)检测机构、测试部门
检测机构和测试部门一般是独立于开发部门的,一般进行出厂测试把关和第三方测试把关。检测人员用SDAP-Web,上传源代码检测对象或由SDAP自动从样品管理系统拉取,SDAP-Scanner在后台检测,SDAP-AN自动分析结束,检测人员登录SDAP-Web查看、审计缺陷,最后导出缺陷报告。
五、主要功能及特点
1、统一的web应用功能
SDAP提供统一登录及权限服务,实现superAdmin、Admin、Manager、Tester、User等角色的鉴权。按照组织机构-项目-检测项目-检测任务的模式,对用户通过SDAP-WEB发起的检测任务进行调度、监控和管理,持久保存所有检测断面数据。屏蔽各类检测工具的差异性,提供一致的检测规则维护、代码审计、缺陷分析、质量指标和缺陷报告等功能。实现与SCM(svn、git、maven等)集成,检测对象自动拉取、定时检测、缺陷归属自动绑定,人员缺陷趋势自动分析。
2、强大的接入能力
通过统一的扫描器框架SDAP-Scanner将不同检测引擎进行封装,参与检测任务调度,无缝接入Fortify、Coverity、Klocwork、Checkmarx、Cobot、Codesafe、找八哥等商业检测引擎,内置Spotbugs、Checkstyle、PMD、Cppcheck、Tscancode等开源检测引擎,支持java、c/c++、c#、swift、object-c、python、go、php等多种检测语言。支持同一检测任务多检测引擎同时检测,自动合并检测结果,发挥每个检测引擎的优势,提高检测结果的准确性,降低误报和漏报。通过统一的缺陷数据模型,将不同检测引擎的检测结果归一化处理,在统一界面对源代码缺陷和漏洞进行跟踪、定位和审计。
4、编译环境自动维护
对C/C++等语言进行编译后才能检测的工具,误报低、准确性高,但需要不断维护编译环境是使用过程中的最大痛点。目前,依赖用户自己编译环境才能进行代码检测的工具有:coverity/klocwork/Fortify检测Linux下的C/C++,windwos下的VS.NET/VC6的C/C++/C#等。
SDAP将彻底解决这一问题,用户只需在部署检测节点时一次性将编译检测工具及环境部署在后台,SDAP-Scanner将自动监测编译环境和检测能力,上报给SDAP平台,用户在WEB端选择检测对象时选择适合自己的编译环境即可,SDAP确保可编译通过并完成检测。同时,在SDAP云端,可快速自动的复制具备相同编译和检测能力的检测节点,随时应对多用户的并发检测需求。
5、多工具同时检测、提高检测结果准确性
对各种检测工具的检测规则统一规范化定制,按照编程语言对检测规则进行分类。用户根据检测语言选取质量配置,质量配置可以根据不同检测工具的优点关联多个检测工具的检测规则,实现同一个检测任务采用不同检测工具并行检测,SDAP自动合并检测结果,提高检测结果的准确性。
6、检测数据智能化统计分析
检测完成后,SDAP-AN在后台自动比对本次检测和上次检测结果,实现新增缺陷、已解决缺陷、未解决缺陷自动计算。通过项目质量概要,项目安全性、可靠性和合规性分析,多维度提供项目质量数据。通过组织机构仪表盘、项目仪表盘、人员仪表盘,多维度统计分析当前缺陷状态和历史趋势。
7、大规模分布式检测能力
通过统一的web界面,在云端完成分布式并行检测和分布式高可靠安全存储,解决各种检测工具排队耗时、只能单机运行等问题。对源代码较大的项目,采用分模块并行检测,检测结果自动汇总,提高检测效率和运行可靠性。
8、基于国密算法的安全管理
通过用户权限控制和访问控制避免非法登录和越权访问。对源代码和缺陷等数据的传输采用了防抵赖、完整性和保密性的措施。对存储到数据库的敏感数据采用了强加密处理。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页