利用SonarQube + jenkins + maven搭建代碼安全審計平臺

軟件產品代碼安全問題,一直是影響軟件產品質量的重要因素,糟糕的代碼質量,導致產品上線后漏洞百出,再想修補時耗時耗力。因此,在產品開發階段引入代碼安全審查,改善代碼質量,減少代碼安全問題,是避免產品安全漏洞比較經濟有效的手段。目前國內外有許多代碼審計商業產品,如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

通過以上開源軟件組合,可以實現系統開發階段自動化方式的代碼安全審查,減少人工審查工作量,提高代碼審查效率,可有效地幫助開發人員改善代碼質量。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容