Trivy는 컨테이너 이미지, 파일 시스템, Git 리포지토리 등을 스캔하여 취약점과 잘못된 구성(misconfigurations)을 찾아내는 경량의 통합 보안 스캐너입니다.
Trivy의 주요 특징
- 자동화된 취약점 스캔: Trivy는 별도의 설정 없이도 컨테이너 이미지에 포함된 OS 패키지, 프로그래밍 언어 라이브러리(Java, Python, Go 등)의 알려진 취약점을 자동으로 식별합니다.
- 간편한 사용: 단일 바이너리 파일로 제공되어 설치와 사용이 매우 간단합니다. trivy image <이미지_이름>과 같은 직관적인 명령어로 스캔을 시작할 수 있습니다.
- 다양한 스캔 대상: 컨테이너 이미지뿐만 아니라, 로컬 파일 시스템, Git 리포지토리, Kubernetes 클러스터, 그리고 IaC(Infrastructure as Code) 파일(Terraform, CloudFormation 등)까지 스캔할 수 있습니다.
- 개발 프로세스 통합: CI/CD 파이프라인에 쉽게 통합하여 개발 초기 단계부터 보안 취약점을 검사할 수 있습니다.
Trivy 설치
- 최신 버전 확인: Trivy의 GitHub 릴리스 페이지에서 최신 버전의 바이너리 이름을 확인합니다.
- 바이너리 다운로드: 예를 들어, 최신 버전이 v0.50.0이라면, wget을 사용해 .deb 파일을 다운로드합니다.버전이 다르면 위 URL의 버전 번호를 바꿔야 합니다.
-
패키지 다운
wget https://github.com/aquasecurity/trivy/releases/download/v0.50.0/trivy_0.50.0_Linux-64bit.deb
- 패키지 설치: 다운로드한 .deb 파일을 dpkg로 설치합니다.
sudo dpkg -i trivy_0.50.0_Linux-64bit.deb
설치가 완료되면 trivy --version 명령어로 버전을 확인하여 설치가 제대로 되었는지 검증할 수 있습니다.
trivy --version
Trivy 사용 방법
kube-system 네임스페이스에 있는 모든 파드의 컨테이너 이미지를 대상으로 Trivy를 실행하여 취약점을 스캔하는 방법입니다.
단계 1: kube-system 파드의 이미지 목록 조회
먼저, kube-system 네임스페이스에 존재하는 모든 파드와 해당 파드에 사용된 컨테이너 이미지 목록을 확인합니다.
kubectl get pods --namespace kube-system --output=custom-columns="NAME:.metadata.name,IMAGE:.spec.containers[*].image"
- --output=custom-columns: 출력 형식을 사용자 정의합니다.
- "NAME:.metadata.name,IMAGE:.spec.containers[*].image": 파드의 이름(NAME)과 사용된 이미지(IMAGE)를 출력 열로 지정합니다. *는 파드 내의 모든 컨테이너를 의미합니다.
단계 2: Trivy로 이미지 취약점 스캔
위 명령어로 확인한 이미지 이름을 기반으로 각 이미지에 대해 Trivy 스캔을 수행합니다.
trivy image docker.io/calico/kube-controllers:v3.24.1 | egrep -i 'high|critical'
'k8s > CKS' 카테고리의 다른 글
[CKS] k8s TLS 설정 (0) | 2025.09.09 |
---|---|
[CKS] 쿠버네티스 API 서버 보안 강화: 익명 접근 차단 (0) | 2025.09.09 |
[CKS] Pod Security Standards - restricted (0) | 2025.09.08 |
[CKS] cilium (0) | 2025.09.08 |
[CKS] k8s Cluster & node version upgrade (0) | 2025.09.08 |