SonarQube安装与使用
安装过程
备注:数据库不要使用MariaDB;不要使用root用户安装,es会启动失败
# 安装java环境
yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 -y
# 安装数据库
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
rpm -ivh mysql57-community-release-el7-10.noarch.rpm
yum install mysql-community-server.x86_64 -y
# 配置数据库
systemctl start mysqld.service
# 数据库初始密码
grep "password" /var/log/mysqld.log
# 修改数据库密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
# 创建数据库sonar
create database sonar;
# 下载,从这里开始应该使用普通用户操作
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.3.zip
# 解压
unzip sonarqube-7.3.zip && cd sonarqube-7.3/
# 修改配置文件
vim ./conf/sonar.properties
# 取消注释如下三行,并添加数据库账号密码
sonar.jdbc.username=root
sonar.jdbc.password=password
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
# 如果java环境是配置安装的,需要指定java环境:vim sonarqube-7.7/conf/wrapper.conf
# 启动sonarqube
./bin/linux-x86-64/sonar.sh start
# 访问:http://10.10.10.12:9000/sessions/new
# 账号:admin 密码:admin
# 重启服务
./bin/linux-x86-64/sonar.sh restart
使用过程
汉化
在Administration菜单栏,选择Marketplace标题,在搜索框输入chinese进行搜索,然后进行安装
完成后会提示重启服务
Sonar Scanner
# 任意用户均可
wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.2.0.1227-linux.zip
# 解压
unzip sonar-scanner-cli-3.2.0.1227-linux.zip
# 添加环境变量
cd sonar-scanner-3.2.0.1227-linux/
vim /etc/profile
export SONAR_SCANNER_HOME=/home/bloodzer0/sonar-scanner-3.2.0.1227-linux
export PATH=$PATH:$SONAR_SCANNER_HOME/bin
source /etc/profile
# 验证安装
sonar-scanner -v
Sonar Scanner分析项目
点击项目--分析新项目
JS、Python、PHP
sonar-scanner \
-Dsonar.projectKey=security-test \
-Dsonar.sources=. \
-Dsonar.host.url=http://10.10.10.12:9000 \
-Dsonar.login=token
测试sqlmap项目:
git clone https://github.com/sqlmapproject/sqlmap.git
cd sqlmap
# 执行上面的代码
# 分析完成后,在web界面查看分析结果
Java-Maven
mvn sonar:sonar \
-Dsonar.host.url=http://10.10.10.12:9000 \
-Dsonar.login=token
Java-Gradle
# 在build.gradle文件中声明
plugins {
id "org.sonarqube" version "2.6"
}
# 然后执行命令
./gradlew sonarqube \
-Dsonar.host.url=http://10.10.10.12:9000 \
-Dsonar.login=token
C#或VB.NET
SonarScanner.MSBuild.exe begin /k:"test" /d:sonar.host.url="http://10.10.10.12:9000" /d:sonar.login="token"
MsBuild.exe /t:Rebuild
SonarScanner.MSBuild.exe end /d:sonar.login="token"
使用配置文件进行扫描
在项目目录新建sonar-project.properties文件
# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1.
sonar.projectName=My project
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=.
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
集成Gitlab-CI做自动化扫描
gitlab-ci.yml文件内容
sast:
stage: test
script:
- sonar-scanner -Dsonar.host.url=http://10.10.10.12:9000 -Dsonar.login=token -Dsonar.issuesReport.console.enable=True -Dsonar.projectKey=$CI_PROJECT_NAME -Dsonar.java.binaries=$PWD
tags:
- sec
only:
- master
根据SonarQube结果执行pipelines
- 配置sonar质量阈;
- gitlab ci 判断 sonar的执行状态;
if curl http://10.10.10.5:9000/api/qualitygates/project_status?projectKey=go-language: | grep 'ERROR'; then echo "error" exit 1; fi