Choose a default theme

You can change your theme from the menu

Trivy

Trivy는 컨테이너 이미지, 파일시스템 등에서 보안 관련 문제를 찾는 검사 도구다. 검사 대상과 설정에 따라 알려진 취약점, 구성 오류, 비밀정보, 라이선스 정보를 다룰 수 있다. 결과를 배포 전 검토나 CI의 정책 판단에 활용하지만, 실행 중인 서비스의 모든 공격 가능성을 실증하는 도구는 아니다. 컨테이너 이미지 안내는 검사 대상과 스캐너를 구분한다.

무엇을 근거로 판정하는가

취약점 검사는 이미지 안의 운영체제 패키지와 지원되는 언어 패키지 정보를 알려진 보안 정보와 대조한다. 취약점 데이터베이스의 최신성, 패키지 식별 가능 여부, 공급자의 수정 정보를 함께 고려해야 한다. 버전 문자열만 외워서 판단하는 방식과는 다르다.

같은 취약점의 심각도가 자료 출처에 따라 달라질 수 있고, 공급자가 보안 패치를 이전 버전에 반영했을 수도 있다. 취약점 스캐너 문서의 자료 출처와 판정 방식을 이해하면 결과를 단순 개수 비교보다 정확하게 읽을 수 있다.

장점과 한계

명령줄·CI·레지스트리 흐름에 연결하기 쉽고, 동일한 기준으로 여러 산출물을 반복 검사할 수 있다. 패키지 이름·설치 버전·수정 버전 등 조치에 필요한 정보를 모아 주는 것이 장점이다. 반면 식별되지 않는 구성 요소, 새로 발견되지 않은 취약점, 실제 공격 경로는 검사 결과 밖에 남을 수 있다.

취약점이 발견됐다는 사실과 현재 서비스에서 실제 악용 가능한지는 구별한다. 접근 경로와 사용하는 기능, 수정 가능 여부를 검토하되 결과를 무조건 무시하는 예외 규칙을 만들지 않는다. 알려진 취약점 0개도 안전 인증서가 아니며, 비밀정보나 구성 검사를 끈 실행은 그 항목을 검사하지 않은 것이다.

도서 검색 이미지의 CI 검사 예시

검토할 연습 이미지가 catalog-image.tar로 저장되어 있고 Trivy와 필요한 데이터베이스 접근이 준비되어 있다고 가정한다. 다음은 취약점 스캐너만 사용해 HIGH·CRITICAL 결과가 있으면 종료 코드 1을 내도록 하는 예시다. 파일 이름은 새로 만든 가상 산출물이다.

trivy image --input catalog-image.tar   --scanners vuln   --severity HIGH,CRITICAL   --exit-code 1   --format table

이 설정은 비밀정보·구성·라이선스 검사를 수행했다는 뜻이 아니다. CI는 취약점에 따른 정책 실패와 데이터베이스 다운로드·입력 파일 오류 같은 실행 실패를 로그와 보고서로 구분해야 한다. 실제 결과는 이미지 내용과 검사 시점의 데이터베이스에 따라 달라지므로 예시에 특정 발견 개수를 고정하지 않는다.

자주 생기는 오해

검사 프로그램이 기본 종료 코드 0을 반환했다고 발견 항목도 0개라고 가정하면 안 된다. 차단 정책은 옵션으로 명시하고 결과 보고서도 남긴다. 수정 버전이 없는 항목을 숨기면 관리가 끝난 것이 아니라 잔여 위험이 보이지 않게 될 수 있으므로, 필요한 예외에는 이유와 재검토 시점을 함께 기록한다.

실행 중인 악성 행위를 찾는 런타임 탐지, 소스코드의 업무 논리 검토, 외부 침투 시험은 별도의 목적을 가진다. Trivy는 이 절차들을 대신하기보다 산출물과 의존성 단계의 반복 가능한 점검 근거를 제공한다.

참고 자료

Kubernetes 클러스터 구성 길잡이

전체 구조

Kubernetes · etcd

설치와 조작

kubeadm · kubelet · kubectl

컨테이너 실행

containerd

네트워크와 이름

Calico · CoreDNS · MetalLB

진입과 메시

Kubernetes Gateway API · Istio · Istio Ambient

설치와 배포 관리

Helm · Argo CD · Argo Rollouts

이미지 공급

Harbor · Trivy · GitHub Actions