SonarQube项目操作权限配置方法及装置与流程

文档序号:26103329发布日期:2021-07-30 18:15阅读:670来源:国知局
SonarQube项目操作权限配置方法及装置与流程

本发明涉及代码质量管理技术领域,具体而言,涉及一种sonarqube项目操作权限配置方法及装置。



背景技术:

sonarqube是业界广泛使用的代码质量管理平台(以下简称为sonarqube或sonarqube平台),sonarqube为一种静态代码检查工具,采用b/s架构,帮助检查代码缺陷,改善代码质量,提高开发速度,通过插件形式,可以支持java、c、c++、javascripe等等二十几种编程语言的代码质量管理与检测。由于扫描代码涉及使用应用的源码,需要关注源码的安全,对源码需要实行最小范围的授权,防止代码泄露。

目前在使用sonarqube进行代码扫描时,先从git代码版本管理平台(以下简称为git或者git平台)下载代码到执行机上,在执行机上通过sonarqube客户端以版本库为单位进行扫描,扫描完会把结果上送到sonarqube服务器,在sonarqube平台上可以按sonarqube项目查看源码,通过源码视图看代码的静态扫描问题和复杂度、冗余度等信息。因为源码安全是系统开发中不可规避的问题,代码作为核心资产,需要对代码库的源码进行权限管理,如果应用开发人员需要查看源码,需要把自己的用户和需要访问的sonarqube项目通知管理员,管理员需要对实现情况进审核并分配对应项目的操作权限。如果sonarqube项目很多,应用开发人员很多,则给管理员带来非常大的工作量。因此现有技术缺少一种更为高效的对sonarqube项目进行操作权限配置的方案。



技术实现要素:

本发明为了解决上述背景技术中的技术问题,提出了一种sonarqube项目操作权限配置方法及装置。

为了实现上述目的,根据本发明的一个方面,提供了一种sonarqube项目操作权限配置方法,该方法包括:

接收sonarqube平台发送的调用接口信息,其中,所述调用接口信息包含sonarqube项目的名称;

从所述名称中解析出所述sonarqube项目对应的git权限组;

若所述sonarqube平台中不存在所述git权限组对应的用户组,则从git平台获取所述git权限组的用户信息,并根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组;

根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限。

可选的,所述根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组,具体包括:

在所述sonarqube平台中创建所述git权限组对应的用户组;

通过ldap认证服务器对所述用户信息中的每个用户进行验证;

将验证通过的每个用户添加到创建的用户组中。

可选的,该sonarqube项目操作权限配置方法,还包括:

判断所述git平台中的目标git权限组在所述sonarqube平台是否存在对应的用户组;

若存在对应的用户组,则确定所述目标git权限组的用户信息与该对应的用户组的用户信息是否相同;

若用户信息不相同,则根据所述git权限组的用户信息对该对应的用户组进行修改,其中,对用户组进行修改具体包括:在用户组中新增用户、在用户组中删除用户以及修改用户组中用户的类型。

可选的,该sonarqube项目操作权限配置方法,还包括:

若不存在对应的用户组,则根据所述目标git权限组的用户信息在所述sonarqube平台中创建所述目标git权限组对应的用户组。

可选的,所述根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限,具体包括:

若用户的类型为应用开发人员,则为用户分配所述sonarqube项目的浏览权限以及查看源码权限;

若用户的类型为管理员,则为用户分配所述sonarqube项目的浏览权限、查看源码权限、问题管理权限、安全热点管理权限、系统管理权限以及执行分析权限。

可选的,所述调用接口信息为所述sonarqube平台在创建git版本库对应的sonarqube项目之后发送的。

可选的,所述sonarqube项目的名称中包含所述git版本库的标识信息以及所述git版本库所属的git权限组的标识信息。

可选的,所述调用接口信息具体为所述sonarqube平台完成对所述git版本库中的源码进行扫描之后发送的。

可选的,在所述根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限之前,还包括:

将所述sonarqube项目设成私有项目,并清空所述sonarqube项目的操作权限。

为了实现上述目的,根据本发明的另一方面,提供了一种sonarqube项目操作权限配置装置,该装置包括:

调用接口信息接收模块,用于接收sonarqube平台发送的调用接口信息,其中,所述调用接口信息包含sonarqube项目的名称;

