广东科鉴检测工程技术有限公司
特级
已认证
软件应用安全服务解决方案
发布时间:2022-07-13 浏览量:250次

文章摘要:本文以源代码质量管理平台SonarQube为例,阐述了应用安全服务解决方案的整个过程。从项目的建立,人员安排和时间计划等各方面的准备,到项目的实施,直至系统的试运行和最终上线,全面详细的介绍了各个阶段实施的具体内容。

   1.   建设目标

根据相关代码规范,对项目中涉及的编程语言设置对应的质量阈,并完善项目的代码质量监控流程,系统地提高代码的可维护性,从而提高开发团队的长期生产力。

2.   实施准备

根据实施要求,本项目以SonarQube作为平台,对项目源代码持续检查,并集成至SDLC系统中。

    2.1项目成员及职责

 项目的具体实施工作人员职能见下表:

 

姓名

角色

职责

联系电话

XXX

高级顾问

疑难问题解答


XXX

项目经理

作为项目的负责人,负责项目的全面实施督导和项目进度过程控制;

主要包括:整个项目实施方案制定、沟通、公司资源的协调、工作指导等


XXX

高级工程师

负责项目的具体实施工作;

实施方案界定的工作范围、按照实施计划开展实施工作,服从项目经理的工作安排,保证项目实施工作的正常开展;


XXX

项目组长

商务沟通、协调


2.3项目组资源计划

 

角色 阶段

实情

调研

方案编制及评审

规则审计

试点系统扫     

自定义规则

环境安装部署

项目试运行

培训

报告编制及评审

项目组长










专家顾问










项目经理










实施顾问










合计


整个项目大概需要XX/天的工作量。具体见下表:

 

3.   实施

3.1 平台架构

3.1.1    网络架构

整个系统为B/S架构,应用服务器与客户端之间网络必须保持通畅,客户端与应用服务器之间通讯的带宽占用约5Mbit/s

 

3.1.2    系统架构


1.  开发人员在他们的IDE工具中使用SonarLint进行编码过程中的分析纠错,尽量将bug在编码阶段修复;

2.  开发人员上传他们的代码至SCM中,如:GitSVN等;

3.  通过持续集成服务工具触发自动构建过程,并运行SonarScanner扫描器进行分析;

4.  将分析报告发送至SonarQube服务端

5.  SonarQube服务端在数据库中存储以上分析报告,并且能在Web界面上显示分析结果;

6.  开发/管理人员通过SonarQube UI审查、评论、解决所产生的问题,管理和减少技术问题;

7.  管理人员从分析中获取报告,也可以使用API自动配置并从SonarQube中提取数据,运维人员可以使用JMX监控SonarQube服务器。

3.2 环境搭建

具体配置见下表:

 

序号

系统名称

系统配置要求

操作系统版本

备注

需求数量

1

应用服务器

CPU:四核 2.8G以上 RAM: 32G

Windows/ Linux

容器部署


2

DB服务器

CPU:四核 2.8G以上 RAM: 32G

Windows/ Linux

容器部署


3

客户端

CPU:双核1.8G以上  RAM: 8G

Windows/ Linux



3.3实施方案

3.3.1 代码规范审计

1. 针对各个团队现有的代码规范,按照规则类型或标准等条件,梳理出代码规范里的规则。例如Java,可以按照Weak CryptographyInsecure ConfigurationAuthenticationObject InjectionCross-Site Scripting…等进行分类梳理;

 

现有的代码规范:

conn coding standards

