- 이 글은 2023년도 7월중 작성된 것으로 현재의 설치 / 사용 방법과 매우 다를수 있음을 알려드립니다. -
도커 이미지 스캐너중 하나인 trivy에 대해 알아보겠다.
trivy는 aqua security에서 제작한 보안 스캐너로, 다음과 같은 대상을 스캔할수 있다.
스캔 대상 (Trivy가 스캔할 수 있는 대상):
- 컨테이너 이미지
- 파일 시스템
- Git 저장소(원격)
- 가상 머신 이미지
- 쿠버네티스
- AWS
취약점 (Trivy로 감지할수 있는 취약점):
- 사용 중인 OS 패키지 및 소프트웨어 종속성(SBOM)
- 알려진 취약점(CVE)
- IaC 문제 및 잘못된 구성
- 민감한 정보와 비밀
- 소프트웨어 라이선스
OS 패키지만 스캔해주는 다른 오픈소스와 다르게 Application의 패키지까지 스캔해주며
편의성 (접근성) 이 우수하다는 두가지 장점으로 널리 알려진 스캐너이다.
오늘은 도커를 통해 trivy를 실행하고, 도커 이미지를 스캔하는 방법에 대해 알아보겠다 !!
설치 방법
1. 먼저 아쿠아시큐리티의 설치 경로로 들어가 본인이 사용하는 OS를 참고한다.
https://aquasecurity.github.io/trivy/v0.43/getting-started/installation/
Installation - Trivy
Add repository setting to /etc/apt/sources.list.d. sudo apt-get install wget apt-transport-https gnupg lsb-release wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null echo
aquasecurity.github.io
필자의 경우 우분투 20.04버전을 사용해 아래 명령어를 참고했다.
# 우분투 / 데비안 기준
sudo apt-get install wget apt-transport-https gnupg lsb-release
wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | gpg --dearmor | sudo tee /usr/share/keyrings/trivy.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/trivy.gpg] https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list.d/trivy.list
sudo apt-get update
sudo apt-get install trivy
공식 사이트로 치면 아래와 같은 명령어를 복사했다.
그후 맨아래 컨테이너 이미지를 통한 설치가이드를 따른다.

1. 먼저 docker pull 명령어로 trivy이미지를 다운로드 하고 컨테이너로 실행한다.
(버전을 입력하지 않아도 latest버전으로 다운로드 되지만, 버전을 명시하는 편이 좋다)
# trivy이미지를 로컬로 pull
docker pull aquasec/trivy:0.43.0
2. trivy실행을 바로 컨테이너 실행해 스캔할 이미지를 넘겨준다.
(호스트의 일관된 캐시 디렉토리를 Trivy 컨테이너에 마운트하는 것이 좋고, Trivy를 사용하여 컨테이너 이미지를 스캔하려면 호스트에서 Trivy 컨테이너로 마운트해야 한다.)
아무튼 다음 명령어로 실행이 가능하다.
#이미지 이름에 스캔하기 원하는 이미지 이름:태그 입력
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy:0.43.0 image {image-name:tag}
만약 우분투 20.04버전의 도커 이미지를 스캔하고자 한다면 다음과 같은 명령어를 입력할수 있다.
#만약 우분투 20.04버전을 스캔한다고 하면
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $HOME/Library/Caches:/root/.cache/ aquasec/trivy:0.43.0 image ubuntu:20.04
결과는 다음과 같다.

이미지에 설치된 라이브러리(버전),여러가지 종속성들의 알려진 취약점(CVE기반) 정보를 알려준다.
보안에 대한 엄청난 지식은 갖고있지 않아 제대로 해석할수는 없지만
이런 개발자도 도커 이미지를 스캔할수 있다는 점에서 편의성 하나는 뛰어난 스캐너이지 않나 싶다
출처:
( trivy 공식 깃헙 링크 ) https://github.com/aquasecurity/trivy
GitHub - aquasecurity/trivy: Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more - aquasecurity/trivy
github.com