소개
Trivy는 Aqua Security Software가 공개한 오픈소스 보안 스캐너로, 컨테이너 이미지, 파일시스템, 원격 Git 저장소, 가상 머신 이미지, Kubernetes 등 다양한 대상에서 취약점, IaC 설정 오류, 비밀 정보, SBOM, 라이선스 문제를 한 번에 점검할 수 있도록 만든 CLI 도구입니다. Apache-2.0 라이선스로 배포되며 winget 등 공식 배포 채널을 통해 Windows에서도 사용할 수 있습니다.
상세정보
SBOM 및 의존성 점검
OS 패키지와 사용 중인 소프트웨어 의존성 목록(SBOM)을 생성합니다. CycloneDX, SPDX 등 표준 형식으로 결과물을 내보낼 수 있어, 빌드 산출물의 구성요소를 추적하는 데 활용할 수 있습니다.
취약점(CVE) 탐지
알려진 CVE를 기반으로 컨테이너 이미지, 파일시스템, Git 저장소 등의 의존성에서 취약점을 식별합니다. SBOM과 결합해 빌드 산출물 단위의 보안 점검으로 확장할 수 있습니다.
IaC 설정 오류 및 잘못된 구성 검사
Terraform, Dockerfile 등 Infrastructure as Code 자산에서 흔히 발생하는 설정 오류와 보안상 잘못된 구성을 찾아냅니다. 코드 단계에서 문제를 사전에 차단하는 용도로 사용할 수 있습니다.
민감 정보 및 비밀 키 탐지
저장소와 컨테이너 이미지 안에서 API 키, 토큰, 비밀번호 등 민감 정보와 비밀 키가 노출되어 있는지 점검합니다. 별도의 스캐너 활성화로 파일시스템과 이미지 모두에 적용할 수 있습니다.
소프트웨어 라이선스 검사
사용 중인 의존성의 라이선스를 확인하고, 정책에 맞지 않는 라이선스가 포함되었는지 점검합니다.
설치 채널
- winget:
winget install --id AquaSecurity.Trivy --exact - Homebrew:
brew install trivy - Docker 이미지:
docker run aquasec/trivy - GitHub Releases의 바이너리 ZIP 다운로드
- 공식 설치 스크립트:
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin v0.72.0
기본 사용 패턴
Trivy는 CLI에서 trivy <target> [--scanners <scanner1,scanner2>] <subject> 형태로 실행합니다. 자주 쓰이는 명령은 다음과 같습니다.
- 컨테이너 이미지 검사:
trivy image python:3.4-alpine - 파일시스템 검사:
trivy fs --scanners vuln,secret,misconfig myproject/ - Git 저장소 검사:
trivy repo <저장소 URL> - 가상 머신 이미지 검사:
trivy vm <이미지 경로> - Kubernetes 클러스터 검사:
trivy k8s --report summary cluster
Trivy는 무료인가요?
예, Apache-2.0 라이선스의 오픈소스 프로젝트로 자유롭게 내려받아 사용할 수 있습니다.
Windows에서는 어떻게 설치하나요?
winget install --id AquaSecurity.Trivy --exact로 설치할 수 있으며, GitHub Releases의 ZIP 빌드를 직접 내려받아 실행하는 방법도 제공됩니다.
결과를 어떤 형식으로 확인할 수 있나요?
표준 출력 외에 JSON, SARIF, CycloneDX, SPDX 같은 형식으로 결과를 내보낼 수 있어 CI/CD 및 대시보드 연동이 가능합니다.
Trivy와 Aqua 유료 제품의 차이는 무엇인가요?
Trivy는 오픈소스 스캐너이며, Aqua는 Trivy를 기반으로 더 폭넓은 보안 관리 기능을 제공하는 상용 제품을 함께 제공합니다.
시스템 요구사항
운영체제로는 Windows가 공식 빌드 대상이며, 그 외 macOS, Linux, FreeBSD 등 다양한 배포 채널이 제공됩니다. 사용 환경에 따라 Docker Engine, Git, Kubernetes 클러스터 접근 권한 등이 필요할 수 있으며, 최신 취약점 데이터베이스를 받기 위해 네트워크 연결이 필요합니다. 일부 스캔은 컨테이너 엔진 소켓이나 관리자 권한 같은 호스트 자원을 요구할 수 있습니다.


