관리 메뉴

피터의 개발이야기

Trivy: 컨테이너 이미지 취약점 스캐너 사용법 본문

DevOps/Docker

Trivy: 컨테이너 이미지 취약점 스캐너 사용법

기록하는 백앤드개발자 2025. 1. 4. 15:59
반응형

ㅁ 들어가며

 배포환경을 구성하면서 보안점검에 대해서도 대비해야한다. [Docker] Distroless 이미지란?에서 Muti Stage build와 경량 이미지를 이용하는 방법에 대해서 보안취약점에 대비하는 방법을 알게 되었는데, 생성된 Docker 이미지의 보안성 체크를 위해 Trivy를 알게 되어 이 글을 작성한다.

 

ㅁ Trivy란?

Trivy는 Aqua Security에서 개발한 오픈소스 취약점 스캐너이다.

컨테이너 이미지, 파일시스템, Git 저장소 등의 취약점을 검사할 수 있다.

 

ㅁ 설치 방법

# macOS
brew install trivy

# ubuntu
sudo apt-get install trivy

# docker 
docker run aquasec/trivy

 

ㅇ Trivy는 Installing Trivy를 참조하여 다양한 방법으로 설치할 수 있다.

 

ㅁ 기본 사용법

컨테이너 이미지 스캔

trivy image [이미지 이름]:[태그]

ex)
trivy image nginx:1.14.2

 

 

 

Docker를 통한 스캔

docker run \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $HOME/Library/Caches:/root/.cache/ \
  aquasec/trivy:0.43.0 image [이미지 이름]:[태그]
  
ex)
 docker run \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v $HOME/Library/Caches:/root/.cache/ \
  aquasec/trivy:0.43.0 image nginx:1.14.2

 

 

ㅁ 고급 사용법

특정 심각도 수준만 스캔

trivy image --severity HIGH,CRITICAL [이미지 이름]:[태그]

 

결과 포맷 지정

trivy image -f json -o results.json [이미지 이름]:[태그]

 

클라이언트-서버 모드

Trivy는 Client/Server모드로 운영할 수 있다. 이 모드는 대규모 환경에서 유용하다.

# 서버실행
trivy server --listen 0.0.0.0:8080

 

# 클라이언트에서 스캔
$ trivy image --server http://localhost:8080 alpine:3.10

 

ㅁ Trivy-operator

Trivy Operator는 Trivy를 활용하여 Kubernetes 클러스터의 보안 문제를 지속적으로 검사한다. 검사는 Kubernetes Custom Resource Definitions로 보안 보고서에 요약되며 Kubernetes API를 통해 액세스할 수 있다. Operator는 Kubernetes의 상태 변경을 감시하고 이에 대한 응답으로 보안 검사를 자동으로 트리거하여 이를 수행한다. 예를 들어, 새 Pod가 생성되면 취약성 검사가 시작된다.이런 방식으로 사용자는 다양한 리소스와 관련된 위험을 찾아서 볼 수 있다.
 관련 홈페이지

 

ㅁ 마무리

  Trivy는 사용하기 쉽고 강력한 취약점 스캐너이다. 컨테이너 보안을 강화하고 잠재적인 위험을 사전에 식별하는 데 도움을 준다. CI/CD 파이프라인에 통합하여 지속적인 보안 검사를 수행할 수 있다.

 

ㅁ 함께 보면 좋은 사이트

  trivy 공식 깃헙 링크 

trivy 공식 홈

trivy를 활용한 Container Image 취약성 검사

  ㄴ  trivy를 Kubernetes위에 Server와 Client로 분리하여 설치

[Supply Chain Security] 컨테이너 이미지 보안 취약점 스캐닝: Trivy를 활용한 CVE 스캔

 trivy-operator 

  ㄴ k8s 클러스터에 설치하는 과정 정리

 

반응형
Comments