后端Java服务(PMD

C++ Style Guide

Java Style Guide for   Android

 

2. 依照SonarSource提供的代码规则,对应不同语言的代码规范进行对比,梳理出重要的或者级别较高的规则;

3. 梳理出现有代码规范与Sonar规则的共有规则,其余部分另行讨论处理;

4. 针对代码规范与Sonar规则的共有的规则,设置对应规范下的质量阈;

5. 通过项目进行扫描反复验证,最终确定自定义的质量阈。

 

代码规范:

  对应质量阈:

备注:

conn coding standards

  Conn Coding Way


后端Java服务(PMD

  My PMD Way


C++ Style Guide

  Cpp Way


Java Style Guide for Android

  Android Way


Flutter/Dart Style Guide

  Other Way


3.3.2 试点系统扫描

1. 使用SonarQube对每个试点项目进项扫描,分析试点系统,调整相关的质量阈,找出误报较高的规则,总结相关经验;

2. 通过Fortify对每个试点系统进行扫描,分析试点项目的扫描结果,提交扫描报告和修改意见,供研发组审核;

3. 综合分析SonarQubeFortify的扫描结果,对试点项目进行综合评判,对试点项目进行相关规则、质量阈等进行整改。

 

试点系统:

Sonar扫描

Fortify扫描

Android APP



Head Unit



Web



Spring boot



Bigdata



3.3.3 代码质量阈设置

1. 通过sonar对研发组提供的试点项目(已稳定的项目代码)进行扫描,查看查看扫描结果是否满足需求(结果为 A, 级别C1高于50%,注释率大于20%),对扫描结果进行分析;

2. 根据分析结果调整对应项目的质量阈,和研发组进行商讨审核,确定质量阈;

3. 重新扫描试点项目,查看扫描结果是否满足要求,分析扫描结果,如若试点项目扫描结果未满足要求,继续调整质量阈,与研发组一起商讨,直至最终的扫描结果满足需求;

4. 通过试点项目,总结归纳各个对应语言的代码规则,确定稳定的质量阈,作为其他项目的基准。

 

系统名称

编程语言

设置质量阈

备注

Android APP

Java

Android Way

结果为A

Head Unit

C/C++

My C Way

My Cpp Way

结果为A

Web

JS/TS/HTML/CSS

JS Way / TS Way

CSS Way / Html Way

结果为A

Spring boot

Java

Spring Java Way

结果为A

Bigdata

Java / Python

Bigdata Java Way

Bigdata Python Way

结果为A

 

3.3.4 添加自定义规则

1. 根据需求对java语言添加以下规则,生成插件导入SonarQube系统中;

2. 扫描试点项目,查看自定义规则是否正确启用,同研发组一起确认自定义规则;

3.如新增自定义规则不满足研发组需求,重新调整和扫描检查,直至满足扫描需求;

4. 与研发组一起确认自定义规则,正式导入sonar系统中,试运行多个项目,分析扫描结果,最终确定适用的自定义规则。 

 

Java个性化规则

规则条目

备注

Java个性化规则一


Java个性化规则二


Java个性化规则三


Java个性化规则四


 

1. 根据需求对python语言添加以下规则,生成插件导入SonarQube系统中;

2. 扫描试点项目,查看自定义规则是否正确启用,同研发组一起确认自定义规则;

3.如新增自定义规则不满足研发组需求,重新调整和扫描检查,直至满足扫描需求;

4. 与研发组一起确认自定义规则,正式导入sonar系统中,试运行多个项目,分析扫描结果,最终确定适用的自定义规则。

 

Python

个性化规则

Python个性化规则一


Python个性化规则二


Python个性化规则三


Python个性化规则四


 

3.3.5 使用流程优化

Sonar能无缝集成传统的软件生命周期的整个过程(以下简称SDLC),部署使用(sonarlint+Gitlab+Jenkins+sonarqube)的SDLC方案。需要调研当前具体使用情况,得出更详细的调研结果,提出对应的优化意见,与研发组进行协商确认具体使用流程方案。

3.3.6 质量制度管控

3.3.6.1 总则

1、为保障公司源代码和开发文档安全不至于泄露,保证源代码的完整,明确源代码控制管理流程,特制定此管理办法。

2、本办法适用于所有涉及接触源代码的各部门各岗位。所涉及部门都必须严格执行本管理办法。

3、源代码直接控制管理部门为技术开发部。

4、本办法管理重点在于控制管理源代码的完整性,不被非授权获取,不被非授权复制和传播。

5、本办法所指源代码不仅限于公司开发人员自行编写实现功能的程序代码,而且还包括相应的开发设计文档及用于支撑整个系统运行所必须具备的第三方软件、控件和其它支撑库等文件。

 

3.3.6.2 源代码完整性保障

1、所有软件的源代码文件及相应的开发设计文档均必须及时加入到指定的源代码服务器中的指定库中。

2、我们研发的产品软件运行所必须的第三方软件、控件和其它支撑库等文件也必须及时加入源代码服务器中指定的库中。

3、软件开始编写或者调整代码之前,其相应的设计文档和代码必须先从相应的SVN库进行SVNUpdate操作。软件编码或功能调整结束测试正确无误后,相应的源代码必须进行SVNCommit操作,在最终进行SVNCommit操作之前需要再进行SVNUpdate操作,查看是否有冲突产生,如果有冲突产生需要和冲突相关人一并解决冲突。

 

3.3.6.3 源代码的授权访问

1、源代码服务器对于共享的SVN库的访问建立操作系统级的,基于身份和口令的访问授权。在SVN库中设置用户,并为不同用户分配不同的权限,适合工作的最小访问权限。要求连接SVN库时必须校验SVN中用户身份及其口令。在SVN库中要求区别对待不同用户的可访问权、可读权、可写权。

2、曾经涉及、触及源代码的计算机在转作它用,或者离开研发部门之前必须由网络管理人员全面清除计算机硬盘中存储的源代码。如果不能确定,必须对计算机中所有硬盘进行全面格式化后方可以转做它用或离开研发部门。

 

3.3.6.4 代码版本管理

1、终端软件的版本标识管理:

a、终端软件版本由终端型号、版本号和内部修订号来进行标识。

b、终端型号:终端型号是硬件标识号,也唯一的标识了我们的项目。

c、版本号:由“<主版本号>.<次版本号>.<修订号>”三段组成,中间是点号分开。版本号的目的主要是管理终端软件的对外发布,终端软件的bug的记录和统计,主要是针对于版本号的,测试部、项目部、客户等会记录某个版本号的终端软件存在哪些bugbug会在哪个版本号中得到修正。终端软件一个新的版本号出来后,我们会统计新的版本号解决了上一个版本号中的哪些bug,以及增加了哪些新功能,等等。

d、内部修订号:也就是“应用程序的源代码的svn修订号”,主要是由软件部和测试部内部来使用,内部修订号唯一标识我们的终端软件,即:通过内部修订号能够唯一的找出我们发布的终端软件所对应的全部软件源代码,目的是为了软件排错使用。

e、另外,终端软件在发布时,还会给出发布日期,以便开发、测试、项目、客户等相关人员参考。

2、终端软件版本发布管理:终端软件主要是以版本号为基准,对外发布,目前采用不定时发布策略,发布的时间由软件部、项目部和客户方根据情况,共同商量决定。由于目前项目时间紧,终端软件无法得到完整的测试就要发布,在发布之后,有一些需要紧急需要修复的bug,软件部需要紧急修复后就要发布更新包,以便用户能够使用,所以,在一个版本号发布后,需要进行多次修订,对于这些修订的版本,其版本号保持不变,内部修订发生变化。

3、软件bug记录、管理和统计:软件bug的记录、管理和统计主要以版本号为基准,但为了软件开发人员能够找到bug的出处,需要用户、测试人员在报告和验证bug时,输入内部修订号。

3.3.6.5 软件配置组对版本的记录

软件版本记录的目标有两个:记录软件版本的发布历史。发布的每一个版本,都要能够唯一的从源代码库中找到对应的全部源代码。测试方案作为软件开发的重要环节,作为交付成功的优质的产品的重要保证手段和方法,软件测试越来越受到项目的重视。要做好测试首先要做好测试的组织、管理、计设、实施等工作。系统测试方案概述是指在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。测试的目标:以较少的用例、时间和人力找出软件中潜在的各种错误和缺陷,以确保系统的质量。在实际项目中,测试作为软件开发生命周期中的一个重要过程,但从其具体工作的前后过程来看,它又是由一系列的不同测试所组成,这些测试的步骤分为:单元测试、集成测试(又称组装测试)、确认测试和系统测试。软件开发的过程是自顶向下的,测试则正好相反,以上这些过程就是自底向上,逐步集成的。在项目过程中,我们按以上的测试步骤完成系统的测试。

 

3.3.6.6 源代码复制和传播

1、源代码向研发部门以外复制必须获得总经理的书面授权。并必需记录复制人、批准人、复制时间、复制目的、文件流向、文件版本或内容。

2、源代码以任何介质形式进行存储的备份,必须由专人负责保管。对于这些介质地借阅,用于研发部内部使用的必须获得研发部经理的授权,对于用于研发部以外使用的必须获得总经理的书面授权。

3、源代码的借阅、复制必须进行详细的登记,必需记录借阅人、批准人、借阅时间、借阅目的、文件流向、文件版本或内容、归还时间。

4、任何纸质材料的借阅都必需记录借阅人、批准人、借阅时间、借阅目的、文件流向、文件版本或内容、归还时间。

5、对于因合作需要,需要向外复制、传播、分发源代码的,不论是全部还是部分代码和资料,均必需和对方签订技术、源码的保密协定,明确对方应当承担的对源码保密的责任和义务。

3.4安装部署

3.4.1部署流程

整个系统的部署按照以下流程进行:

 

序号

系统部署步骤

备注

 1

PostgreSQL/ Oracle数据库的部署


 2

SonarQube服务端的部署


 3

SonarScanner客户端的部署


 4

服务端性能测试与优化


 5

数据的完整性检查


 6

各功能模块的功能检查


 7

SDLC方案的实施


 8

整个系统数据完整性和功能的检查


 4.   系统试运行

4.1 试点项目试运行

1. SonarQube系统部署完成后,对试点项目进行试运行;

2. 对试运行结果进行分析,给出试运行报告;

3. 修正试运行中发现的问题,与研发组确认后,将系统导入整个SDLC进行试运行;

4. 测试SDLC整个试运行情况,给出试运行报告;

5.修正试运行中出现的问题,最终确认,完成整个系统的试运行。

 

序号

试点项目

运行结果分析

 1

Android   APP


 2

Head Unit


 3

Web  


 4

Spring   boot


 5

Bigdata


 

   

序列

项目名称

是否满足质量阈的设置

自定义规则是否满足要求

评估

1

Android APP




2

Head Unit




3

Web




4

Spring boot




5

Bigdata




 

问题记录表:

序列

项目名称

问题点

问题描述

解决方法

解决人

登记时间

处理时间

处理状态

1









2









3 









4 









     5.   系统上线

     5.1上线时间

根据用户测试反馈,该项目达到研发组使用目的,并无较大的歧义,系统运行稳定;确定试上线,试上线确定无异常,确认正式上线。

5.2上线报告

系统上线总结,编写上线报告;召开上线支持阶段完成确认大会。

联系我们

电话:400 108 9880 

网址:www.svtest.cn

  邮箱:kj-sv@svtest.cn

传真:020-31707367


联系地址
广州:广州开发区科学城玉树创新园 J 栋 103 房
北京:北京市海淀区永定路 15 号院南门 208 室
长沙:长沙市雨花区保利东郡 8 栋 1803 房
深圳:深圳市南山区西丽深圳大学城学苑大道 1068 号(深圳先进院内)
石家庄:石家庄市鹿泉区山尹村镇滨海路19号2号楼



材料 查看更多
可靠性指标考核
一年内

已有677人关注

电子制造企业可靠性系统工程
15-30天

已有5923人关注

加速试验与可靠性寿命快速评价
1-3个月

已有652人关注

军工 查看更多
军工装备可靠性工程系统检测
7-15天

已有476人关注

军工装备高低温(温湿高)试验
7-15天

已有458人关注

可靠性试验
7-15天

已有818人关注

电子电器 查看更多
安规测试与认证
3-7天

已有320人关注

安规测试
1-3天

已有91人关注

家用电器可靠性测试
1-3天

已有96人关注

可靠性测试 查看更多
家用电器振动测试
1-3天

已有210人关注

家用电器可靠性测试
1-3天

已有498人关注

家用电器可靠性测试
1-3天

已有380人关注

进入机构
客服
拨打电话 留言咨询