튜토리얼: Docker 컨테이너의 취약점 검사하기
컨테이너 스캐닝을 사용하여 컨테이너 레지스트리에 저장된 컨테이너 이미지의 취약점을 검사할 수 있습니다.
컨테이너 스캔 구성은 프로젝트의 파이프라인 구성에 추가됩니다. 이 튜토리얼에서는 다음과 같은 작업을 수행합니다.
- 새 프로젝트 만들기.
- 프로젝트에 Dockerfile 추가하기. 이
Dockerfile
에는 Docker 이미지를 만드는 데 필요한 최소한의 구성이 포함됩니다. - 새 프로젝트의 파이프라인 구성 만들기. 이 파이프라인은
Dockerfile
에서 Docker 이미지를 작성하고 컨테이너 레지스트리에 Docker 이미지를 빌드하고 푸시한 다음 Docker 이미지를 취약점을 스캔합니다. - 보고된 취약점 확인.
- Docker 이미지 업데이트하고 업데이트된 이미지를 스캔합니다.
새 프로젝트 만들기
새 프로젝트를 만들려면 다음을 수행합니다.
- 왼쪽 사이드바에서 상단에 있는 새로 만들기() 및 새 프로젝트/리포지터리를 선택합니다.
- 빈 프로젝트 만들기를 선택합니다.
-
프로젝트 이름에
튜토리얼 컨테이너 스캔 프로젝트
를 입력합니다. - 프로젝트 URL에서 프로젝트의 네임스페이스를 선택합니다.
- 프로젝트 만들기를 선택합니다.
새 프로젝트에 Dockerfile 추가
컨테이너 스캔을 수행하려면 매우 간단한 구성으로 Dockerfile
을 생성합니다.
-
튜토리얼 컨테이너 스캔 프로젝트
에서 > 새 파일을 선택합니다. -
파일 이름을
Dockerfile
로 입력하고 파일에 다음 내용을 제공합니다.FROM hello-world:latest
이
Dockerfile
에서 생성된 Docker 이미지는hello-world
Docker 이미지를 기반으로 합니다. - 변경 사항 커밋을 선택합니다.
파이프라인 구성 만들기
이제 파이프라인 구성을 만들 준비가 되었습니다. 파이프라인 구성은 다음을 수행합니다.
-
Dockerfile
파일에서 Docker 이미지를 빌드하고 빌드된 Docker 이미지를 컨테이너 레지스트리에 푸시합니다.build-image
작업은 CI/CD 서비스인 Docker-in-Docker를 사용하여 Docker 이미지를 빌드합니다. 파이프라인에서 Docker 이미지를 빌드하려면 kaniko를 사용할 수도 있습니다. - 컨테이너 레지스트리에 저장된 Docker 이미지를 스캔하기 위해
Container-Scanning.gitlab-ci.yml
템플릿을 포함합니다.
파이프라인 구성을 만들려면 다음을 수행합니다.
- 프로젝트의 루트 디렉터리에서 > 새 파일을 선택합니다.
-
파일 이름을
.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 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
- 변경 사항 커밋을 선택합니다.
거의 다 되었습니다. 파일을 커밋하면 이 구성으로 새 파이프라인이 시작됩니다. 완료되면 스캔 결과를 확인할 수 있습니다.
보고된 취약점 확인
스캔의 취약점은 해당 스캔을 실행한 파이프라인에 있습니다. 보고된 취약점을 확인하려면 다음을 수행합니다.
-
CI/CD > 파이프라인을 선택하고 가장 최근의 파이프라인을 선택합니다. 이 파이프라인은
test
단계에서container_scanning
작업을 포함해야 합니다. -
container_scanning
작업이 성공하면 보안 탭을 선택합니다. 발견된 취약점이 있다면 해당 페이지에 나열됩니다.
Docker 이미지 업데이트
hello-world:latest
를 기반으로 한 Docker 이미지는 취약점을 보고하는 것이 불가능합니다. 취약점을 보고하는 스캔의 예를 보려면 다음을 수행합니다.
- 프로젝트의 루트 디렉터리에서 기존
Dockerfile
파일을 선택합니다. - 편집을 선택합니다.
-
FROM
지시문에 다른 Docker 이미지로 변경합니다. 컨테이너 스캔을 보여줄 가장 좋은 Docker 이미지는 다음이 있습니다.- 운영 체제 패키지. Debian, Ubuntu, Alpine, 또는 Red Hat에서 가져온 패키지 등.
- 프로그래밍 언어 패키지. 예: NPM 패키지 또는 Python 패키지 등.
- 변경 사항 커밋을 선택합니다.
파일을 커밋하면이 업데이트된 Dockerfile
로 새 파이프라인이 시작됩니다. 완료되면 새 스캔 결과를 확인할 수 있습니다.