CN117332424A - 一种安全扫描在研发流程中集成的方法、装置 - Google Patents

一种安全扫描在研发流程中集成的方法、装置 Download PDF

Info

Publication number
CN117332424A
CN117332424A CN202311276917.XA CN202311276917A CN117332424A CN 117332424 A CN117332424 A CN 117332424A CN 202311276917 A CN202311276917 A CN 202311276917A CN 117332424 A CN117332424 A CN 117332424A
Authority
CN
China
Prior art keywords
scanning
task
information
determining
scan
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311276917.XA
Other languages
English (en)
Inventor
任鹏飞
任明刚
周敏敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202311276917.XA priority Critical patent/CN117332424A/zh
Publication of CN117332424A publication Critical patent/CN117332424A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及软件开发技术领域,公开了一种安全扫描在研发流程中集成的方法、装置,该方法通过获取子模块标识,建立扫描任务,从而明确与任务标识相对应的扫描策略信息、依赖信息以及产品信息,进而通过确定的产品信息确定与扫描任务相对应的扫描工具,这一过程中,由于通过产品信息可以实现扫描工具的确定,从而减少了针对不同扫描任务,单独进行扫描工具适配的过程,从而减少了安全扫描中人工的介入,提升了安全扫描方法的适用性。并且由于依赖信息可以明确子模块的依赖关系,即明确了子模块与完整应用中其他组件的关系,从而使得动态扫描可以覆盖多个组件组合而成的完整应用这一应用场景,进一步提升了安全扫描方法的适用性。

Description

