正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

アプリケーションデプロイのオプション

DASTでは、スキャンを実行するために、デプロイされたアプリケーションが利用可能である必要があります。

ターゲット・アプリケーションの複雑さに応じて、DASTテンプレートをデプロイして設定する方法がいくつかあります。サンプル・アプリケーションのセットが、DAST demonstrationsプロジェクトの設定とともに提供されています。

レビューアプリ

レビューアプリは、DASTターゲット・アプリケーションをデプロイするための最も手間のかかる方法です。そのプロセスを支援するために、GitLabはGoogle Kubernetes Engine (GKE) を使用してレビューアプリのデプロイを作成しました。この例は、Review apps - GKEプロジェクトにあります。また、DASTのレビューアプリを設定するための詳細な手順はREADMEにあります。

Docker Services

アプリケーションでDockerコンテナを使用している場合は、DASTを使用してデプロイおよびスキャンを行うための別のオプションがあります。Dockerのビルドジョブが完了し、イメージがコンテナレジストリに追加されたら、イメージをサービスとして使用できます。

.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 機能フラグを有効にします。

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