InfoGrab DocsInfoGrab Docs

애플리케이션 배포 옵션

요약

DAST는 스캔할 대상으로 배포된 애플리케이션이 필요합니다. 타깃 애플리케이션의 복잡도에 따라 DAST 템플릿을 배포하고 구성하는 방법은 몇 가지가 있습니다. 리뷰 앱은 DAST 타깃 애플리케이션을 배포하는 방법 중 가장 손이 많이 가는 방식입니다.

DAST는 스캔할 대상으로 배포된 애플리케이션이 필요합니다.

타깃 애플리케이션의 복잡도에 따라 DAST 템플릿을 배포하고 구성하는 방법은 몇 가지가 있습니다. 예제 애플리케이션과 각각의 구성은 DAST 데모 프로젝트에 제공되어 있습니다.

리뷰 앱#

리뷰 앱은 DAST 타깃 애플리케이션을 배포하는 방법 중 가장 손이 많이 가는 방식입니다. 이 과정을 돕기 위해 GitLab은 Google Kubernetes Engine(GKE)을 사용한 리뷰 앱 배포 예제를 만들었습니다. 이 예제는 리뷰 앱 - GKE 프로젝트에 있으며, DAST용 리뷰 앱 구성에 관한 자세한 지침은 README에 있습니다.

Docker 서비스#

애플리케이션이 Docker 컨테이너를 사용한다면 DAST로 배포하고 스캔하는 다른 방법을 선택할 수 있습니다. Docker 빌드 job이 완료되고 이미지가 컨테이너 레지스트리에 추가되면 해당 이미지를 서비스로 사용할 수 있습니다.

.gitlab-ci.yml에서 서비스 정의를 사용하면 DAST 분석기로 서비스를 스캔할 수 있습니다.

job에 services 섹션을 추가할 때 alias는 해당 서비스에 접근할 때 사용하는 호스트 이름을 정의합니다. 다음 예에서 dast job 정의의 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

애플리케이션 배포 옵션

GitLab v19.5
원문 보기

요약

DAST는 스캔할 대상으로 배포된 애플리케이션이 필요합니다. 타깃 애플리케이션의 복잡도에 따라 DAST 템플릿을 배포하고 구성하는 방법은 몇 가지가 있습니다. 리뷰 앱은 DAST 타깃 애플리케이션을 배포하는 방법 중 가장 손이 많이 가는 방식입니다.

DAST는 스캔할 대상으로 배포된 애플리케이션이 필요합니다.

타깃 애플리케이션의 복잡도에 따라 DAST 템플릿을 배포하고 구성하는 방법은 몇 가지가 있습니다. 예제 애플리케이션과 각각의 구성은 DAST 데모 프로젝트에 제공되어 있습니다.

리뷰 앱#

리뷰 앱은 DAST 타깃 애플리케이션을 배포하는 방법 중 가장 손이 많이 가는 방식입니다. 이 과정을 돕기 위해 GitLab은 Google Kubernetes Engine(GKE)을 사용한 리뷰 앱 배포 예제를 만들었습니다. 이 예제는 리뷰 앱 - GKE 프로젝트에 있으며, DAST용 리뷰 앱 구성에 관한 자세한 지침은 README에 있습니다.

Docker 서비스#

애플리케이션이 Docker 컨테이너를 사용한다면 DAST로 배포하고 스캔하는 다른 방법을 선택할 수 있습니다. Docker 빌드 job이 완료되고 이미지가 컨테이너 레지스트리에 추가되면 해당 이미지를 서비스로 사용할 수 있습니다.

.gitlab-ci.yml에서 서비스 정의를 사용하면 DAST 분석기로 서비스를 스캔할 수 있습니다.

job에 services 섹션을 추가할 때 alias는 해당 서비스에 접근할 때 사용하는 호스트 이름을 정의합니다. 다음 예에서 dast job 정의의 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