一种安全扫描在研发流程中集成的方法、装置
技术领域
本发明涉及软件开发技术领域,具体涉及一种安全扫描在研发流程中集成的方法、装置。
背景技术
安全扫描是指在软件开发过程中,对源代码、二进制文件、配置文件等进行静态或动态的分析,以发现潜在的安全漏洞或风险。安全扫描可以提高软件的质量和安全性,防止恶意攻击或数据泄露。安全扫描的应用领域包括互联网、金融、电子商务、医疗、教育等。安全扫描技术是一种用于检测网络或主机中存在的安全漏洞的技术,它可以帮助发现和修复潜在的风险,提高系统的安全性和稳定性。安全扫描技术可以分为静态扫描和动态扫描两种。静态扫描技术是指对目标系统的代码、配置、文档等静态资源进行分析,找出其中可能存在的缺陷、错误、漏洞等问题。动态扫描技术是指对目标系统的运行状态进行监测,模拟攻击者的行为,发送探测数据包或请求,观察系统的响应和行为,判断是否存在漏洞或异常。
在相关技术中,为在软件开发过程中实现安全扫描,通常采用扫描工具根据开发人员的需求,采用不同的脚本文件配合工具使用,如图1所示,示例性地示出了这一过程,其中,代码库模块11,用于管理项目的源代码提交,可以用于触发测试事件,并根据测试结果判断本次提交的代码是否能够入库;自动化测试模块12,用于负责整个测试流水线,包括:拉取源代码、编译、部署、测试运行以及结果反馈,其中,Coverity、Fortify、Blackduck均为测试工具。在这一过程中由于扫描工具以及各项目组之间需求的不同,即使各项目组之间贡献了对于扫描工具的脚本文件,但每个项目组对同一工具的配置、策略均不同,针对各扫描工具仍需单独进行配置,使得安全扫描技术的仍需人工的介入,提高了安全扫描方法的使用成本,降低了安全扫描方法的适用性。并且由于动态扫描可能影响系统的正常运行,需要在合适的时间和环境下进行,而在需要针对多个组件组合而成的完整应用进行扫描时,采用如图1所示的方式,难以在持续集成流程下进行覆盖,即无法在多个子模块或子模块与项目间存在关联关系时造成持续集成问题,使得安全扫描方案在部分应用场景无法适配,进一步降低了安全扫描方法适用性。
发明内容
有鉴于此,本发明提供了一种安全扫描在研发流程中集成的方法、装置,以解决安全扫描方法适用性低的技术问题。
第一方面,本发明提供了一种安全扫描在研发流程中集成方法,包括:响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识;基于子模块标识,建立扫描任务,并对扫描任务添加任务标识;基于子模块标识,确定与任务标识相对应的任务信息,其中任务信息包括:扫描策略信息、依赖信息、产品信息,其中依赖信息用于表示子模块的依赖关系,产品信息用于表示扫描任务的基本信息;获取至少一个执行机的工作状态;基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具;基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总。
结合第一方面,在第一方面的一种可能的实现方式中,产品信息包括:代码语言选择、扫描语言、编译指令、仓库地址、构建参数,基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具,包括:基于工作状态,确定执行扫描任务的第一执行机;基于产品信息与第一执行机,确定任务标识与第一执行机的对应关系;基于对应关系,将代码语言选择、扫描语言、编译指令、仓库地址、构建参数发送至第一执行机;通过代码语言选择确定子模块开发所使用的代码类型、通过扫描语言确定需要扫描的类型、通过编译指令确定在扫描工具需要进行编译时,如何执行编译、通过仓库地址确定拉取与扫描任务相对应的最新代码的代码仓库存储地址、通过构建参数确定针对不同的扫描工具进行与扫描任务相关的设置,从而确定与任务标识相对应的至少一种扫描工具。
结合第一方面,在第一方面的一种可能的实现方式中,基于工作状态,确定执行扫描任务的第一执行机,包括:基于工作状态,确定至少一个执行机的空闲状态与可用状态;基于空闲状态与可用状态,确定执行扫描任务的第一执行机。
结合第一方面,在第一方面的一种可能的实现方式中,基于工作状态,确定执行扫描任务的第一执行机,包括:基于工作状态,确定至少一个执行机的工作类型;基于工作类型,确定执行扫描任务的第一执行机。
结合第一方面,在第一方面的一种可能的实现方式中,基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总,包括:基于依赖信息,确定子模块在代码测试事件中的依赖关系;基于依赖关系,通过至少一种扫描工具,以扫描策略信息对子模块进行扫描,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总;其中,扫描策略信息用于指示与扫描任务相关的扫描工具的判定标准,包括:扫描工具名称及与扫描工具名称对应的安全等级。
结合第一方面,在第一方面的一种可能的实现方式中,还包括:获取扫描配置信息;基于扫描配置信息,判断是否对代码测试事件进行响应。
结合第一方面,在第一方面的一种可能的实现方式中,还包括:获取配置任务的设置信息,设置信息包括:与配置任务对应的依赖信息、扫描策略信息以及扫描工具;基于与配置任务对应的依赖信息、扫描策略信息以及扫描工具,确定与配置任务对应的扫描结果。
第二方面,本发明提供了一种安全扫描在研发流程中集成装置,包括:标识获取模块,用于响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识;标识添加模块,用于基于子模块标识,建立扫描任务,并对扫描任务添加任务标识;信息确定模块,基于子模块标识,确定与任务标识相对应的任务信息,其中任务信息包括:扫描策略信息、依赖信息、产品信息,其中依赖信息用于表示子模块的依赖关系;状态获取模块,获取至少一个执行机的工作状态;工具确定模块,基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具;结果汇总模块,基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的安全扫描在研发流程中集成方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的安全扫描在研发流程中集成方法。
本发明技术方案,具有如下优点:
本发明提供的一种安全扫描在研发流程中集成的方法、装置,该方法通过获取子模块标识,建立扫描任务,从而明确与任务标识相对应的扫描策略信息、依赖信息以及产品信息,进而通过确定的产品信息确定与扫描任务相对应的扫描工具,这一过程中,由于产品信息可以明确了扫描任务的基本信息,即明确与扫描任务、扫描工具相关的信息,因此,通过产品信息可以实现扫描工具的确定,从而减少了针对不同扫描任务,单独进行扫描工具适配的过程,从而减少了安全扫描中人工的介入,提升了安全扫描方法的适用性。并且由于依赖信息可以明确子模块的依赖关系,即明确了子模块在完整应用中的执行顺序或子模块与完整应用中其他组件的关系,从而解决了持续集成问题,使得动态扫描可以覆盖多个组件组合而成的完整应用这一应用场景,进一步提升了安全扫描方法的适用性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术中关于安全扫描方法的流程示意图;
图2是根据本发明实施例的一种安全扫描在研发流程中集成的方法的拓扑关系示意图;
图3是根据本发明实施例的一种安全扫描在研发流程中集成的方法的流程示意图;
图4是根据本发明实施例的另一种安全扫描在研发流程中集成的方法的集成示意图;
图5是根据本发明实施例的另一种安全扫描在研发流程中集成的方法的流程示意图;
图6是根据本发明实施例的一种安全扫描在研发流程中集成的装置的结构框图;
图7是本发明实施例的计算机设备的硬件结构示意图;
图8是本发明实施例的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例提供了一种安全扫描在研发流程中集成的方法的拓扑关系示意图,如图2所示,包括:代码管理服务器21、构建测试管理服务器22、安全扫描服务服务器23、测试执行机24、扫描执行机25、扫描执行机26。其中,代码管理服务器21、构建测试管理服务器22、安全扫描服务服务器23可以是同一个服务器,码管理服务器21包括代码库模块211,代码库模块211用于管理项目的源代码提交,代码库模块211可以触发代码测试事件,并根据测试结果判断提交的代码是否能够入库。构建测试管理服务器22包含自动化测试模块211,自动化测试模块211用于管理测试流水线,包括代码拉取、编译、部署、测试运行与结果反馈。安全扫描服务服务器23包含安全扫描平台231,安全扫描平台231相当于安全扫描模块,安全扫描平台231用于管理项目的基本信息,包括:扫描策略信息、依赖信息、产品信息。测试执行机24包含功能测试组件241,功能测试组件241用于执行功能测试。扫描执行机25与扫描执行机26分别包含扫描服务组件251、扫描服务组件261,扫描服务组件251与扫描服务组件261内均部署有多种扫描工具,如Fortify、Nessus、Blackduck等,用于响应于代码测试事件,从而通过一个或多个扫描工具对扫描任务进行扫描,并将扫描结果反馈至安全扫描服务服务器23。
为提高安全扫描方法的适用性,本发明实施例提供了一种安全扫描在研发流程中集成的方法,如图3所示,包括如下步骤:
S301、响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识。
具体地,触发代码测试事件的子模块是指提交了代码的代码仓库,一般来说一个项目可以归属于某个产品线,同时一个项目可以包含多个子项目,每个子项目对应一个项目的一个代码仓库,在相应的代码仓库中涉及到提交代码时,将会触发代码测试事件,响应于代码测试事件,则需要对提交的代码进行安全扫描。子模块的子模块标识是指子模块的标识信息,如子模块ID。
S302、基于子模块标识,建立扫描任务,并对扫描任务添加任务标识。
具体地,基于子模块标识,建立扫描任务是指基于子模块标识,建立扫描提交代码的扫描任务。扫描任务的任务标识是指扫描任务的标识信息,如扫描任务ID。
具体地,基于子模块标识,建立扫描任务,并对扫描任务添加任务标识通过如下伪代码表示:
#1.login
login_name="admini"
login_pwd="admin123"
login_url="https://xxxx/login"
data=$(curl-i-k-X POST-H"Content-Type:application/json"-d'{"username":"'"$login_name"'","password":"'"$login_pwd"'"}'$login_url)
access_token=`echo$data|grep-Po'(?<="access_token":")[^"]*'`
bearer_token="Bearer"$access_token
#2.Send code scan task&get task ID
moduleId=79
scanTask_url="https://100.2.97.123/prod-api/project/scanTask"
data2=$(curl--request POST-H"Content-Type:application/json"-H"Authorization:$access_token"-d'{"moduleId":"'"$moduleId"'"}'-k$scanTask_url)
taskid=`echo$data2|sed's/,/\n/g'|grep"data"|sed's/:/\n/g'|sed'1d'|sed's/}//g'`
echo"code scan executed,code scan task id:"$taskid
其中,scanTask_url用于表示代码仓库的地址信息,code scan task id表示子模块标识,task ID表示扫描任务ID,即扫描任务的任务标识。
S303、基于子模块标识,确定与任务标识相对应的任务信息,其中任务信息包括:扫描策略信息、依赖信息、产品信息,其中依赖信息用于表示子模块的依赖关系,产品信息用于表示扫描任务的基本信息。
具体地,基于子模块标识,确定与任务标识相对应的任务信息是指基于子模块标识,确定与扫描任务相关的任务信息,其中,与任务标识相对应的任务信息包括:代码语言选择、扫描语言、编译指令、仓库地址、构建参数。
具体地,代码语言选择用于明确提交代码所使用的编程语言,即与子模块相对应的代码仓库所使用的编程语言,如C/C++、JAVA、Phthon、GO等。扫描语言用于明确需要扫描的类型,即通过哪个或哪些扫描工具对扫描任务进行扫描。编译指令用于表示在扫描工具需要进行编译时,如何执行编译。仓库地址用于拉取与扫描任务相对应的最新代码的代码仓库存储地址。构建参数用于指示针对不同的扫描工具进行与扫描任务相关的设置,如coverity的构建参数和分析参数、-aggressiveness-level等。应该理解的是,代码语言选择、扫描语言、编译指令、仓库地址、构建参数均可统称为产品信息,即扫描任务的基本信息。
具体地,与任务标识相对应的任务信息还包括:扫描策略信息、依赖信息。其中,扫描策略信息用于指示与扫描任务相关的扫描工具的判定标准,即判定对应扫描任务是否通过安全扫描。依赖信息用于表示子模块的依赖关系,即触发代码测试事件的子模块与该项目中其他子模块的依赖关系,如子模块a触发了代码测试事件,但子模块a依赖于子模块b或依赖于项目c,则子模块a与子模块b的依赖关系,或子模块a与项目c的依赖关系由依赖信息表示。
S304、获取至少一个执行机的工作状态。
具体地,执行机的工作状态是指对应执行机是否可以响应扫描任务,以及是否正在执行扫描任务。
S305、基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具。
具体地,基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具是指通过工作状态确定扫描任务由哪台执行机执行,并通过产品信息,对执行扫描任务的执行机中所需使用的扫描工具进行相关设置,以及明确仓库地址等信息,即确定与任务标识相对应的至少一种扫描工具。
S306、基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总。
具体地,基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果是指明确子模块的依赖关系以及所使用的扫描工具的判定标准,从而通过扫描工具确定与扫描任务标识相对应的扫描结果。
本发明提供的一种安全扫描在研发流程中集成的方法,通过获取子模块标识,建立扫描任务,从而明确与任务标识相对应的扫描策略信息、依赖信息以及产品信息,进而通过确定的产品信息确定与扫描任务相对应的扫描工具,这一过程中,由于产品信息可以明确了扫描任务的基本信息,即明确与扫描任务、扫描工具相关的信息,因此,通过产品信息可以实现扫描工具的确定,从而减少了针对不同扫描任务,单独进行扫描工具适配的过程,从而减少了安全扫描中人工的介入,提升了安全扫描方法的适用性。并且由于依赖信息可以明确子模块的依赖关系,即明确了子模块在完整应用中的执行顺序或子模块与完整应用中其他组件的关系,从而解决了持续集成问题,使得动态扫描可以覆盖多个组件组合而成的完整应用这一应用场景,进一步提升了安全扫描方法的适用性。
在一种可选实施方式中,为建立扫描任务与扫描工具的对应关系,即由哪个或哪些扫描工具执行扫描任务,以及省略单独进行扫描工具适配的过程,基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具,包括:
(1)基于工作状态,确定执行扫描任务的第一执行机。
在一种可选实施方式中,基于工作状态,确定执行扫描任务的第一执行机,包括:
基于工作状态,确定至少一个执行机的空闲状态与可用状态。
具体地,执行机的可用状态是指执行机是否可以响应安全扫描的状态查询,即此刻执行机是否可用,通常采用定时轮询或设置针对执行机的状态监控的方式,确定执行机的可用状态。
具体地,执行机的可用状态是指执行机上是否有正在执行的扫描任务,即此刻执行机是否空闲,同样可以采用定时轮询或设置针对执行机的状态监控的方式,确定执行机的空闲状态。
基于空闲状态与可用状态,确定执行扫描任务的第一执行机。
具体地,基于空闲状态与可用状态,确定执行扫描任务的第一执行机是指通过确定至少一个执行机的空闲状态与可用状态,确定哪个或哪些执行机可以用于执行扫描任务,并从可以执行扫描任务的执行机中选取一台执行机执行扫描任务,即确定执行扫描任务的第一执行机。
在一种可选实施方式中,基于工作状态,确定执行扫描任务的第一执行机,包括:
基于工作状态,确定至少一个执行机的工作类型。
具体地,执行机的工作类型是指执行机可以执行哪类扫描任务,如可以执行静态扫描的执行机、可以执行动态扫描的执行机、可以执行静态扫描与动态扫描的执行机,应该理解的是执行机的工作类型取决于部署在执行机上的扫描工具的类型,即同一执行机上可以部署一种类型扫描工具,也可以部署多种类型的扫描工具。
具体地,基于工作状态,确定至少一个执行机的工作类型是指通过确定执行机可以执行的扫描任务类型,确定执行机可以用于执行哪类扫描任务,即确定至少一个执行机的工作类型。
基于工作类型,确定执行扫描任务的第一执行机。
具体地,基于工作类型,确定执行扫描任务的第一执行机是指通过确定至少一个执行机的工作类型,确定哪个或哪些执行机可以用于执行哪种类型的扫描任务,并在可以执行的任务类型与扫描任务相符时,从中选取一台执行机执行扫描任务,即确定执行扫描任务的第一执行机。
在一种可选实施方式中,基于工作状态,确定执行扫描任务的第一执行机,包括:
获取扫描任务的优先级。
基于扫描任务的优先级与执行机的工作状态,确定执行扫描任务的第一执行机。
具体地,扫描任务的优先级用于表示扫描任务的紧迫程度,在有多个代码测试事件时,通过获取扫描任务的优先级可以明确对应扫描任务的优先级关系,从而在多个扫描任务需要进行扫描时,优先对紧迫程度更高的扫描任务部署执行机。
具体地,执行机的工作状态是指基于工作状态,确定至少一个执行机的空闲状态与可用状态时,基于扫描任务的优先级与执行机的工作状态,确定执行扫描任务的第一执行机是指通过执行机的空闲状态与可用状态,选取可以执行任务的执行机,并根据扫描任务的优先级,由扫描任务的紧迫程度由高至低以此排序,确定执行每个扫描任务的执行机,即确定执行扫描任务的第一执行机。通过获取扫描任务的优先级,并确定执行机的可用状态或空闲状态,从而通过确定扫描任务的紧迫程度,对扫描任务的执行顺序进行排序,从而增强执行机运行的合理性,提升扫描任务的执行效率。
具体地,执行机的工作状态是指基于工作状态,确定至少一个执行机的工作类型时,基于扫描任务的优先级与执行机的工作状态,确定执行扫描任务的第一执行机是指通过执行机的工作状态,确定执行机可以执行哪类扫描任务,并根据扫描任务的优先级,由扫描任务的紧迫程度由高至低以此排序,选取可以执行扫描任务对应类型的执行机,即确定执行扫描任务的第一执行机。通过获取扫描任务的优先级,并确定执行机可以执行哪类扫描任务,从而通过确定扫描任务的紧迫程度,对不同类型的扫描任务进行合理排序,从而增强执行机运行的合理性,提升扫描任务的执行效率。
(2)基于产品信息与第一执行机,确定任务标识与第一执行机的对应关系。
具体地,基于产品信息与第一执行机,确定任务标识与第一执行机的对应关系是指在明确第一执行机后,确定扫描任务与第一执行机的对应关系,即将与任务标识相对应的扫描任务的基本信息发送至第一执行机。
(3)基于对应关系,将代码语言选择、扫描语言、编译指令、仓库地址、构建参数发送至所述第一执行机。
(4)通过代码语言选择确定子模块开发所使用的代码类型、通过扫描语言确定需要扫描的类型、通过编译指令确定在扫描工具需要进行编译时,如何执行编译、通过仓库地址确定拉取与扫描任务相对应的最新代码的代码仓库存储地址、通过构建参数确定针对不同的扫描工具进行与扫描任务相关的设置,从而确定与任务标识相对应的至少一种扫描工具。
具体地,基于对应关系,确定与任务标识相对应的至少一种扫描工具是指在确定执行扫描的任务的第一执行机后,通过对应关系获得与任务标识对应的产品信息,并通过产品信息对第一执行机中部署的扫描工具进行配置,即确定与任务标识相对应的至少一种扫描工具。
通过实施本实施例,通过执行机的工作状态确定执行扫描任务的第一执行机,建立任务标识与第一执行机的对应关系,从而确定与任务标识相对应的扫描工具。这一过程中,由于产品信息用于明确提交代码所使用的编程语言、需要扫描的类型、在扫描工具需要进行编译时,如何执行编译、拉取与扫描任务相对应的最新代码的相应代码仓库地址以及针对不同的扫描工具进行与扫描任务相关的设置,因此,在确定第一执行机后,部署在第一执行机中的扫描工具仅需通过获取产品信息,即可完成扫描工具的选取与适配,并且这一过程中无需因为扫描任务的不同对扫描工具进行单独的配置,从而减少了安全扫描中人工的介入,提升了安全扫描方法的适用性。
在一种可选实施方式中,为确保安全扫描方法可以覆盖多个组件间执行动态扫描的应用场景,基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总,包括:
(1)基于依赖信息,确定子模块在代码测试事件中的依赖关系。
具体地,基于依赖信息,确定子模块在代码测试事件中的依赖关系是指通过依赖信息,确定触发代码测试事件的子模块在完整应用中的执行顺序或子模块与完整应用中其他组件的关系。如子模块a触发了代码测试事件,但是子模块a的执行依赖于子模块b的执行,那么子模块a的依赖关系是指子模块a依赖于子模块b,关于子模块a的扫描任务需要同时针对子模块b;又如子模块a触发了代码测试事件,但是子模块a的运行结果影像子模块d或项目c,因此,关于子模块a的修改,影响了子模块d或项目c,那么子模块a的依赖关系是指子模块a影像子模块b或项目c,关于子模块a的扫描任务需要同时针对子模块b或项目c。
(2)基于依赖关系,通过至少一种扫描工具,以扫描策略信息对子模块进行扫描,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总。
具体地,扫描策略信息用于指示与扫描任务相关的扫描工具的判定标准,包括:扫描工具名称及与扫描工具名称对应的安全等级,通常扫描工具名称对应的安全等级通过允许的漏洞数量体现。
具体地,基于依赖关系,通过至少一种扫描工具,以扫描策略信息对子模块进行扫描,确定与任务标识相对应的扫描结果是指通过依赖关系确定扫描任务需要针对哪些模块或项目进行扫描,并通过由产品信息确定的扫描工具,通过扫描策略信息对子模块进行扫描,其中,通过扫描策略信息对子模块进行扫描可以是在扫描策略信息中设置漏洞数量为小于等于1时,则表示扫描任务要求的安全等级较高,在扫描结果中漏洞数量大于1个时,则会判定扫描任务未通过该扫描工具的安全扫描,即对应扫描工具与任务标识相对应的扫描结果为失败,同理在扫描结果中漏洞数量小于等于1时,则为通过。应该理解的是,在扫描工具名称对应的安全等级通过允许的漏洞数量体现时,允许的漏洞数量可以根据实际工况设定,本发明对此不做具体限制。
通过实施本实施例,通过依赖信息确定子模块在代码测试事件中的依赖关系,并通过扫描策略信息判定扫描结果。这一过程中,由于依赖信息可以明确子模块的依赖关系,即明确了子模块在完整应用中的执行顺序或子模块与完整应用中其他组件的关系,从而解决了持续集成问题,使得在扫描任务需进行动态扫描可以覆盖多个组件组合而成的完整应用这一应用场景,进一步提升了安全扫描方法的适用性。
在一种可选实施方式中,扫描策略信息,还包括前次扫描漏洞数量。
具体地,基于依赖关系,通过至少一种扫描工具,以扫描策略信息对子模块进行扫描,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总是指通过依赖关系确定扫描任务需要针对哪些模块或项目进行扫描,并由产品信息确定的扫描工具,通过扫描策略信息对子模块进行扫描,扫描策略信息包含的与扫描工具名称对应的安全等级通过前次扫描漏洞数量,以及允许的漏洞数量的和体现,从而可以体现仅针对本次提交的代码进行安全扫描。如在前次子模块a提交的代码触发代码测试事件时,所使用的扫描工具为fortify,允许的漏洞数量为1个,对应的扫描结果为存在4个安全漏洞,即前次扫描漏洞数量为4个,在子模块a提交的代码触发代码再次测试事件时,本次中如未针对前次存在问题进行修改,而是增加了新的内容,那么在本次子模块a提交的代码触发代码测试事件时,如所使用的扫描工具扔为fortify,则允许的漏洞数量为5个,即前次扫描漏洞数量4个与允许的漏洞数量1个相加的结果,从而通过获取前次扫描漏洞数量,实现仅针对本次修改的内容进行安全扫描,并获得仅针对本次修改的安全扫描结果。
通过实施本实例,通过依赖信息确定子模块在代码测试事件中的依赖关系,并通过扫描策略信息判定扫描结果。这一过程中,由于依赖信息可以明确子模块的依赖关系,即明确了子模块在完整应用中的执行顺序或子模块与完整应用中其他组件的关系,从而解决了持续集成问题,使得在扫描任务需进行动态扫描可以覆盖多个组件组合而成的完整应用这一应用场景,并且由于扫描策略信息还包括前次扫描漏洞数量,通过前次扫描漏洞数量与扫描工具名称对应的安全等级,使得在前次的扫描的问题未修改的情况下,针对在前次基础上新增加的内容进行扫描,从而仅确定新增加内容是否
通过实施本实例,在一种可选实施方式中,为减少安全扫描的运行负荷,在响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识之前,方法还包括:
获取扫描配置信息。
具体地,扫描配置信息是指可以触发代码测试事件的重要程度。
基于扫描配置信息,判断是否对代码测试事件进行响应。
具体地,基于扫描配置信息,判断是否对代码测试事件进行响应是指在可以触发代码测试事件的重要程度较低时,则无需对代码测试事件进行响应,即,相应子模块无需进行安全扫描即可实现将代码存入代码仓库。
通过实施本实施例,通过扫描配置信息,判断是否需要对触发代码测试事件的子模块进行安全扫描,从而使部分无需进行安全扫描的代码测试事件被忽略,有效减少了代码入库操作的耗时,从而减少了安全扫描的运行负荷。
在一种可选实施方式中,为了可以使安全扫描任务随时进行,在基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总之后,方法还包括:
获取配置任务的设置信息,设置信息包括:与配置任务对应的依赖信息、扫描策略信息以及扫描工具。
具体地,配置任务是指由手动触发或通过如API接口触发的安全扫描任务。与配置任务对应的依赖信息、扫描策略信息以及扫描工具与上述实施例中内容相同,对此不再进行赘述。
基于与配置任务对应的依赖信息、扫描策略信息以及扫描工具,确定与配置任务对应的扫描结果。
具体地,基于与配置任务对应的依赖信息、扫描策略信息以及扫描工具,确定与配置任务对应的扫描结果的具体过程可参见上述实施例中关于步骤S306的相关描述,在此不再赘述。
在一种可选实施方式中,本实施例提供一种安全扫描在研发流程中集成的方法,集成为安全扫描模块,如图4所示,其中,安全扫描模块13包括:项目管理组件131、Web操作入口132、扫描任务组件133、子模块管理组件134。
项目管理组件131,用于管理项目的相关信息,包括:产品线管理1311、构建策略1312、项目依赖1313,其中,产品线管理1311用于存储如项目名称、产品线等信息;构建策略1312用于存储扫描策略信息;项目依赖1313用于存储依赖信息。
Web操作入口132,用于提供可视化页面设置配置任务的设置信息,如与配置任务对应的依赖信息、扫描策略信息以及扫描工具。
任务扫描组件133,用于管理以子模块为单位的扫描任务的执行,包括:扫描服务1331、扫描服务1332、扫描服务133n,其中,扫描服务1331、扫描服务1332、扫描服务133n均为部署在各执行机上的扫描服务,各扫描服务中均包含一种或多种扫描工具。
子模块管理组件134,包括子模块1341、子模块1342、子模块134n,其中,每个子模块均对应一个代码仓库,子模块管理组件134用于存储产品信息,如代码语言选择、扫描语言、编译指令、仓库地址、构建参数。
在一种可选实施方式中,将如图4所示的安全扫描模块通过shell脚本嵌入图1的自动化测试模块的测试流水线中,形成如图5所示流程,包括:代码库模块41、自动化测试模块42、安全扫描模块43。其中,代码库模块41以及自动化测试模块42与图1相同部分不再进行赘述,在自动化测试模块42中安全扫描任务触发,即触发代码测试事件时,扫描任务启动。并通过获取产品信息配置、项目依赖配置以及构建策略配置,即前述实施例中的产品信息、扫描策略信息与依赖信息,从而完成子模块项目代码管理配置、子模块项目代码编译配置、扫描服务配置以及扫描任务配置,随后完成扫描任务,形成扫描任务结果,并将扫描任务结果逐级发送至自动化测试模块42、代码库模块41,从而进行代码上库或代码修改。
在本实施例中还提供了一种安全扫描在研发流程中集成的装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种安全扫描在研发流程中集成的装置,如图6所示,该装置包括:
标识获取模块501,用于响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识。具体过程可参见上述实施例中关于步骤S301的相关描述,在此不再赘述。
标识添加模块502,用于基于子模块标识,建立扫描任务,并对扫描任务添加任务标识。具体过程可参见上述实施例中关于步骤S302的相关描述,在此不再赘述。
信息确定模块503,基于子模块标识,确定与任务标识相对应的任务信息,其中任务信息包括:扫描策略信息、依赖信息、产品信息,其中依赖信息用于表示子模块的依赖关系,产品信息用于表示扫描任务的基本信息。具体过程可参见上述实施例中关于步骤S303的相关描述,在此不再赘述。
状态获取模块504,获取至少一个执行机的工作状态。具体过程可参见上述实施例中关于步骤S304的相关描述,在此不再赘述。
工具确定模块505,基于产品信息与工作状态,确定与任务标识相对应的至少一种扫描工具。具体过程可参见上述实施例中关于步骤S305的相关描述,在此不再赘述。
结果汇总模块506,基于依赖信息、扫描策略信息,通过至少一种扫描工具,确定与任务标识相对应的扫描结果,并将扫描结果进行汇总。具体过程可参见上述实施例中关于步骤S506的相关描述,在此不再赘述。
本实施例中的安全扫描在研发流程中集成的装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图6所示的安全扫描在研发流程中集成的装置。
请参阅图7,图7是本发明可选实施例提供的一种计算机设备的结构示意图,如图7所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。
图7中以一个处理器10为例。处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,所述存储器20存储有可由至少一个处理器10执行的指令,以使所述至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,如图8所示,本发明的实施例还提供了一种计算机可读存储介质40,计算机可读存储介质40存储有计算机指令401,计算机指令401被处理器执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种安全扫描在研发流程中集成的方法,其特征在于,所述方法与服务器、至少一个执行机部署在同一网络环境中,所述服务器与至少一个所述执行机连接,每个所述执行机部署有多个扫描工具,所述方法包括:
响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识;
基于所述子模块标识,建立扫描任务,并对所述扫描任务添加任务标识;
基于所述子模块标识,确定与所述任务标识相对应的任务信息,其中所述任务信息包括:扫描策略信息、依赖信息、产品信息,其中所述依赖信息用于表示所述子模块的依赖关系,所述产品信息用于表示所述扫描任务的基本信息;
获取至少一个所述执行机的工作状态;
基于所述产品信息与所述工作状态,确定与所述任务标识相对应的至少一种所述扫描工具;
基于所述依赖信息、扫描策略信息,通过至少一种所述扫描工具,确定与所述任务标识相对应的扫描结果,并将所述扫描结果进行汇总。
2.根据权利要求1所述的方法,其特征在于,所述产品信息包括:代码语言选择、扫描语言、编译指令、仓库地址、构建参数,所述基于所述产品信息与所述工作状态,确定与所述任务标识相对应的至少一种所述扫描工具,包括:
基于所述工作状态,确定执行所述扫描任务的第一执行机;
基于所述产品信息与所述第一执行机,确定所述任务标识与所述第一执行机的对应关系;
基于所述对应关系,将所述代码语言选择、所述扫描语言、所述编译指令、所述仓库地址、所述构建参数发送至所述第一执行机;
通过所述代码语言选择确定子模块开发所使用的代码类型、通过所述扫描语言确定需要扫描的类型、通过所述编译指令确定在扫描工具需要进行编译时,如何执行编译、通过所述仓库地址确定拉取与扫描任务相对应的最新代码的代码仓库存储地址、通过所述构建参数确定针对不同的扫描工具进行与扫描任务相关的设置,从而确定与所述任务标识相对应的至少一种所述扫描工具。
3.根据权利要求2所述的方法,其特征在于,所述基于所述工作状态,确定执行所述扫描任务的第一执行机,包括:
基于所述工作状态,确定至少一个所述执行机的空闲状态与可用状态;
基于所述空闲状态与所述可用状态,确定执行扫描任务的第一执行机。
4.根据权利要求2所述的方法,其特征在于,所述基于所述工作状态,确定执行所述扫描任务的第一执行机,包括:
基于所述工作状态,确定至少一个所述执行机的工作类型;
基于所述工作类型,确定执行扫描任务的第一执行机。
5.根据权利要求1所述的方法,其特征在于,所述基于所述依赖信息、扫描策略信息,通过至少一种所述扫描工具,确定与所述任务标识相对应的扫描结果,并将所述扫描结果进行汇总,包括:
基于所述依赖信息,确定所述子模块在所述代码测试事件中的依赖关系;
基于所述依赖关系,通过至少一种所述扫描工具,以所述扫描策略信息对所述子模块进行扫描,确定与所述任务标识相对应的扫描结果,并将所述扫描结果进行汇总;其中,所述扫描策略信息用于指示与扫描任务相关的扫描工具的判定标准,包括:扫描工具名称及与扫描工具名称对应的安全等级。
6.根据权利要求1所述的方法,其特征在于,在所述响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识之前,方法还包括:
获取扫描配置信息;
基于所述扫描配置信息,判断是否对代码测试事件进行响应。
7.根据权利要求1所述的方法,其特征在于,在所述基于所述依赖信息、扫描策略信息,通过至少一种所述扫描工具,确定与所述任务标识相对应的扫描结果,并将所述扫描结果进行汇总之后,方法还包括:
获取配置任务的设置信息,所述设置信息包括:与所述配置任务对应的依赖信息、扫描策略信息以及扫描工具;
基于与所述配置任务对应的依赖信息、扫描策略信息以及扫描工具,确定与所述配置任务对应的扫描结果。
8.一种安全扫描在研发流程中集成的装置,其特征在于,所述装置与服务器、至少一个执行机部署在同一网络环境中,所述服务器与至少一个所述执行机连接,每个所述执行机部署有多个扫描工具,所述装置包括:
标识获取模块,用于响应于代码测试事件,获取触发代码测试事件的子模块的子模块标识;
标识添加模块,用于基于所述子模块标识,建立扫描任务,并对所述扫描任务添加任务标识;
信息确定模块,基于所述子模块标识,确定与所述任务标识相对应的任务信息,其中所述任务信息包括:扫描策略信息、依赖信息、产品信息,其中所述依赖信息用于表示所述子模块的依赖关系;
状态获取模块,获取至少一个所述执行机的工作状态;
工具确定模块,基于所述产品信息与所述工作状态,确定与所述任务标识相对应的至少一种所述扫描工具;
结果汇总模块,基于所述依赖信息、扫描策略信息,通过至少一种所述扫描工具,确定与所述任务标识相对应的扫描结果,并将所述扫描结果进行汇总。
9.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至7中任一项所述的安全扫描在研发流程中集成的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的安全扫描在研发流程中集成的方法。
CN202311276917.XA 2023-09-28 2023-09-28 一种安全扫描在研发流程中集成的方法、装置 Pending CN117332424A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311276917.XA CN117332424A (zh) 2023-09-28 2023-09-28 一种安全扫描在研发流程中集成的方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311276917.XA CN117332424A (zh) 2023-09-28 2023-09-28 一种安全扫描在研发流程中集成的方法、装置