git权限组确定模块,用于从所述名称中解析出所述sonarqube项目对应的git权限组;

用户组创建模块,用于若所述sonarqube平台中不存在所述git权限组对应的用户组,则从git平台获取所述git权限组的用户信息,并根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组;

权限配置模块,用于根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限。

可选的,所述用户组创建模块,具体包括:

用户组建立单元,用于在所述sonarqube平台中创建所述git权限组对应的用户组;

用户验证单元,用于通过ldap认证服务器对所述用户信息中的每个用户进行验证;

用户添加单元,用于将验证通过的每个用户添加到创建的用户组中。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述sonarqube项目操作权限配置方法中的步骤。

为了实现上述目的,根据本发明的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述sonarqube项目操作权限配置方法中的步骤。

本发明的有益效果为:本发明实施例通过则从git平台获取sonarqube项目对应的git权限组的用户信息,并根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组,进而根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限,提高了配置sonarqube项目的操作权限的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明实施例sonarqube项目操作权限配置方法的第一流程图;

图2是本发明实施例创建用户组的流程图;

图3是本发明实施例sonarqube项目操作权限配置方法的第二流程图;

图4是本发明实施例sonarqube项目操作权限配置装置的第一结构框图;

图5是本发明实施例用户组创建模块示意图;

图6是本发明实施例sonarqube项目操作权限配置装置的第二结构框图;

图7是本发明实施例计算机设备示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。

为了便于对本发明进行理解,首先先对本发明涉及到的sonarqube代码质量管理平台(本发明简称为sonarqube或sonarqube平台)以及git代码版本管理平台(本发明简称为git或者git平台)进行介绍。

git和sonarqube是两套不同的平台,sonarqube无法直接使用git相关的数据。

git版本库repository是git的代码仓库,git版本库repository作为管理单元,在源码的权限管理中,是以实行以权限组group为单位的权限管理制,一个权限组group下面有多个版本库repository,一个权限组group下面有多个members用户,权限组中的下属用户才有权限对这个权限组的版本库repo进行访问。

sonarqube采用标准的权限管理方式,可根据需要创建所属数量的用户或用户组,用户可以归属一个或多个用户组。用户或用户组可可被赋予多重权限。这些权限能够访问项目、服务和各个功能。

本发明使用sonarqube进行代码扫描时,以git中的权限库为一次扫描单元,建立sonarqube项目和git版本库的对应关系。在扫描完git版本库后,创建这个权限组命名的sonarqube用户组,并在sonarqube平台创建git权限组下所有用户的账号以及对该sonarqube用户组的操作权限,这样在任务扫描完后可以实现自动分配权限。通过权限的实时分配可以减少sonarqube管理员和应用开发人员的沟通成本,提高权限分配的效率,进而达到提高sonarqube源码权限管理的效率的目的。

图1是本发明实施例sonarqube项目操作权限配置方法的第一流程图,如图1所示,在本发明一个实施例中,本发明的sonarqube项目操作权限配置方法包括步骤s101至步骤s104。

步骤s101,接收sonarqube平台发送的调用接口信息,其中,所述调用接口信息包含sonarqube项目的名称。

在本发明一个实施例中,所述调用接口信息为所述sonarqube平台在创建git版本库对应的sonarqube项目之后发送的。

在本发明一个实施例中,sonarqube项目用于对git平台中的目标git版本库中的源码进行扫描。git平台中包含多个git权限组,一个git权限组包含一个或多个git版本库,同时一个git权限组下面包含有多个用户,git权限组中下属的用户才有权限对这个git权限组的git版本库进行访问。其中git权限组下面包含的用户有两种类型,管理员以及应用开发人员。

在本发明一个实施例中,所述sonarqube项目的名称中包含所述git版本库的标识信息以及所述git版本库所属的git权限组的标识信息。在一个可选实施例中,git版本库的标识信息可以为git版本库名称,git权限组的标识信息可以为git权限组名称。

在本发明一个实施例中,所述调用接口信息具体为所述sonarqube平台完成对所述git版本库中的源码进行扫描之后发送的。

