离线配置
- Tier: Ultimate
- Offering: GitLab Self-Managed
对于在互联网上对外部资源访问有限制、受限或间歇性访问的环境中运行的实例,需要对 DAST 作业进行一些调整才能成功运行。有关更多信息,请参阅离线环境。
离线 DAST 支持的要求
您可以在离线环境中使用任何版本的 DAST。为此,您需要:
- 带有
docker或kubernetes执行器 的 GitLab Runner。 Runner 必须能够访问目标应用程序的网络。 - Docker 容器注册表,其中包含 DAST 容器镜像 的本地可用副本, 可在 DAST 容器注册表 中找到。 请参阅将 Docker 镜像加载到离线主机。
GitLab Runner 的默认 pull policy 为 always,
这意味着即使本地有副本,Runner 也会尝试从 GitLab 容器注册表中拉取 Docker 镜像。
在离线环境中,如果您更喜欢仅使用本地可用的 Docker 镜像,可以将 GitLab Runner 的 pull_policy 设置为 if-not-present。
但是,我们建议如果不是在离线环境中,保持拉取策略设置为 always,因为这可以在您的 CI/CD 管道中使用更新的扫描器。
使 GitLab DAST 分析器镜像在您的 Docker 注册表中可用
对于 DAST,请将以下默认 DAST 分析器镜像从 registry.gitlab.com 导入到您的本地 Docker 容器注册表中:
registry.gitlab.com/security-products/dast:latest
将 Docker 镜像导入本地离线 Docker 注册表的过程取决于您的网络安全策略。 请咨询您的 IT 人员,了解可接受和批准的流程,以便导入或临时访问外部资源。 这些扫描器会定期更新新的定义, 您可能可以自行进行偶尔的更新。
有关将 Docker 镜像保存和传输为文件的详细信息,请参阅 Docker 文档中的
docker save、
docker load、
docker export 和
docker import。
设置 DAST CI/CD 作业变量以使用本地 DAST 分析器
将以下配置添加到您的 .gitlab-ci.yml 文件中。您必须替换 image 以引用托管在您本地 Docker 容器注册表中的 DAST Docker 镜像:
include:
- template: DAST.gitlab-ci.yml
dast:
image: registry.example.com/namespace/dast:latest现在,DAST 作业应该使用 DAST 分析器的本地副本来扫描您的代码并生成安全报告,而无需互联网访问。
或者,您可以使用 CI/CD 变量 SECURE_ANALYZERS_PREFIX 来覆盖 dast 镜像的基础注册表地址。