目录
SonarQube是一个开源的代码分析平台,用来持续分析和评测项目源代码的质量。接下来将会简单介绍在Jenkins上如何集成SonarQube,在项目中实现安全扫描和分析代码质量。
一、Jenkins安装集成sonarqube
1.安装插件
在jenkins上点击【系统管理】-【插件管理】-可用的插件,搜索“sonar”,安装成功后,会在已有插件显示。
我的jenkins是通过docker-compose来控制的,所以在原来的基础上修改yaml文件内容:
version: '3.9'
services:
jenkins:
image: terra-jenkins
container_name: jenkins
user: root
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /root/compose/jenkins/jenkins_data:/var/jenkins_home
- /root/compose/jenkins/workspace:/var/jenkins_home/workspace
- /root/compose/jenkins/apache-maven-3.9.8:/usr/local/apache-maven/apache-maven-3.9.8
- /root/compose/jenkins/jdk-11.0.23:/usr/local/jdk-11.0.23
- /root/compose/jenkins/allure:/usr/local/allure
- /root/compose/jenkins/chromedriver:/usr/local/chromedriver
- /root/compose/jenkins/sonar-scanner:/usr/local/sonar-scanner
- /root/compose/jenkins/conf/profile:/root/.bashrc
environment:
- TZ=Asia/Shanghai
ports:
- "80:8080"
networks:
- jenkins-net
sonarqube:
image: sonarqube:latest
container_name: sonarqube
restart: always
environment:
- SONARQUBE_JDBC_URL=jdbc:h2:tcp://sonarqube-db:9092/sonar
volumes:
- /root/compose/sonarqube/data:/opt/sonarqube/data
- /root/compose/sonarqube/extensions:/opt/sonarqube/extensions
- /root/compose/sonarqube/logs:/opt/sonarqube/logs
- /root/compose/sonarqube/temp:/opt/sonarqube/temp
ports:
- "9090:9000"
depends_on:
- sonarqube-db
networks:
- jenkins-net
sonarqube-db:
image: postgres:12
container_name: sonarqube-db
restart: always
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
- POSTGRES_DB=sonar
volumes:
- /root/compose/sonarqube/db:/var/lib/postgresql/data
networks:
- jenkins-net
networks:
jenkins-net:
driver: bridge
重启服务后,访问:http://localhost:9090可打开sonarqube界面(用对应的IP)
2.配置权限(Jenkins访问Sonar的token)
登录sonar地址---【配置】-【权限】-【用户】-生成令牌,创建了新令牌“WEB-CSP”。请立即复制,不会再显示第二次!记得要复制这里的令牌哦,后面会用到!!
3.jenkins创建访问SonarQube凭据
路径:【系统管理】-【凭据】-【系统】-【全局凭据】-新建凭据
4.配置服务地址
路径:【系统管理】-【系统设置】-【SonarQube servers】-配置参数并选择刚刚设置的全局凭据。
5.全局工具配置
路径:【系统管理】-【全局工具配置】-【SonarScanner for MSBuild安装】和【SonarQube Scanner安装】-新增并勾选自动安装
6.项目中增加构建步骤
【项目】-【配置】-【增加构建步骤】,并在Analysis properties中配置sonar参数,保存后点击构建,控制台可查看到sonar执行成功。
二、本地安装集成sonarqube
1.准备工作
1.1 安装JDK11+
SonarQube从7.9版本开始,就需要有JDK11的环境。首先在本地安装JDK11。
1.2 安装SonarQube
下载地址:https://www.sonarqube.org/downloads/
下载社区版本即可,我本地下载的版本是:sonarqube-8.9.10.61524,下载后解压即可。
2.使用SonarQube进行安全扫描
2.1 启动SonarQube
下载得到的压缩包解压后,进入到/bin/windows-x86-64目录,双击StartSonar.bat启动服务。
这里最开始我下载的10.3版本过高,会出现命令框闪黑关闭的情况,后面下载低版本8.9问题解决。
启动成功效果显示:
启动成功后,访问:http://localhost:9000 ,通过初始账号密码admin/admin登录,首次登录成功后修改密码。
2.2 创建项目
点击创建项目-选择Manually,填写project key和Display name
然后点击continue继续,生成token令牌,点击continue。
根据自己的项目情况选择构建类型和操作系统。我是构建选择Other操作系统为Windows,选择后点击链接下载windows版本的sonar-scanner并配置对应的环境变量。
最后在对应的项目目录下复制扫描命令并执行,扫描成功后可查看到扫描结果。
可点击数字查看详情,可查看代码具体情况。
三、SonarQube导出PDF报告
1.安装插件
下载sonar-pdf-plugin插件,下载链接:https://gitee.com/zzulj/sonar-pdf-plugin/releases
下载sonar-pdfreport-plugin-4.0.0.jar,将下载好的插件拷贝到SonarQube安装目录的/exensions/plugins目录下,然后重启SonarQube服务。
2.导出PDF报告
重启完成后,进入项目目录,在more下看看到Download Pdf Report
在Administration-->Configuration-->General Settings-->PDF Report目录下,设置下载的用户名和密码。
接下来就可以正常下载生成的扫描报告啦~
四、SonarQube安全扫描思路
1.确定安全扫描工具---SonarQube
2.确定使用方式---Jenkins集成或本地安装集成
3.设计安全场景
4.编写安全场景测试用例
5.安全测试报告---主要包含:概要信息(报告的标题、日期、扫描范围等)、漏洞概况(对扫描结果进行概括性描述,包括漏洞数量、严重程度等)、漏洞详情(逐个漏洞详细说明,包括漏洞类型、影响范围、修复建议等)、风险评估、修复措施
6.同开发沟通处理步骤---优先处理高风险漏洞;分析漏洞原因;修复漏洞;加强安全意识培训;定期重复安全扫描