Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 尝试在gitlab ci工作流中使用zap_Docker_Gitlab Ci_Zap - Fatal编程技术网

Docker 尝试在gitlab ci工作流中使用zap

Docker 尝试在gitlab ci工作流中使用zap,docker,gitlab-ci,zap,Docker,Gitlab Ci,Zap,我正在尝试在公司的持续集成工作流中自动化Zap的使用。我们使用的是gitlab ci,我想使用docker图像嵌入Zap作为一项服务,第一次,只需在合法的目标网站(如itsecgames.com)上进行快速扫描 我使用暴露zap.sh的docker图像作为入口点 我的问题是: 如何在gitlab ci YAML脚本中将此图像用作服务,以便在itsecgames.com上进行快速扫描 有关资料: 这是我的gitlab-ci.yml: image: openjdk:8-jdk variables:

我正在尝试在公司的持续集成工作流中自动化Zap的使用。我们使用的是gitlab ci,我想使用docker图像嵌入Zap作为一项服务,第一次,只需在合法的目标网站(如itsecgames.com)上进行快速扫描

我使用暴露zap.sh的docker图像作为入口点

我的问题是: 如何在gitlab ci YAML脚本中将此图像用作服务,以便在itsecgames.com上进行快速扫描

有关资料: 这是我的gitlab-ci.yml:

image: openjdk:8-jdk

variables:
  PROJECT_NAME: "psa-preevision-viewer"

stages:
  - zap

zap-scanner:
  services:
    - nhsbsa/owasp-zap:latest 
  stage: zap
  script:
    - nhsbsa__owasp-zap -cmd -quickurl http://itsecgames.com/ -quickprogress
当gitlab运行程序尝试解决此作业时,我收到以下错误消息:

$ nhsbsa__owasp-zap -cmd -quickurl http://itsecgames.com/ -quickprogress
/bin/bash: line 27: nhsbsa__owasp-zap: command not found
ERROR: Job failed: exit code 1
在这一点上,我尝试了不同的方法,比如直接调用zap.sh,而不是nhsbsa_u_owasp-zap,或者nhsbsa owasp-zap(根据,这两个名称应该都可以)

我可能严重误解了这一点,但在gitlab ci中使用服务是否与在我自己的计算机上提取图像并调用docker run相同?事实上,如果我使用

docker run nhsbsa/owasp-zap -cmd -quickurl http://itsecgames.com/ -quickprogress
我得到了一个包含已发现漏洞的XML

如果这很重要:

  • gitlab runner版本是1.11.1
  • gitlab版本是社区版8.7.4

在gitlab中创建服务时,它会将docker容器旋转到旁边,并为您提供一个主机名来访问它。其思想是从初始docker映像调用命令,并将它们指向服务映像。正如@Jakub Kania提到的,它不允许您将其作为本地命令运行

因此,就我们的nhsbsa/owasp zap映像而言,这意味着我们有一个正在运行的owasp zap守护程序,可在nhsbsa__owasp-zap:8080上获得。然后,我们使用maven和zap插件来扫描我们的应用程序

类似这样(我们还在分析声纳中的zap结果):

根据应用程序的编写内容,您可能希望将docker run命令作为脚本步骤运行,而不是使用服务


@Simon Bennetts有没有一种方法可以使用curl之类的东西将测试请求传递给远程zap守护进程?

可能值得提出一个问题?或者你可以直接问维护人员-他们的电子邮件地址在Dockerfile中:如果你找到答案,请发回,我很想知道:)好的,我给维护人员发了邮件,如果他回答我,我会发到这里:)
nhsbsa_uowasp-zap
是主机名,你可以ping,您可以将其配置为代理,但不能将其作为本地命令运行。您可以使用从远程主机控制Zap。这包括开始扫描、解析结果等。非常感谢您的洞察力:)我复制了您的示例,没有关于声纳的部分,但我仍然无法让它执行我想要的分析。我按照的示例将相应的概要文件添加到pom.xml中。我收到以下错误:
[INFO]正在目标上启动ZAP分析:http://itsecgames.com [错误]创建新ZAP会话时出错。br.com.softplan.security.zap.zaproxy.clientapi.core.ClientApiException:java.net.SocketException:server文件意外结束
知道可能的原因吗?
mvn -B --non-recursive -Pzap -DzapPort=$NHSBSA__OWASP_ZAP_PORT_8080_TCP_PORT -DzapHost=$NHSBSA__OWASP_ZAP_PORT_8080_TCP_ADDR
  -DzapTargetUrl=$baseUrl
  -DsonarUrl=$SONAR_URL  -Dsonar.branch=release
  br.com.softplan.security.zap:zap-maven-plugin:analyze sonar:sonar