在本发明一个实施例中,为了能够实时响应sonarqube新增项目的权限分配,需要利用sonarqube服务器的回调接口机制,回调接口会在项目创建完成后触发。在本发明一个实施例中,在接收到sonarqube调用接口信息后,通过解析调用接口信息得知两个关键信息,sonarqube项目名和sonarqube服务器的地址。sonarqube项目名用于解析出该项目扫描的是哪个git版本库和git权限组的代码,sonarqube服务器的地址用于调用授权操作。

步骤s102,从所述名称中解析出所述sonarqube项目对应的git权限组。

本发明为了能把sonarqube平台和git平台信息关联起来,需要规范sonarqube项目的命名,使项目名称可以区分出不同git权限组和git版本库。

步骤s103,若所述sonarqube平台中不存在所述git权限组对应的用户组,则从git平台获取所述git权限组的用户信息,并根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组。

在本发明一个实施例中,所述用户信息包含属于所述git权限组的每个用户的用户名称以及用户类型。

在本发明一个实施例中,本步骤的在sonarqube平台创建用户组,具体为通过调用sonarqube平台的api接口来创建用户组。sonarqube平台提供一些webapi接口,管理员/用户可以在浏览器中调用的http接口。为了能够实现系统自动调起接口,利用http客户端工具httpclient.jar,通过基本认证baseauthentication,封装成http调用接口。

步骤s104,根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限。

在本发明一个实施例中,在步骤s104之前,本发明方法还包括:将所述sonarqube项目设成私有项目,并清空所述sonarqube项目的操作权限。

图2是本发明实施例创建用户组的流程图,如图2所示,上述步骤s103的根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组,具体包括步骤s201至步骤s203。

步骤s201,在所述sonarqube平台中创建所述git权限组对应的用户组。

步骤s202,通过ldap认证服务器对所述用户信息中的每个用户进行验证。

在本发明实施例中,为了能和git平台用户实现共通,本发明在sonarqube创建的用户需要使用ldap认证,本发明将sonarqube集成到ldap认证服务器,以下配置在sonarqube的配置文件的sonar.properties关于ldap的配置,作用为在sonarqube进行用户校验时,连接ldap服务器进行验证。这样我们可以使用ldap服务器进行登录验证。

步骤s203,将验证通过的每个用户添加到创建的用户组中。

图3是本发明实施例sonarqube项目操作权限配置方法的第二流程图,如图3所示,在本发明一个实施例中,本发明的sonarqube项目操作权限配置方法包括步骤s301至步骤s303。

步骤s301,判断所述git平台中的目标git权限组在所述sonarqube平台是否存在对应的用户组。

在本发明实施例中,本步骤为定时执行或者每个预设的时间执行一次。

在本发明一个实施例中,在执行本步骤之前,本发明还先将git平台中的每个权限组设置为目标git权限组。

步骤s302,若存在对应的用户组,则确定所述目标git权限组的用户信息与该对应的用户组的用户信息是否相同。

步骤s303,若用户信息不相同,则根据所述git权限组的用户信息对该对应的用户组进行修改,其中,对用户组进行修改具体包括:在用户组中新增用户、在用户组中删除用户以及修改用户组中用户的类型。

在本发明一个实施例中,在上述步骤s301之后,本发明方法还包括:

若不存在对应的用户组,则根据所述目标git权限组的用户信息在所述sonarqube平台中创建所述目标git权限组对应的用户组。

在本发明一个实施例中,上述步骤s104的根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限,具体包括:

若用户的类型为应用开发人员,则为用户分配所述sonarqube项目的浏览权限以及查看源码权限;

若用户的类型为管理员,则为用户分配所述sonarqube项目的浏览权限、查看源码权限、问题管理权限、安全热点管理权限、系统管理权限以及执行分析权限。

本发明为了实现自动的对sonarqube项目的操作权限进行配置,使用了联机和批量两种方式。联机在sonarqube项目新增入库的时候触发,主要是对新增的项目进行权限分配,实时处理项目的权限信息。批量为定时执行,例如在每天晚上定时执行,主要用于同步git代码管理系统的权限信息,清理过期用户及其它过期信息,并可在一定程度提升联机处理的效率。

本发明为了能够提高权限分配的效率,并且对一些过期的权限进行回收,将设置一个批量对用户进行授权的方案。

