欢迎来到 广东科鉴检测工程技术有限公司
全国咨询热线: 400-108-9880
联系我们

地址:广州科学城玉树工业园J栋103房 105房 107房

电话:400-108-9880

传真:020-3170 7367

邮箱:kj-mark@svtest.cn

新闻动态
软件应用安全服务解决方案

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

     1.   建设目标

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

2.   实施准备

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

2.1项目成员及职责

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

软件应用安全服务解决方案(图1)

  2.2项目组资源计划

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


软件应用安全服务解决方案(图2)

3.   实施

      3.1 平台架构

  3.1.1    网络架构

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

 

   3.1.2 系统架构

 软件应用安全服务解决方案(图3)

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

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

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

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

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

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

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

3.2 环境搭建

具体配置见下表:

软件应用安全服务解决方案(图4)


3.3实施方案

3.3.1 代码规范审计

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

软件应用安全服务解决方案(图5)

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

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

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

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

软件应用安全服务解决方案(图6)

 3.3.2 试点系统扫描

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

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

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

软件应用安全服务解决方案(图7)


 3.3.3 代码质量阈设置

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

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

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

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

软件应用安全服务解决方案(图8)


 3.3.4 添加自定义规则

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

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

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

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

软件应用安全服务解决方案(图9)

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

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

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

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

 软件应用安全服务解决方案(图10)


 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的记录和统计,主要是针对于版本号的,测试部、项目部、客户等会记录某个版本号的终端软件存在哪些bug,bug会在哪个版本号中得到修正。终端软件一个新的版本号出来后,我们会统计新的版本号解决了上一个版本号中的哪些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部署流程

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

软件应用安全服务解决方案(图11)


4.   系统试运行

     4.1 试点项目试运行

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

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

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

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

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


软件应用安全服务解决方案(图12)

问题记录表:

软件应用安全服务解决方案(图13) 

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号楼




联系我们

地址:广州黄埔区科学城玉树工业园 敬业三街2号J栋103房,105房.107房

传真:020-3170-7367

400热线:400-108-9880

邮箱:kj-mark@svtest.cn

粤ICP备2021012026号-2

扫一扫关注我们
Copyright ©  2017 广东科鉴检测工程技术有限公司®  版权所有