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

軟件產品代碼安全問題航棱,一直是影響軟件產品質量的重要因素,糟糕的代碼質量萌衬,導致產品上線后漏洞百出饮醇,再想修補時耗時耗力。因此秕豫,在產品開發(fā)階段引入代碼安全審查朴艰,改善代碼質量,減少代碼安全問題混移,是避免產品安全漏洞比較經濟有效的手段祠墅。目前國內外有許多代碼審計商業(yè)產品,如Fortify歌径、Checkmarx饵隙、360代碼衛(wèi)士等,價格不菲沮脖,另外也有一些以云服務方式的代碼審計產品金矛,需要代碼上傳到云端進行審計,存在核心代碼泄露的風險勺届。實際上驶俊,利用現(xiàn)有的一些開源軟件組合,也能輕松實現(xiàn)自動化的代碼安全審計免姿。本文利用SonarQube + jenkins + maven搭建代碼安全審查平臺饼酿。

系統(tǒng)環(huán)境:centos7

1、安裝Java8

  • 如果系統(tǒng)原有安裝低版本的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環(huán)境變量JDK環(huán)境變量药版。
    修改系統(tǒng)環(huán)境變量文件
    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
  • 建立用戶和數(shù)據(jù)庫
$ 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肢础,配置數(shù)據(jù)庫还栓,以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數(shù)據(jù)庫是否啟動
  • 之后就是安裝中文插件剩盒、java、python等插件慨蛙,不再詳述辽聊。

4纪挎、安裝sonarqube-scan3.0.3

sonar.host.url=http://x.x.x.x:9000
sonar.sourceEncoding=UTF-8
  • 設置環(huán)境變量贾铝,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

  • 下載maven3.5枫绅,網址:http://maven.apache.org/download.cgi
  • tar -xvf apache-maven-3.5.0-bin.tar.gz解壓到/opt目錄
  • 設置環(huán)境變量,vi /etc/profile硼端,
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
  • 構建觸發(fā)器预伺、構建環(huán)境、bulid都默認曼尊,在bulid后增加執(zhí)行sunarqube scanner操作酬诀,如下圖
圖片.png
  • 配置sunarqube scanner的參數(shù),如下圖
圖片.png

具體scanner參數(shù)含義見以下網址:https://docs.sonarqube.org/display/SONAR/Analysis+Parameters

  • 注意:findbugs的規(guī)則檢查需要編譯骆撇,所以在build后執(zhí)行sonarqube scanner瞒御,sonar.java.binaries配置為編譯后的class文件目錄
  • 配置完成后保存,開始構建神郊,構建完成后肴裙,點擊SonarQube菜單進入代碼安全掃描報告趾唱,如下圖
圖片.png
  • SonarQube對項目代碼的Bugs、漏洞等形成詳細報告蜻懦,供開發(fā)人員后續(xù)改進代碼質量甜癞,如下圖
圖片.png
  • 可以查看漏洞的詳細信息和代碼,如下圖
圖片.png

通過以上開源軟件組合宛乃,可以實現(xiàn)系統(tǒng)開發(fā)階段自動化方式的代碼安全審查悠咱,減少人工審查工作量,提高代碼審查效率征炼,可有效地幫助開發(fā)人員改善代碼質量析既。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谆奥,隨后出現(xiàn)的幾起案子眼坏,更是在濱河造成了極大的恐慌,老刑警劉巖酸些,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宰译,死亡現(xiàn)場離奇詭異,居然都是意外死亡魄懂,警方通過查閱死者的電腦和手機沿侈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逢渔,“玉大人肋坚,你說我怎么就攤上這事∷嗬” “怎么了智厌?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盲赊。 經常有香客問我铣鹏,道長,這世上最難降的妖魔是什么哀蘑? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任诚卸,我火速辦了婚禮,結果婚禮上绘迁,老公的妹妹穿的比我還像新娘合溺。我一直安慰自己,他們只是感情好缀台,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布棠赛。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪睛约。 梳的紋絲不亂的頭發(fā)上鼎俘,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音辩涝,去河邊找鬼贸伐。 笑死,一個胖子當著我的面吹牛怔揩,可吹牛的內容都是我干的捉邢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼沧踏,長吁一口氣:“原來是場噩夢啊……” “哼歌逢!你這毒婦竟也來了巾钉?” 一聲冷哼從身側響起翘狱,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砰苍,沒想到半個月后潦匈,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡赚导,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年茬缩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吼旧。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡凰锡,死狀恐怖,靈堂內的尸體忽然破棺而出圈暗,到底是詐尸還是另有隱情掂为,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布员串,位于F島的核電站勇哗,受9級特大地震影響,放射性物質發(fā)生泄漏寸齐。R本人自食惡果不足惜欲诺,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渺鹦。 院中可真熱鬧扰法,春花似錦、人聲如沸毅厚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至殴边,卻和暖如春憎茂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锤岸。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工竖幔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人是偷。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓拳氢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛋铆。 傳聞我的和親對象是個殘疾皇子馋评,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內容