Publications (1)

Publication Number Publication Date
CN117332424A true CN117332424A (zh) 2024-01-02

Family

ID=89278548

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311276917.XA Pending CN117332424A (zh) 2023-09-28 2023-09-28 一种安全扫描在研发流程中集成的方法、装置

Country Status (1)

Country Link
CN (1) CN117332424A (zh)

Similar Documents

Publication Publication Date Title
US8800047B2 (en) System, method and program product for dynamically performing an audit and security compliance validation in an operating environment
US9438617B2 (en) Application security testing
US9804952B1 (en) Application debugging in a restricted container environment
CN113760704A (zh) Web UI的测试方法、装置、设备以及存储介质
JP2013522727A (ja) バーチャルソフトウェアアプリケーションデプロイメント構成
CN112039900B (zh) 网络安全风险检测方法、系统、计算机设备和存储介质
CN111258591B (zh) 程序部署任务执行方法、装置、计算机设备和存储介质
CN106708727B (zh) 一种分布式病毒特征样本验证方法及系统
CN112685745B (zh) 一种固件检测方法、装置、设备及存储介质
CN111124871A (zh) 接口测试方法及装置
Dunagan et al. Towards a self-managing software patching process using black-box persistent-state manifests
US9652365B2 (en) Fault configuration using a registered list of controllers
Wotawa et al. Plan it! automated security testing based on planning
CN114021123A (zh) 行为基线库的构造方法、安全检查方法、装置及介质
CN111723374B (zh) 一种漏洞扫描方法及装置
KR100930962B1 (ko) 알피씨 기반 소프트웨어의 원격지 보안 테스팅 장치 및방법
CN110187890B (zh) 项目部署的方法、电子设备、存储介质
CN116561743A (zh) 业务流程的管理方法、装置、存储介质及电子设备
CN111026947A (zh) 一种爬虫方法以及基于浏览器的嵌入式爬虫实现方法
CN117332424A (zh) 一种安全扫描在研发流程中集成的方法、装置
US11057416B2 (en) Analyze code that uses web framework using local parameter model
CN104683179A (zh) 一种对对象的执行性能进行监控的方法、装置及系统
US20220164270A1 (en) Automatic optimization and hardening of application images
CN113296916A (zh) 脚本调度方法、设备、存储介质及计算机程序产品
CN111475783A (zh) 数据检测方法、系统及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination