美文网首页
利用SonarQube + jenkins + maven搭建代

利用SonarQube + jenkins + maven搭建代

作者: rogger | 来源:发表于2017-08-23 12:59 被阅读0次

    软件产品代码安全问题,一直是影响软件产品质量的重要因素,糟糕的代码质量,导致产品上线后漏洞百出,再想修补时耗时耗力。因此,在产品开发阶段引入代码安全审查,改善代码质量,减少代码安全问题,是避免产品安全漏洞比较经济有效的手段。目前国内外有许多代码审计商业产品,如Fortify、Checkmarx、360代码卫士等,价格不菲,另外也有一些以云服务方式的代码审计产品,需要代码上传到云端进行审计,存在核心代码泄露的风险。实际上,利用现有的一些开源软件组合,也能轻松实现自动化的代码安全审计。本文利用SonarQube + jenkins + maven搭建代码安全审查平台。

    系统环境:centos7

    1、安装Java8

    • 如果系统原有安装低版本的java,需要先卸载掉
    • 下载jdk8 ,网址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
    • 上传新的jdk-8u121-linux-x64.rpm软件到/tmp,安装java
      rpm -ivh jdk-8u121-linux-x64.rpm
    • 安装完成后,使用命令 java -version确认安装成功
    • 配置JDK环境变量JDK环境变量。
      修改系统环境变量文件
      vi + /etc/profile
      向文件里面追加以下内容:
    JAVA_HOME=/usr/java/jdk1.8.0_25
    JRE_HOME=/usr/java/jdk1.8.0_25/jre
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
    export JAVA_HOME JRE_HOME PATH CLASSPATH
    

    使修改生效
    source /etc/profile //使修改立即生效
    echo $PATH //查看PATH值

    2、安装PostgreSQL9.2

    • 安装postgresql软件包
      sudo yum install postgresql-server postgresql
    • 初始化db
      sudo su - postgres
      initdb -D /var/lib/pgsql/data
    • 启动/停止服务
      systemctl status postgresql.service
      systemctl start postgresql.service
      systemctl stop postgresql.service
    • 建立用户和数据库
    $ sudo su - postgres
    $ psql -U postgres -W
    $ Password for user postgres: postgres
    postgres=# CREATE USER sunarqube WITH PASSWORD 'mypassword';
    postgres=# CREATE DATABASE sonarqube OWNER sunarqube ENCODING 'UTF8';
    

    3、安装SonarQube5.6

    • 下载SonarQube5.6,网址:https://www.sonarqube.org/downloads/
    • 解压sonarqube-5.6.6.zip,命令unzip
    • 编辑安装目录/conf/sonar.properties,配置数据库,以PostgreSQL为例
    sonar.jdbc.username=sunarqube
    sonar.jdbc.password=mypassword
    sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube
    
    • 启动sonarqube,服务默认启动9000端口
      ./bin/linux-x86-64/sonar.sh start
    • 浏览器打开http://x.x.x.x:9000/ ,默认管理员登录为admin/admin
    • 注意:浏览器打不开查看一下iptables防火墙拦截,postgresql数据库是否启动
    • 之后就是安装中文插件、java、python等插件,不再详述。

    4、安装sonarqube-scan3.0.3

    sonar.host.url=http://x.x.x.x:9000
    sonar.sourceEncoding=UTF-8
    
    • 设置环境变量,vi /etc/profile,增加如下内容:
    SONAR_SCANNER_HOME=/opt/sonar-scanner
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SONAR_SCANNER_HOME/bin
    
    使修改生效
    source /etc/profile   //使修改立即生效
    echo $PATH   //查看PATH值
    

    4、安装jenkins

    • 安装jenkins
    sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
    sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
    sudo yum install jenkins
    
    • 启动/停止jenkins服务,默认启动在8080端口
      sudo service jenkins start/stop/restart
      sudo chkconfig jenkins on
    • 打开浏览器访问http://x.x.x.x:8080 首次访问进行初始化配置,按提示操作即可

    5、配置jenkins+SonarQube

    • 安装SonarQube Scanner for Jenkins插件,具体不再详述
    • 配置jenkins的全局配置,增加SonarQube servers,如下图


      图片.png
    • 其中Server authentication token的值是需要登录SonarQube的管理员账号配置界面中生成,如下图
    图片.png
    • 配置jenkins的Global Tool Configuration,增加SonarQube Scanner,如下图
    图片.png
    • 以上jenkins+SonarQube配置完成,在jenkins中新建一个测试项目,使用sonarqube扫描,会报Please provide compiled classes of your project with sonar.java.binaries错误,错误原因是没有再项目中找到编译的classes文件,下面安装maven解决编译问题

    6、安装maven3.5

    MAVEN_HOME=/opt/apache-maven
    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$SONAR_SCANNER_HOME/bin:$MAVEN_HOME/bin
    
    使修改生效
    source /etc/profile   //使修改立即生效
    echo $PATH   //查看PATH值
    
    • 检验maven是否安装成功
      mvn -v

    7、使用SonarQube + jenkins + maven进行代码安全扫描

    • 在jenkins里新建一个maven项目,如下图
    图片.png
    • 源码管理可以使用git或svn,如下图
    图片.png
    • 构建触发器、构建环境、bulid都默认,在bulid后增加执行sunarqube scanner操作,如下图
    图片.png
    • 配置sunarqube scanner的参数,如下图
    图片.png

    具体scanner参数含义见以下网址:https://docs.sonarqube.org/display/SONAR/Analysis+Parameters

    • 注意:findbugs的规则检查需要编译,所以在build后执行sonarqube scanner,sonar.java.binaries配置为编译后的class文件目录
    • 配置完成后保存,开始构建,构建完成后,点击SonarQube菜单进入代码安全扫描报告,如下图
    图片.png
    • SonarQube对项目代码的Bugs、漏洞等形成详细报告,供开发人员后续改进代码质量,如下图
    图片.png
    • 可以查看漏洞的详细信息和代码,如下图
    图片.png

    通过以上开源软件组合,可以实现系统开发阶段自动化方式的代码安全审查,减少人工审查工作量,提高代码审查效率,可有效地帮助开发人员改善代码质量。

    相关文章

      网友评论

          本文标题:利用SonarQube + jenkins + maven搭建代

          本文链接:https://www.haomeiwen.com/subject/ymyddxtx.html