scan-sbom.sh: CoverageProbe 커버리지 자가진단 이식 + 관련 파이프라인 버그 수정

security-catalog 프로젝트에서 자체 빌드 이미지 3종을 실제로 로컬 빌드·게이트
검증하는 과정에서 발견한 문제들:

- extract-helm-images.sh 가 `image:` 필드만 잡고 `imageName:`(CNPG Cluster CRD 관례)
  은 놓쳐, cnpg-cluster 차트의 이미지가 SBOM·스캔·게이트 어디에도 안 나타났다.
- patch-catalog-tag.py 의 split 포맷 패처가 registry 필드가 따로 없고 repository 에
  registry+repo 를 합쳐 쓰는 차트(cloudnative-pg 오퍼레이터, 업스트림 템플릿이
  image.registry 를 아예 참조하지 않음)에서 tag 만 조용히 갱신하고 repository 는
  그대로 남겨 깨진 참조를 만들 수 있었다.
- CoverageProbe(센티널 패키지 주입 재스캔으로 "0건"과 "측정 안 됨"을 구분)가
  이식되지 않아, 전 심각도 0건인 자체 빌드 이미지가 실제로는 깨끗한데도 게이트가
  "데이터 커버리지 이상"으로 오탐 처리했다 — security-catalog 의 scan-sbom.sh 를
  이식해 해소. cve-gate.py 는 이미 이 키를 읽도록 구현돼 있어 소비 쪽 변경은 없다.

rpm(SUSE)·deb(Debian)·apk(Alpine) 세 센티널 경로와 병렬 스캔 회귀를 로컬에서
확인했고, 이식 후 cloudnative-pg·cnpg-postgresql 게이트가 실제로 FAIL→PASS 로
바뀌는 것도 확인했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
wbsong111
2026-08-03 15:30:57 +09:00
parent 6878b61efa
commit 6597059a15
6 changed files with 159 additions and 35 deletions
+6 -2
View File
@@ -40,8 +40,12 @@ STATUS="$OUT_DIR/render_status.tsv"
cd "$HELM_ROOT"
extract_images() { # stdin: 렌더된 yaml → stdout: 이미지 문자열
grep -ioE '^[[:space:]]*(- )?image:[[:space:]]*"?[^"[:space:]]+' \
| sed -E 's/.*image:[[:space:]]*"?//' \
# `image:` 뿐 아니라 `imageName:` 도 잡는다 — CNPG Cluster CRD(cnpg-cluster 차트의
# postgresql.imageName)처럼 단일 문자열 필드로 이미지를 표기하는 관례가 있다
# (patch-catalog-tag.py 의 TAG_STYLE=imageName 과 같은 표기). 이걸 놓치면 그 이미지가
# SBOM·스캔·게이트 어디에도 나타나지 않고 조용히 빠진다(실측: cnpg-cluster).
grep -ioE '^[[:space:]]*(- )?image(Name)?:[[:space:]]*"?[^"[:space:]]+' \
| sed -E 's/.*image(Name)?:[[:space:]]*"?//' \
| grep -vE '^$'
}