InfoGrab Docs

튜토리얼: 취약점에 대한 Docker 컨테이너 스캔

요약

컨테이너 스캔을 사용하여 컨테이너 레지스트리에 저장된 컨테이너 이미지의 취약점을 확인할 수 있습니다. 컨테이너 스캔 구성은 프로젝트의 파이프라인 구성에 추가됩니다. 컨테이너 스캔이 작동할 대상을 제공하려면 최소한의 구성으로 Dockerfile을 생성합니다:

컨테이너 스캔을 사용하여 컨테이너 레지스트리에 저장된 컨테이너 이미지의 취약점을 확인할 수 있습니다.

컨테이너 스캔 구성은 프로젝트의 파이프라인 구성에 추가됩니다. 이 튜토리얼에서는 다음을 수행합니다:

  1. 새 프로젝트 생성.
  2. 프로젝트에 Dockerfile 파일 추가. 이 Dockerfile에는 Docker 이미지를 만드는 데 필요한 최소 구성이 포함됩니다.
  3. 새 프로젝트에 대한 파이프라인 구성 생성. Dockerfile에서 Docker 이미지를 생성하고, Docker 이미지를 빌드하여 컨테이너 레지스트리에 푸시한 다음 Docker 이미지에서 취약점을 스캔합니다.
  4. 보고된 취약점 확인.
  5. Docker 이미지 업데이트 및 업데이트된 이미지 스캔.

새 프로젝트 생성#

새 프로젝트를 생성하려면:

  1. 오른쪽 상단에서 Create new (+)와 New project/repository를 선택합니다.
  2. Create blank project를 선택합니다.
  3. Project nameTutorial container scanning project를 입력합니다.
  4. Project URL에서 프로젝트의 네임스페이스를 선택합니다.
  5. Create project를 선택합니다.

새 프로젝트에 Dockerfile 추가#

컨테이너 스캔이 작동할 대상을 제공하려면 최소한의 구성으로 Dockerfile을 생성합니다:

  1. Tutorial container scanning project 프로젝트에서 + > New file을 선택합니다.

  2. 파일명 Dockerfile을 입력하고 다음 내용을 파일에 추가합니다:

    FROM hello-world:latest
    

Dockerfile에서 만든 Docker 이미지는 hello-world Docker 이미지를 기반으로 합니다.

  1. Commit changes를 선택합니다.

파이프라인 구성 생성#

이제 파이프라인 구성을 생성할 준비가 되었습니다. 파이프라인 구성은 다음을 수행합니다:

  1. Dockerfile 파일에서 Docker 이미지를 빌드하고 Docker 이미지를 컨테이너 레지스트리에 푸시합니다. build-image job은 Docker-in-DockerCI/CD 서비스로 사용하여 Docker 이미지를 빌드합니다.
  2. Container-Scanning.gitlab-ci.yml 템플릿을 포함하여 컨테이너 레지스트리에 저장된 Docker 이미지를 스캔합니다.

파이프라인 구성을 생성하려면:

  1. 프로젝트의 루트 디렉토리에서 + > New file을 선택합니다.

  2. 파일명 .gitlab-ci.yml을 입력하고 다음 내용을 파일에 추가합니다:

    include:
      - template: Jobs/Container-Scanning.gitlab-ci.yml
    
    container_scanning:
      variables:
        CS_IMAGE: $CI_REGISTRY_IMAGE/tutorial-image
    
    build-image:
      image: docker:24.0.2-cli
      stage: build
      services:
        - docker:24.0.2-dind
      script:
        - docker build --tag $CI_REGISTRY_IMAGE/tutorial-image --file Dockerfile .
        - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
        - docker push $CI_REGISTRY_IMAGE/tutorial-image
    
  3. Commit changes를 선택합니다.

거의 완료되었습니다. 파일을 커밋하면 이 구성으로 새 파이프라인이 시작됩니다. 완료되면 스캔 결과를 확인할 수 있습니다.

보고된 취약점 확인#

스캔에 대한 취약점은 스캔을 실행한 파이프라인에 있습니다. 보고된 취약점을 확인하려면:

  1. CI/CD > Pipelines를 선택하고 가장 최근 파이프라인을 선택합니다. 이 파이프라인에는 test Stage의 container_scanning이라는 job이 포함되어야 합니다.
  2. container_scanning job이 성공했으면 Security 탭을 선택합니다. 취약점이 발견된 경우 해당 페이지에 나열됩니다.

Docker 이미지 업데이트#

hello-world:latest를 기반으로 하는 Docker 이미지는 취약점을 표시하지 않을 가능성이 높습니다. 취약점을 보고하는 스캔 예시를 보려면:

  1. 프로젝트의 루트 디렉토리에서 기존 Dockerfile 파일을 선택합니다.
  2. Edit을 선택합니다.
  3. FROM hello-world:latestFROM 명령에 대한 다른 Docker 이미지로 교체합니다. 컨테이너 스캔을 시연하기에 가장 적합한 Docker 이미지는 다음을 포함합니다:
    • 운영 체제 패키지. 예를 들어 Debian, Ubuntu, Alpine 또는 Red Hat에서.
    • 프로그래밍 언어 패키지. 예를 들어 NPM 패키지 또는 Python 패키지.
  4. Commit changes를 선택합니다.

파일에 변경 사항을 커밋하면 이 업데이트된 Dockerfile로 새 파이프라인이 시작됩니다. 완료되면 새 스캔 결과를 확인할 수 있습니다.

