【摘要】安全測試是測試的重要組成部分。每個企業(yè)組織都應(yīng)該在進(jìn)行生產(chǎn)前,至少進(jìn)行基本的安全測試。同時,從2012年Gartner公司提出DevSecOps以來,DevSecOps的理念與實(shí)踐越來越得到業(yè)界的關(guān)注與認(rèn)可。DevSecOps旨在將安全測試結(jié)合到持續(xù)集成/持續(xù)交付(CI/CD)中,使得安全能夠跟上代碼的迭代速度。因此,企業(yè)組織與其它任何測試(例如回歸測試、冒煙測試)一樣,將安全測試加入到流水線。
引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,華為云DevCloud提出(工程方法+最佳實(shí)踐+生態(tài))×工具平臺=DevOps能力。華為云DevCloud將推出“DevOps on DevCloud”系列,針對DevOps領(lǐng)域場景,闡述該場景在華為云DevCloud上的實(shí)施方法與實(shí)踐。
安全測試是測試的重要組成部分。無可否認(rèn),安全測試是一片汪洋大海,如果沒有經(jīng)過全面培訓(xùn)與豐富實(shí)戰(zhàn)的專業(yè)人員的幫助,企業(yè)可能很難進(jìn)行完整的安全測試。但是每個企業(yè)組織都應(yīng)該在進(jìn)行生產(chǎn)前,至少進(jìn)行基本的安全測試。同時,從2012年Gartner公司提出DevSecOps以來,DevSecOps的理念與實(shí)踐越來越得到業(yè)界的關(guān)注與認(rèn)可。DevSecOps旨在將安全測試結(jié)合到持續(xù)集成/持續(xù)交付(CI/CD)中,使得安全能夠跟上代碼的迭代速度。因此,企業(yè)組織與其它任何測試(例如回歸測試、冒煙測試)一樣,將安全測試加入到流水線,這樣安全測試也可以作為流水線的一部分運(yùn)行并及時報(bào)告問題,在一定程度上踐行DevSecOps。
OWASP是一個開源的、非盈利的全球性安全組織,致力于應(yīng)用軟件的安全研究。OWASP ZAP(Zed Attack Proxy)是用于安全測試的開源工具,它可以幫助我們查找不同類型的漏洞,例如SQL注入,跨站點(diǎn)腳本編寫等。ZAP以架設(shè)代理的形式來實(shí)現(xiàn)滲透性測試,它充當(dāng)一個中間人的角色,瀏覽器所有與服務(wù)器的交互都要經(jīng)過ZAP,這樣ZAP就可以獲得所有這些交互的信息,并且可以對他們進(jìn)行分析、掃描,甚至是改包再發(fā)送。
在本文中,主要分步展示了如何在華為云DevCloud中配置OWASP ZAP安全測試并發(fā)布HTML結(jié)果,主要實(shí)現(xiàn)以下目標(biāo):
1.將OWASP ZAP測試配置到華為云DevCloud流水線中;
2.將ZAP HTML測試結(jié)果發(fā)布到Tomcat服務(wù)器中,進(jìn)行在線查看;
3.基于ZAP測試結(jié)果,在華為云DevCloud項(xiàng)目管理創(chuàng)建相應(yīng)的工作項(xiàng)。
1.前提準(zhǔn)備
1.1 創(chuàng)建代碼倉庫
本安全測試用到的腳本已經(jīng)存放在華為云DevCloud的代碼托管模板中。用戶首先創(chuàng)建一個項(xiàng)目,然后點(diǎn)擊代碼-代碼托管-按模板新建,在彈出頁面中選擇華北-北京四,在搜索框中輸入DoD進(jìn)行搜索,如下圖所示:
選中圖中搜索出的代碼倉庫,并新建自己的倉庫。在倉庫中有如下兩個腳本:
start_zap.sh腳本用來執(zhí)行安全測試,生成測試結(jié)果,并將測試結(jié)果傳遞給data_analysis.py進(jìn)行處理。
data_analysis.py腳本用來進(jìn)行測試結(jié)果處理,實(shí)現(xiàn)門禁功能。注意用戶在使用過程中,需將該腳本中的用戶名、密碼改成自己的華為云用戶名、密碼。
1.2 將ZAP鏡像上傳到華為云SWR鏡像倉
華為云容器鏡像服務(wù)(Software Repository for Container)是一種支持容器鏡像全生命周期管理的服務(wù),提供簡單易用、安全可靠的鏡像管理功能,幫助用戶快速部署容器化服務(wù)。
在這里,我們首先將ZAP鏡像拉取到本地,命令如下:
docker pull owasp/zap2docker-weekly
然后再上傳到華為云SWR中,以便后續(xù)使用。如下圖所示:
1.3 在華為云DevCloud中添加相應(yīng)服務(wù)擴(kuò)展點(diǎn)
服務(wù)擴(kuò)展點(diǎn)是DevCloud平臺的一種擴(kuò)展插件,為DevCloud平臺提供鏈接第三方服務(wù)的能力。如本文中的華為云SWR鏡像倉。
本文中使用華為云SWR鏡像倉地址為:swr.cn-north-4.myhuaweicloud.com
用戶名、密碼等信息可以到華為云SWR頁面點(diǎn)擊登錄信息按鈕進(jìn)行獲取。
1.4 已準(zhǔn)備好待檢測網(wǎng)站地址
本文用的是ZAP Baseline Scan中的示例:https://www.example.com
1.5 彈性云服務(wù)器
部署將使用帶有公網(wǎng)IP的彈性云服務(wù)器,本文使用的是華為云ECS。
2.在華為云DevCloud流水線中設(shè)置OWASP ZAP測試
2.1 將腳本發(fā)布到發(fā)布倉庫
我們可以使用編譯構(gòu)建任務(wù)將步驟1.1代碼倉庫中的start_zap.sh和data_analysis.py腳本發(fā)布到發(fā)布倉庫中,供后續(xù)使用。當(dāng)然也可以下載后上傳到發(fā)布倉庫,本處不在贅述。
2.2 創(chuàng)建ZAP運(yùn)行環(huán)境
通過華為云DevCloud的部署任務(wù)來創(chuàng)建ZAP運(yùn)行環(huán)境,主要是從SWR拉取鏡像部署到用戶自己的彈性云服務(wù)器中,然后安裝Python、Tomcat基礎(chǔ)環(huán)境,并將安全測試腳本拉取到彈性云服務(wù)器中執(zhí)行并進(jìn)行結(jié)果處理。
?安裝Docker。
?登錄Docker鏡像倉。
?拉取鏡像。
?安裝Python,執(zhí)行Python腳本用。
?安裝Tomcat,在線瀏覽測試結(jié)果用。
?停止Tomcat。
?拉取步驟2.1中上傳到發(fā)布倉庫中的測試用腳本(start_zap.sh和data_analysis.py)。
?執(zhí)行測試用腳本,進(jìn)行流程控制。
?啟動Tomcat服務(wù),在線瀏覽測試結(jié)果。
2.3 將ZAP安全測試添加到流水線中
將要測試網(wǎng)站進(jìn)行構(gòu)建、檢查、打包、部署,然后通過ZAP進(jìn)行安全測試,測試沒有問題后,進(jìn)行業(yè)務(wù)決策,并上線生產(chǎn)環(huán)境。
流水線執(zhí)行后,我們可以通過在線瀏覽查看相應(yīng)的測試報(bào)告,如下圖所示:
根據(jù)測試結(jié)果腳本中的處理流程,在有問題的情況下,我們可以直接在華為云DevCloud的項(xiàng)目管理服務(wù)新建相應(yīng)工作項(xiàng)如下圖所示:
本文實(shí)現(xiàn)了在華為云DevCloud流水線中實(shí)現(xiàn)OWASP ZAP安全測試,企業(yè)組織可以在本文的基礎(chǔ)上進(jìn)一步優(yōu)化相關(guān)的實(shí)現(xiàn)。當(dāng)然,企業(yè)組織在軟件交付中,可能還會使用其它第三方工具,也可以參考本文找到解決方法。