本发明从git平台中读取所有git权限组,判断git权限组名在sonarqube是否存在对应的用户组,如果sonarqube中没有对应用户组,则调用api接口在sonarqube中创建用户组。

本发明针对每个git权限组查看包含该git权限组名称的sonarqube项目名,对每个sonarqube项目进行以下操作:

1、把项目设成私有项目,则调用api接口清空项目的权限,查看该版本库在git的成员信息。

2、如果成员信息在sonarqube不存在用户,则调用api接口在sonarqube创建该成员用户。

3、如果用户在git角色是管理员,则根据分配权限策略配置文件,调用api接口给启用分配这个项目的项目的浏览权限、查看源码权限、问题管理权限、安全热点管理权限、系统管理权限以及执行分析权限。

4、如果是应用开发人员,则调用api接口把用户加到用户组,再调用api接口把项目浏览权限以及查看源码权限分配给用户组。

由以上实施例可以看出,本发明方法至少实现了以下有益效果:

1、本发明通过权限的实时分配可以减少sonarqube管理员和应用开发人员的沟通成本,避免手动开通权限的失误导致权限,以达到提高sonarqube源码权限管理的效率的目的。

2、本发明通过联机和批量两种方式组合,可更加更灵活的实现权限管理。

3、本发明可修改配置文件内容调整分配策略,进一步精细化权限管理。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

基于同一发明构思,本发明实施例还提供了一种sonarqube项目操作权限配置装置,可以用于实现上述实施例所描述的sonarqube项目操作权限配置方法,如下面的实施例所述。由于sonarqube项目操作权限配置装置解决问题的原理与sonarqube项目操作权限配置方法相似,因此sonarqube项目操作权限配置装置的实施例可以参见sonarqube项目操作权限配置方法的实施例,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图4是本发明实施例sonarqube项目操作权限配置装置的第一结构框图,如图4所示,在本发明一个实施例中,本发明的sonarqube项目操作权限配置装置包括:

调用接口信息接收模块1,用于接收sonarqube平台发送的调用接口信息,其中,所述调用接口信息包含sonarqube项目的名称;

git权限组确定模块2,用于从所述名称中解析出所述sonarqube项目对应的git权限组;

用户组创建模块3,用于若所述sonarqube平台中不存在所述git权限组对应的用户组,则从git平台获取所述git权限组的用户信息,并根据所述用户信息在所述sonarqube平台中创建所述git权限组对应的用户组;

权限配置模块4,用于根据用户的类型为创建的用户组中的每个用户分配所述sonarqube项目的操作权限。

图5是本发明实施例用户组创建模块示意图,如图5所示,在本发明一个实施例中,上述用户组创建模块3具体包括:

用户组建立单元301,用于在所述sonarqube平台中创建所述git权限组对应的用户组;

用户验证单元302,用于通过ldap认证服务器对所述用户信息中的每个用户进行验证;

用户添加单元303,用于将验证通过的每个用户添加到创建的用户组中。

图6是本发明实施例sonarqube项目操作权限配置装置的第二结构框图,如图6所示,在本发明一个实施例中,本发明的sonarqube项目操作权限配置装置还包括:

对应用户组查找模块5,用于判断所述git平台中的目标git权限组在所述sonarqube平台是否存在对应的用户组;

用户信息验证模块6,用于若存在对应的用户组,则确定所述目标git权限组的用户信息与该对应的用户组的用户信息是否相同;

用户组修改模块7,用于若用户信息不相同,则根据所述git权限组的用户信息对该对应的用户组进行修改,其中,对用户组进行修改具体包括:在用户组中新增用户、在用户组中删除用户以及修改用户组中用户的类型。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机设备。如图7所示,该计算机设备包括存储器、处理器、通信接口以及通信总线,在存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例方法中的步骤。

处理器可以为中央处理器(centralprocessingunit,cpu)。处理器还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及单元,如本发明上述方法实施例中对应的程序单元。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及作品数据处理,即实现上述方法实施例中的方法。

存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个单元存储在所述存储器中,当被所述处理器执行时,执行上述实施例中的方法。

上述计算机设备具体细节可以对应参阅上述实施例中对应的相关描述和效果进行理解,此处不再赘述。

为了实现上述目的,根据本申请的另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在计算机处理器中执行时实现上述sonarqube项目操作权限配置方法中的步骤。本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1