BBahmni 한국어 매뉴얼검색
한국어 번역 완료
한국어English

Trivy를 이용한 보안 스캔

Trivy를 이용한 취약점, 비밀 정보, 컨테이너 이미지 및 Kubernetes 클러스터 스캔

Trivy 취약점 스캔

Trivy는 스캔할 때 사용 중인 OS 패키지와 소프트웨어 의존성(SBOM), 알려진 취약점(CVE), IaC 문제와 잘못된 설정, 민감한 정보와 비밀 정보, 소프트웨어 라이선스를 검사합니다. 컨테이너 이미지, 파일 시스템, 원격 Git 저장소, 가상 머신 이미지, Kubernetes, AWS 등 여러 유형의 대상을 지원합니다.

Bahmni는 코드 작성 → GitHub 푸시 → 이미지 빌드 → Kubernetes 클러스터에서 코드 실행에 이르는 CI/CD 파이프라인의 여러 단계에서 Trivy를 사용합니다.

파일 시스템 스캔

파일 시스템 스캔을 수행하려면 시스템에 Trivy를 설치해야 합니다. 안내된 설치 단계를 따르세요. 설치 후 trivy fs <path-to-scan> 명령으로 파일 시스템을 스캔할 수 있습니다. 파일 시스템 스캔은 기본적으로 시스템 파일에서 취약점(언어별 파일)과 비밀 정보를 검사합니다.관련 문서: here

Bahmni는 일부 저장소에서 Trivy의 파일 시스템 스캔 기능으로 정적 코드 분석과 비밀 정보 스캔을 수행합니다. 개발자가 코드를 푸시하면 빌드 전에 스캔하여 오래되었거나 취약한 라이브러리 또는 비밀 정보가 코드에 포함되지 않았는지 확인합니다. 자세한 내용은 비밀 정보 스캔 절을 확인하세요.관련 문서: Secrets Scanning

컨테이너 이미지 스캔: Trivy로 컨테이너 이미지를 스캔하려면 이미지 이름과 태그를 지정하기만 하면 됩니다.

원격 저장소에서 이미지를 가져와 스캔합니다. 결과에는 Critical, High, Medium, Unknown 수준의 취약점이 보고되며 출처별로 묶어서 표시됩니다.

Bahmni 이미지의 취약점이 Dockerhub로 푸시되지 않도록 파이프라인의 여러 단계에서 Trivy 스캔을 활성화했습니다. 먼저 코드가 푸시되면 파일의 취약점과 비밀 정보를 검사하는 파일 시스템 스캔을 수행합니다. Critical 또는 High 수준의 취약점이 하나라도 발견되면 빌드 전에 파이프라인을 중단하고 개발자에게 알립니다. 따라서 해당 코드에서 생성하는 아티팩트에도 취약점이 포함되지 않습니다. 파일 시스템 스캔에 성공하면 빌드 후 다시 Trivy 이미지 스캔을 수행합니다. 이때 Trivy는 사용한 기본 이미지를 포함해 컨테이너 이미지의 여러 계층을 검사합니다. 해당 파이프라인 예시를 확인하세요.관련 문서: here

Kubernetes 클러스터 스캔

워크로드가 Kubernetes에 배포된 뒤에도 Bahmni는 실행 중인 워크로드의 리소스를 자동으로 지속해서 스캔합니다. 빌드·게시 시점의 이미지 스캔에 성공했더라도 이미지가 장기간 업데이트되지 않으면 일부 라이브러리나 기본 이미지에 새 취약점이 생길 수 있으므로 실행 중인 워크로드 스캔이 중요합니다.

이 구성에는 매일 실행되는 워크플로가 포함됩니다. 현재 Trivy는 HTML이나 다른 시각적 형식의 보고서 생성을 지원하지 않으므로 사용자 지정 스크립트로 파일을 만들고 보고서를 시각화합니다. 먼저 전체 클러스터를 스캔해 클러스터 요약을 생성하고 txt 파일에 저장합니다. 그다음 각 네임스페이스의 상세 보고서를 생성하고 심각도별로 파일을 구분합니다. 모든 보고서를 생성한 후 사용자 지정 웹페이지에서 읽기 쉽게 시각화합니다. 이 구성은 GitHub Pages로 호스팅되며, 코드는 안내된 위치에서 확인할 수 있고 해당 작업에서 사용자 지정이 수행됩니다.관련 문서: workflowdailygenerated and storeddetailed reportsherethis

스캔이 끝나면 Bahmni의 #cicd-monitor Slack 채널로 알림이 자동 전송됩니다. 이 부분도 사용자 지정할 수 있으며 다른 알림 서비스로 교체할 수 있습니다.관련 문서: automatically sent

비밀 정보 스캔

Trivy는 기본적으로 스캔 과정에서 비밀번호, API 키, 토큰 등의 비밀 정보를 검사합니다. 내장 규칙을 이용하므로 AWS 액세스 키, GCP 서비스 계정, GitHub 개인 액세스 토큰, GitLab 개인 액세스 토큰, Slack 액세스 토큰처럼 매우 민감한 비밀 정보만 보고합니다. 이는 오탐을 줄이기 위한 것입니다. Trivy 내장 규칙 전체 목록을 참고하세요.관련 문서: Here

Bahmni는 파이프라인에서 Trivy를 비밀 정보 스캐너로 사용합니다. Trivy 비밀 정보 스캔 파이프라인의 워크플로 예시를 참고하세요. 비밀 정보를 다루는 권장 방식은 개발 머신에 Talisman을 전역 훅으로 구성하는 것입니다. 안내된 설정 지침을 따르세요.관련 문서: HereHere

Trivy는 프로젝트 루트에 둘 수 있는 trivy-secret.yaml 파일을 사용합니다. 이 파일에 사용자 지정 규칙을 정의합니다. Trivy가 비밀 정보를 스캔할 때 제외하거나 허용할 비밀 정보 또는 파일을 이 파일에 추가할 수 있습니다. 특정 비밀 정보를 제외·허용하려면 regex 필드에 추가하며 해당 비밀 정보의 id나 description도 지정할 수 있습니다. 파일을 제외·허용하려면 path 필드를 사용하세요.관련 문서: thisregex fieldpath field

원문 정보

Bahmni Wiki · CC BY-SA 4.0

원문 보기 ↗