Help us learn about your current experience with the documentation. Take the survey.
应用部署选项
DAST 需要一个已部署的应用程序可供扫描。
根据目标应用程序的复杂程度,有几种部署和配置 DAST 模板的方法。在 DAST 演示 项目中提供了一系列示例应用程序及其配置。
审阅应用
审阅应用是部署 DAST 目标应用程序最复杂的方法。为了协助这个过程,GitLab 创建了一个使用 Google Kubernetes Engine (GKE) 的审阅应用部署示例。这个示例可以在 审阅应用 - GKE 项目中找到,同时在 README 中提供了配置审阅应用用于 DAST 的详细说明。
Docker 服务
如果您的应用程序使用 Docker 容器,您有另一个使用 DAST 进行部署和扫描的选项。在您的 Docker 构建作业完成并将镜像添加到容器注册表后,您可以将该镜像用作 service。
通过在 .gitlab-ci.yml 中使用服务定义,您可以使用 DAST 分析器扫描服务。
当在作业中添加 services 部分时,alias 用于定义可用于访问服务的主机名。在以下示例中,dast 作业定义中的 alias: yourapp 部分表示已部署应用程序的 URL 使用 yourapp 作为主机名(https://yourapp/)。
stages:
- build
- dast
include:
- template: DAST.gitlab-ci.yml
# Deploys the container to the GitLab container registry
deploy:
services:
- name: docker:dind
alias: dind
image: docker:20.10.16
stage: build
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $CI_REGISTRY_IMAGE:latest || true
- docker build --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE:latest
dast:
services: # use services to link your app container to the dast job
- name: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
alias: yourapp
variables:
DAST_TARGET_URL: https://yourapp
DAST_FULL_SCAN: "true" # do a full scan
DAST_BROWSER_SCAN: "true" # use the browser-based GitLab DAST crawler大多数应用程序依赖于多个服务,如数据库或缓存服务。默认情况下,在 services 字段中定义的服务无法相互通信。要允许服务之间进行通信,请启用 FF_NETWORK_PER_BUILD feature flag。
variables:
FF_NETWORK_PER_BUILD: "true" # enable network per build so all services can communicate on the same network
services: # use services to link the container to the dast job
- name: mongo:latest
alias: mongo
- name: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
alias: yourapp