我想在Azure DevOps管道中使用OWASP ZAP,并希望使用可用的Docker映像。还想按需运行docker容器。在Microsoft DevBlog上找到了一篇解决该用例的文章。当我尝试复制时,遇到了一个问题。当我尝试使用Azure CLI执行以下命令时,遇到了此错误消息。
az container exec --resource-group $resourceGroupName --name $aciInstanceName --exec-command "zap-baseline.py -t https://example.com -x OWASP-ZAP-Report.xml"
rpc错误:代码= 2 desc = oci运行时错误:exec失败: container_linux.go:247:启动容器进程引起“执行: \“ zap-baseline.py -t https://example.com -x OWASP-ZAP-Report.xml \”: stat zap-baseline.py -t https://example.com -x OWASP-ZAP-Report.xm l: 没有这样的文件或目录”
当我进行一些挖掘时,发现az container exec
command does not support using arguments on the official documentation。
然后我基于owasp / zap2docker-stable映像创建了一个自定义docker映像,在其中添加了一个bash脚本,该脚本基本上运行相同的命令,并尝试从Azure CLI调用bash文件
az container exec --resource-group $resourceGroupName --name $aciInstanceName --exec-command "execute-zap-baseline-test.sh"
但是随后我收到以下错误消息。
rpc错误:代码= 2 desc = oci运行时错误:exec失败: container_linux.go:247:启动容器进程导致“ exec格式” 错误”
非常感谢您为解决此问题提供的帮助。如何在Azure容器实例上运行的OWASP ZAP docker容器上执行扫描
答案 0 :(得分:0)
在ACI上可能是一个不好的地方,但它在restrictions中进行了描述:
Azure容器实例当前支持启动单个 使用z容器exec进行处理,并且您无法传递命令参数。 例如,您不能像sh -c“ echo FOO && echo BAR”,或执行回显FOO。
您仅可以在CLI命令中执行whoami
,ls
等命令。
我认为ACI有两种可能的解决方案。一种是编写脚本并在Dockerfile中运行脚本。另一个是您创建一个持久会话来执行容器内的命令。要创建持久会话,请使用以下CLI命令:
az container exec -g groupName -n containerName --exec-command "/bin/bash"
如果您认为解决方案不是预期的解决方案。然后,我建议您使用Azure Kubernetes Service。在此服务中,您可以根据需要在窗格中执行命令。