编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

DevOPS | SonarQube的一些深入配置

wxchong 2024-09-28 02:21:06 开源技术 9 ℃ 0 评论

DevOPS | 代码静态扫描工具SonarQube的安装和初步使用 基本上照着这篇文章去做,我们基本能做代码的静态扫描了。但是在实际落地过程,我们还需要做一些额外的配置以提高安全性等。

配置扫描规则

比如以Java的Sonar Way为例,默认有391条规则,然后又分为Blocker、Critical、Major、Minor和Info等级别。在实际使用过程中,为减少开发人员的抵触情绪和误报,一般我们可以只开启严重的级别,比如我这里只使用了Blocker和Critical,其他的暂时不开启了。

使用管理员账号登录Sonar,然后单击上方的Quality Profiles,我们选择Copy复制现有的Sonar way进行修改:

并输入新名称Demo Sonar way,保存后,直接跳入Demo Sonar way的配置页面。

首先我们将这个profile设置为默认的扫描:

然后点击左侧的规则进入是否激活页面:

接着选择需要取消的级别(Major、Minor和Info),并点击Bulk Change进行更改:

最后点击应用即可。

配置sonar项目的默认权限

默认情况下,Sonar项目的权限是public,也就是任何能登录Sonarqube的用户可以看到所有项目的问题和源码,这对于代码安全来说不可接受的。解决这个问题的方法,就是针对不同的用户或者组设置不同的权限:

首先进入项目管理,然后点击Administration下的Permissions:

进入权限管理后,我们可以看到,qa-training项目的权限是public,并在下方列出了不同的group和用户对应的权限:

在这里,我们先点击上方的Private,界面变化如下,

可以看到增加了Browse,See Source Code等权限控制,我们根据需要给不同的人和组相应的权限即可。

如果我们的项目权限针对的是同一个权限管理,那么可以通过修改permission template来进行统一管理:管理员账号登录后,点击Administration - Security - Permission Templates:

然后先建一个permission template,这里我们还可以选择特定的项目,我这里就是新建了一个Demo security template,然后只针对符合qa*这个正则表达式的项目起作用:

进去后针对不同的用户和组设置权限,保存即可。比如,我这里只有Administrator这个账号有权限,其他都无:

同时我们也可以选择该security template是否为默认的template。

在实际落地过程中,因为我司所有项目都放在Gitlab中,所以针对需要做代码扫描的项目,我这边做了定时任务,把有访问该gitlab项目的用户和组定时同步到sonarqube中,并将这些用户和组加入到sonar项目的权限中,这样,便实现了拥有gitlab项目访问权限的用户可以在sonarqube访问,而其他用户不能访问的安全管控。另外,我们使用管理员账号登录后,在Projects - Management下,需要把项目的默认查看权限改为Private:

分支支持

在实际的项目开发中,我们往往会有很多的分支,既有类似feature分支的短分支,也有类似release或者master的长分支。sonar对于分支的支持,默认只有在develop版本以上才有,如果想在开源版本下使用,我们可以使用sonarqube-community-branch-plugin这个插件https://github.com/mc1arke/sonarqube-community-branch-plugin,安装比较简单,直接从github的release下下载插件,并安装在/sonar/extensions/plugins/目录下即可。然后呢,在源码分析的时候增加sonar.branch.name即可。多说几句:

  • 短分支会定期清理(30天),在Administration - Configuration - Database Cleaner下:
  • 短分支主要关注的是新代码,也就是新代码引入的新问题
  • 长短分支的识别配置,在Administration - Configuration - General下:

其他详情可以参考sonarqube官网:https://docs.sonarqube.org/latest/branches/overview/

开启分支管理后的sonarqube界面改变如下:

总结

文章主要介绍了sonarqube在实际使用过程中,针对规则处理、权限和分支的支持,具有很好的实践价值,建议大家掌握使用。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表