尝试以此处描述的无头模式运行 OWASP ZAP Docker Build :
docker run -u zap -p 8080:8080 -i owasp/zap2docker-stable zap.sh -daemon -host 0.0.0.0 -port 8080
但无法弄清楚如何使其适应 gitlab-ci.yaml。在 gitlab 9.4 上并认为服务命令应该这样做,但还没有让它工作。试过:
security_test:
image: python:2.7
stage: test
services:
- name: owasp/zap2docker-stable
alias: zap
command: ["docker run -u zap -p 8080:8080 -i owasp_zap zap.sh -port 8080 -host 0.0.0.0 -config api.key=$ZAP_API_KEY -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config scanner.strength=INSANE"]
script:
- export PYTHONPATH=$PWD/backend/lib:$PYTHONPATH
- pip install -r qa/security/requirements.txt
- BASE_URL="https://example.com" ZAP="http://owasp__zap2docker-stable:8080" ZAP_API_KEY=$ZAP_API_KEY python qa/security/zap_scanner.py
这会得到这个错误:
ERROR: Preparation failed: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"docker run -u zap -p 8080:8080 -i owasp_zap zap.sh -port 8080 -host 0.0.0.0 -config api.key=$ZAP_API_KEY -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config scanner.strength=INSANE\\\": executable file not found in $PATH\"\n"
...
还在本地运行 docker inspect 并将过去显示为
"env": [
...
"ZAP_PATH=/zap/zap.sh",
...
所以我将命令更改为
command: ["zap.sh -port 8080 -host 0.0.0.0 -config api.key=$ZAP_API_KEY -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config scanner.strength=INSANE"]
但仍然得到错误:
ERROR: Preparation failed: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"/zap/zap zap.sh -port 8080 -host 0.0.0.0 -config api.key=$ZAP_API_KEY -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config scanner.strength=INSANE\\\": stat /zap/zap zap.sh -port 8080 -host 0.0.0.0 -config api.key=$ZAP_API_KEY -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config scanner.strength=INSANE: no such file or directory\"\n"
...
这似乎是安装文件。我正在尝试使用自定义设置和 api 密钥,所以不要像使用默认设置或 zap 基线那样寻找答案。