OWASP 依赖项检查是在我们的项目中自动发现漏洞的好方法,尽管将其作为每个项目 CI 管道的一部分运行时,仅下载 NVD 数据库就会增加 3-4 分钟的时间。
在 CI 管道上使用 maven / gradle 运行该数据库时,我们如何缓存该数据库?
经过一番研究,我找到了方法!
基本上,包含 NVM 数据库的文件称为:
nvdcve-1.1-[YYYY].json.gz
,即 nvdcve-1.1-2022.json.gz
,稍后将其添加到 Lucene 索引中。
使用 Gradle 插件运行依赖项检查时,将在以下位置创建文件:
$GRADLE_USER_HOME/.gradle/dependency-check-data/7.0/nvdcache/
当使用 Maven 运行时,它们创建于:
$MAVEN_HOME/.m2/repository/org/owasp/dependency-check-data/7.0/nvdcache/
因此,要将数据库缓存到 Gitlab CI 上,您只需将以下内容添加到您的
.gitlab-ci.yaml
(Gradle):
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
cache:
key: "$CI_PROJECT_NAME"
paths:
- .gradle/dependency-check-data
第一个 CI 作业运行将创建缓存,连续的作业(来自相同或不同的管道)将获取它!
如果我在 gitlab 中使用 docker:dind 服务,那么每个作业都将作为单独的 docker 容器运行,并且在运行该作业后它将销毁..
对于这种情况我们可以做什么?