튜토리얼: 취약점에 대한 Docker 컨테이너 스캔

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

컨테이너 스캔을 사용하여 컨테이너 레지스트리에 저장된 컨테이너 이미지의 취약점을 확인할 수 있습니다. 컨테이너 스캔 구성은 프로젝트의 파이프라인 구성에 추가됩니다. 컨테이너 스캔이 작동할 대상을 제공하려면 최소한의 구성으로 Dockerfile을 생성합니다:

컨테이너 스캔을 사용하여 컨테이너 레지스트리에 저장된 컨테이너 이미지의 취약점을 확인할 수 있습니다.

컨테이너 스캔 구성은 프로젝트의 파이프라인 구성에 추가됩니다. 이 튜토리얼에서는 다음을 수행합니다:

  1. 새 프로젝트 생성.
  2. 프로젝트에 Dockerfile 파일 추가. 이 Dockerfile에는 Docker 이미지를 만드는 데 필요한 최소 구성이 포함됩니다.
  3. 새 프로젝트에 대한 파이프라인 구성 생성. Dockerfile에서 Docker 이미지를 생성하고, Docker 이미지를 빌드하여 컨테이너 레지스트리에 푸시한 다음 Docker 이미지에서 취약점을 스캔합니다.
  4. 보고된 취약점 확인.
  5. Docker 이미지 업데이트 및 업데이트된 이미지 스캔.

새 프로젝트 생성#

새 프로젝트를 생성하려면:

  1. 오른쪽 상단에서 Create new (+)와 New project/repository를 선택합니다.
  2. Create blank project를 선택합니다.
  3. Project nameTutorial container scanning project를 입력합니다.
  4. Project URL에서 프로젝트의 네임스페이스를 선택합니다.
  5. Create project를 선택합니다.

새 프로젝트에 Dockerfile 추가#

컨테이너 스캔이 작동할 대상을 제공하려면 최소한의 구성으로 Dockerfile을 생성합니다:

  1. Tutorial container scanning project 프로젝트에서 + > New file을 선택합니다.

  2. 파일명 Dockerfile을 입력하고 다음 내용을 파일에 추가합니다:

    FROM hello-world:latest
    

Dockerfile에서 만든 Docker 이미지는 hello-world Docker 이미지를 기반으로 합니다.

  1. Commit changes를 선택합니다.

파이프라인 구성 생성#

이제 파이프라인 구성을 생성할 준비가 되었습니다. 파이프라인 구성은 다음을 수행합니다:

  1. Dockerfile 파일에서 Docker 이미지를 빌드하고 Docker 이미지를 컨테이너 레지스트리에 푸시합니다. build-image job은 Docker-in-DockerCI/CD 서비스로 사용하여 Docker 이미지를 빌드합니다.
  2. Container-Scanning.gitlab-ci.yml 템플릿을 포함하여 컨테이너 레지스트리에 저장된 Docker 이미지를 스캔합니다.

파이프라인 구성을 생성하려면:

  1. 프로젝트의 루트 디렉토리에서 + > New file을 선택합니다.

  2. 파일명 .gitlab-ci.yml을 입력하고 다음 내용을 파일에 추가합니다:

    include:
      - template: Jobs/Container-Scanning.gitlab-ci.yml
    
    container_scanning:
      variables:
        CS_IMAGE: $CI_REGISTRY_IMAGE/tutorial-image
    
    build-image:
      image: docker:24.0.2-cli
      stage: build
      services:
        - docker:24.0.2-dind
      script:
        - docker build --tag $CI_REGISTRY_IMAGE/tutorial-image --file Dockerfile .
        - docker login --username gitlab-ci-token --password $CI_JOB_TOKEN $CI_REGISTRY
        - docker push $CI_REGISTRY_IMAGE/tutorial-image
    
  3. Commit changes를 선택합니다.

거의 완료되었습니다. 파일을 커밋하면 이 구성으로 새 파이프라인이 시작됩니다. 완료되면 스캔 결과를 확인할 수 있습니다.

보고된 취약점 확인#

스캔에 대한 취약점은 스캔을 실행한 파이프라인에 있습니다. 보고된 취약점을 확인하려면:

  1. CI/CD > Pipelines를 선택하고 가장 최근 파이프라인을 선택합니다. 이 파이프라인에는 test Stage의 container_scanning이라는 job이 포함되어야 합니다.
  2. container_scanning job이 성공했으면 Security 탭을 선택합니다. 취약점이 발견된 경우 해당 페이지에 나열됩니다.

Docker 이미지 업데이트#

hello-world:latest를 기반으로 하는 Docker 이미지는 취약점을 표시하지 않을 가능성이 높습니다. 취약점을 보고하는 스캔 예시를 보려면:

  1. 프로젝트의 루트 디렉토리에서 기존 Dockerfile 파일을 선택합니다.
  2. Edit을 선택합니다.
  3. FROM hello-world:latestFROM 명령에 대한 다른 Docker 이미지로 교체합니다. 컨테이너 스캔을 시연하기에 가장 적합한 Docker 이미지는 다음을 포함합니다:
    • 운영 체제 패키지. 예를 들어 Debian, Ubuntu, Alpine 또는 Red Hat에서.
    • 프로그래밍 언어 패키지. 예를 들어 NPM 패키지 또는 Python 패키지.
  4. Commit changes를 선택합니다.

파일에 변경 사항을 커밋하면 이 업데이트된 Dockerfile로 새 파이프라인이 시작됩니다. 완료되면 새 스캔 결과를 확인할 수 있습니다.