问题
注意:我的CI包含一个代码复杂性检查器,可以忽略它。这个问题主要集中在SAST上。
我最近为我的一个Gitlab项目安装了一个SAST管道。Gitlab-ce和Gitlab-runner实例是自我托管的.完成SAST扫描后,下载的工件/ json报告都包含相同的名称gl-sast-report.json。在本例中,当下载产品gl-sast-report.json时,工件bandit-sast和semgrep-sast都有.
SAST组态
stages:
- CodeScan
- CodeComplexity
sast:
stage: CodeScan
tags:
- sast
code_quality:
stage: CodeComplexity
artifacts:
paths: [gl-code-quality-report.json]
services:
tags:
- cq-sans-dind
include:
- template: Security/SAST.gitlab-ci.yml
- template: Code-Quality.gitlab-ci.yml完成SAST结果


最终目标
.gitlab-ci.yml,SAST分析器是根据项目语言自动检测的。发布于 2021-09-13 16:13:32
如果您使用预先构建的SAST映像,这是不可能的,即使您手动运行docker命令,如下所示:
docker run --volume "$PWD":/code --env=LM_REPORT_VERSION="2.1" --env=CI_PROJECT_DIR=/code registry.gitlab.com/gitlab-org/security-products/analyzers/license-finder:latest当使用这些SAST (和DAST)映像时,报表文件将始终具有文档中的名称,但是,如果像上面一样手动运行docker命令,则可以在文件上传为工件之前重新命名该文件,但它仍然具有相同的json结构/内容。
Run License Scanning Analyzer:
stage: sast
script:
- docker run --volume "$PWD":/code --env=LM_REPORT_VERSION="2.1" --env=CI_PROJECT_DIR=/code registry.gitlab.com/gitlab-org/security-products/analyzers/license-finder:latest
- mv gl-license-scanning-report.json license-scanning-report.json
artifacts:
reports:
license_scanning: license-scanning-report.json更改json结构/内容的唯一方法是手动实现SAST测试,而根本不使用提供的映像。您可以在这个Gitlab回购中看到所有可用的SAST分析器。
例如,对于许可证查找器分析器,Dockerfile表示图像的入口点是脚本。
您可以在run.sh第20行上看到它将文件名设置为'gl-license-scanning-report.json',但是我们可以通过手动运行坞映像来更改文件名,这样就没有什么帮助了。但是,我们可以看到,实际的分析来自scan_project函数,您可以复制该函数。
因此,虽然没有预先构建的图像就可以手动运行这些分析器,但要让它们正常工作将更加困难。
https://stackoverflow.com/questions/69142796
复制相似问题