如何在华为云DevCloud流水线中运行OWASP ZAP安全测试

举报
伦语春秋 发表于 2020/08/18 13:43:01 2020/08/18
【摘要】 安全测试是测试的重要组成部分。每个企业组织都应该在进行生产前,至少进行基本的安全测试。同时,从2012年Gartner公司提出DevSecOps以来,DevSecOps的理念与实践越来越得到业界的关注与认可。DevSecOps旨在将安全测试结合到持续集成/持续交付(CI/CD)中,使得安全能够跟上代码的迭代速度。因此,企业组织与其它任何测试(例如回归测试、冒烟测试)一样,将安全测试加入到流水线。

引言:在“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进行搜索,如下图所示:

image.png

选中图中搜索出的代码仓库,并新建自己的仓库。在仓库中有如下两个脚本:

image.png

start_zap.sh脚本用来执行安全测试,生成测试结果,并将测试结果传递给data_analysis.py进行处理。

data_analysis.py脚本用来进行测试结果处理,实现门禁功能。注意用户在使用过程中,需将该脚本中的用户名、密码改成自己的华为云用户名、密码。

image.png

1.2     ZAP镜像上传到华为云SWR镜像仓

华为云容器镜像服务(Software Repository for Container)是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务,参考链接[w1] 

在这里,我们首先将ZAP镜像拉取到本地,命令如下:

docker pull owasp/zap2docker-weekly

然后再上传到华为云SWR中,以便后续使用。如下图所示:

image.png

1.3     在华为云DevCloud中添加相应服务扩展点

服务扩展点是DevCloud平台的一种扩展插件,为DevCloud平台提供链接第三方服务的能力。如本文中的华为云SWR镜像仓。[w2] 

本文中使用华为云SWR镜像仓地址为:swr.cn-north-4.myhuaweicloud.com

用户名、密码等信息可以到华为云SWR页面点击登录信息按钮进行获取。

image.png

1.4     已准备好待检测网站地址

本文用的是ZAP Baseline Scan中的示例:https://www.example.com

1.5     弹性云服务器

部署将使用带有公网IP的弹性云服务器,本文使用的是华为云ECS,参考链接

2. 在华为云DevCloud 流水线中设置OWASP ZAP测试

2.1     将脚本发布到发布仓库

我们可以使用编译构建任务将步骤1.1代码仓库中的start_zap.shdata_analysis.py脚本发布到发布仓库中,供后续使用。当然也可以下载后上传到发布仓库,本处不在赘述。[w3] 

image.png

2.2     创建ZAP运行环境

通过华为云DevCloud的部署任务来创建ZAP运行环境,主要是从SWR拉取镜像部署到用户自己的弹性云服务器中,然后安装Python、Tomcat基础环境,并将安全测试脚本拉取到弹性云服务器中执行并进行结果处理。

      安装Docker。

image.png

      登录Docker镜像仓。

image.png

      拉取镜像。

image.png

      安装Python,执行Python脚本用。

image.png

      安装Tomcat,在线浏览测试结果用。

image.png

      停止Tomcat。

image.png

      拉取步骤2.1中上传到发布仓库中的测试用脚本(start_zap.shdata_analysis.py)。

image.png

      执行测试用脚本,进行流程控制。

image.png

      启动Tomcat服务,在线浏览测试结果。

image.png

2.3     ZAP安全测试添加到流水线中

将要测试网站进行构建、检查、打包、部署,然后通过ZAP进行安全测试,测试没有问题后,进行业务决策,并上线生产环境。

image.png

流水线执行后,我们可以通过在线浏览查看相应的测试报告,如下图所示:

image.png

根据测试结果脚本中的处理流程,在有问题的情况下,我们可以直接在华为云DevCloud的项目管理服务新建相应工作项如下图所示:

image.png

本文实现了在华为云DevCloud流水线中实现OWASP ZAP安全测试,企业组织可以在本文的基础上进一步优化相关的实现。当然,企业组织在软件交付中,可能还会使用其它第三方工具,也可以参考本文找到解决方法。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。