Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Grype 검사와 결과 정규화: cve grype scan

apollo-cli cve grype scan은 설치된 Grype 실행 파일로 대상을 검사하고 결과를 정규화합니다. Grype가 설치되어 있으며 PATH에서 찾을 수 있어야 합니다. 이 명령은 Apollo의 취약점 데이터를 가져오지 않습니다.

apollo-cli cve grype scan <source> [flags] [-- <grype flags>]

스캔 대상

로컬 Docker 데몬의 이미지, 레지스트리 이미지, 이미지 아카이브, 디렉터리와 Grype가 지원하는 다른 대상을 사용할 수 있습니다.

대상 표기의미
my-image:latest이미지 이름으로 대상 지정
registry:example.com/team/image:latest레지스트리에서 직접 이미지 가져오기
oci-archive:./image.tarOCI 이미지 아카이브
docker-archive:./image.tardocker save로 만든 이미지 아카이브
dir:./project파일시스템 디렉터리

이름과 경로는 예시입니다. 실제 검사할 이미지나 파일을 지정합니다.

CVE와 심각도 선택

NVD(National Vulnerability Database)는 공개 취약점 정보를 보강하여 관리하는 데이터베이스이고, CVSS(Common Vulnerability Scoring System)는 취약점의 심각도를 점수로 표현하는 체계입니다. Grype 보고서에 NVD 정보가 있으면 NVD의 CVE ID와 CVSS 점수를 우선하여 선택합니다.

심각도는 CVSS v3, CVSS v2, Grype의 심각도 순서로 결정합니다. 정규화한 보고서에 점수로 보관하는 것은 선택된 CVSS v3 점수뿐입니다.

옵션과 추가 Grype 인수

옵션의미
--output-file정규화한 전체 Grype 보고서를 지정한 파일에 JSON으로 기록
-h, --help명령 도움말

--output-file은 CLI의 출력 형식 선택과 관계없이 JSON 파일을 만듭니다.

추가 Grype 옵션은 -- 뒤에 전달합니다. 단, Grype의 -o, --output, --file은 전달할 수 없습니다. 이 명령이 Grype의 JSON 결과를 받아 처리해야 하기 때문입니다.

오류와 보고서의 관계

Grype 결과Apollo CLI의 동작
유효한 JSON 보고서를 만든 뒤 0이 아닌 상태로 종료보고서를 출력하고 명령도 오류로 종료
유효한 보고서 없이 스캔 실패보고서를 출력하지 않고 오류로 종료

예를 들어 Grype의 --fail-on 조건 때문에 실패 상태가 되어도 유효한 보고서가 있다면 결과를 볼 수 있습니다.

예시

./apollo-cli cve grype scan my-image:latest
./apollo-cli cve grype scan oci-archive:./image.tar --output-file scan.json

Grype 인수를 전달하는 예시는 다음과 같습니다.

./apollo-cli cve grype scan registry:example.com/team/image:latest \
  -- --only-fixed --scope all-layers