如何在华为云DevCloud流水线中运行OWASP ZAP安全测试
引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云DevCloud提出(工程方法+最佳实践+生态)×工具平台=DevOps能力。华为云DevCloud将推出“DevOps on DevCloud”系列,针对DevOps领域场景,阐述该场景在华为云DevCloud上的实施方法与实践。本文共同作者为浩初。
安全测试是测试的重要组成部分。无可否认,安全测试是一片汪洋大海,如果没有经过全面培训与丰富实战的专业人员的帮助,企业可能很难进行完整的安全测试。但是每个企业组织都应该在进行生产前,至少进行基本的安全测试。同时,从2012年Gartner公司提出DevSecOps以来,DevSecOps的理念与实践越来越得到业界的关注与认可。DevSecOps旨在将安全测试结合到持续集成/持续交付(CI/CD)中,使得安全能够跟上代码的迭代速度。因此,企业组织与其它任何测试(例如回归测试、冒烟测试)一样,将安全测试加入到流水线,这样安全测试也可以作为流水线的一部分运行并及时报告问题,在一定程度上践行DevSecOps。
OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。OWASP ZAP(Zed Attack Proxy)是用于安全测试的开源工具,它可以帮助我们查找不同类型的漏洞,例如SQL注入,跨站点脚本编写等。ZAP以架设代理的形式来实现渗透性测试,它充当一个中间人的角色,浏览器所有与服务器的交互都要经过ZAP,这样ZAP就可以获得所有这些交互的信息,并且可以对他们进行分析、扫描,甚至是改包再发送。
在本文中,主要分步展示了如何在华为云DevCloud中配置OWASP ZAP安全测试并发布HTML结果,主要实现以下目标:
1. 将OWASP ZAP测试配置到华为云DevCloud流水线中;
2. 将ZAP HTML测试结果发布到Tomcat服务器中,进行在线查看;
3. 基于ZAP测试结果,在华为云DevCloud项目管理创建相应的工作项。
1. 前提准备
1.1 创建代码仓库
本安全测试用到的脚本已经存放在华为云DevCloud的代码托管模板中。用户首先创建一个项目,然后点击代码-代码托管-按模板新建,在弹出页面中选择华北-北京四,在搜索框中输入DoD进行搜索,如下图所示:
选中图中搜索出的代码仓库,并新建自己的仓库。在仓库中有如下两个脚本:
start_zap.sh脚本用来执行安全测试,生成测试结果,并将测试结果传递给data_analysis.py进行处理。
data_analysis.py脚本用来进行测试结果处理,实现门禁功能。注意用户在使用过程中,需将该脚本中的用户名、密码改成自己的华为云用户名、密码。
1.2 将ZAP镜像上传到华为云SWR镜像仓
华为云容器镜像服务(Software Repository for Container)是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务,参考链接。[w1]
在这里,我们首先将ZAP镜像拉取到本地,命令如下:
docker pull owasp/zap2docker-weekly
然后再上传到华为云SWR中,以便后续使用。如下图所示:
1.3 在华为云DevCloud中添加相应服务扩展点
服务扩展点是DevCloud平台的一种扩展插件,为DevCloud平台提供链接第三方服务的能力。如本文中的华为云SWR镜像仓。[w2]
本文中使用华为云SWR镜像仓地址为:swr.cn-north-4.myhuaweicloud.com
用户名、密码等信息可以到华为云SWR页面点击登录信息按钮进行获取。
1.4 已准备好待检测网站地址
本文用的是ZAP Baseline Scan中的示例:https://www.example.com
1.5 弹性云服务器
部署将使用带有公网IP的弹性云服务器,本文使用的是华为云ECS,参考链接。
2. 在华为云DevCloud 流水线中设置OWASP ZAP测试
2.1 将脚本发布到发布仓库
我们可以使用编译构建任务将步骤1.1代码仓库中的start_zap.sh和data_analysis.py脚本发布到发布仓库中,供后续使用。当然也可以下载后上传到发布仓库,本处不在赘述。[w3]
2.2 创建ZAP运行环境
通过华为云DevCloud的部署任务来创建ZAP运行环境,主要是从SWR拉取镜像部署到用户自己的弹性云服务器中,然后安装Python、Tomcat基础环境,并将安全测试脚本拉取到弹性云服务器中执行并进行结果处理。
• 安装Docker。
• 登录Docker镜像仓。
• 拉取镜像。
• 安装Python,执行Python脚本用。
• 安装Tomcat,在线浏览测试结果用。
• 停止Tomcat。
• 拉取步骤2.1中上传到发布仓库中的测试用脚本(start_zap.sh和data_analysis.py)。
• 执行测试用脚本,进行流程控制。
• 启动Tomcat服务,在线浏览测试结果。
2.3 将ZAP安全测试添加到流水线中
将要测试网站进行构建、检查、打包、部署,然后通过ZAP进行安全测试,测试没有问题后,进行业务决策,并上线生产环境。
流水线执行后,我们可以通过在线浏览查看相应的测试报告,如下图所示:
根据测试结果脚本中的处理流程,在有问题的情况下,我们可以直接在华为云DevCloud的项目管理服务新建相应工作项如下图所示:
本文实现了在华为云DevCloud流水线中实现OWASP ZAP安全测试,企业组织可以在本文的基础上进一步优化相关的实现。当然,企业组织在软件交付中,可能还会使用其它第三方工具,也可以参考本文找到解决方法。
- 点赞
- 收藏
- 关注作者
评论(0)