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