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:
@@ -87,11 +87,9 @@ security-catalog 는 자체 빌드 이미지의 최종 런타임 베이스로 SU
|
||||
```sh
|
||||
IMAGE=<image> BASE_OS=<variant> bash scripts/build/build-hardened-image.sh /tmp/out
|
||||
```
|
||||
`cve-gate.md` 로 실효 C/H 0 확인. **dip-catalog 의 `scan-sbom.sh` 는 커버리지
|
||||
자가진단(`CoverageProbe`)이 없다** — 패키지가 적은 이미지(최소 베이스 등)는 findings
|
||||
전 심각도 0건이라는 이유만으로 게이트가 "데이터 커버리지 이상"으로 실패할 수 있다.
|
||||
진짜 0건인지 스캐너 데이터 부재인지는 사람이 `trivy-reports/<tag>.json`(OS/패키지 수)을
|
||||
보고 직접 판단한다(`doc/sbom-pipeline.md` 참고)
|
||||
`cve-gate.md` 로 실효 C/H 0 확인. 커버리지 자가진단(`CoverageProbe`)이 `ok` 인지도
|
||||
확인 — `none` 이면 findings 0건이 진짜 0건이 아니라 스캐너에 그 배포판 데이터가
|
||||
없다는 뜻이므로 게이트가 차단한다(`doc/sbom-pipeline.md` 참고)
|
||||
5. **게이트 PASS 는 "동작한다" 를 증명하지 않는다.** CVE 스캐너는 CVE 와 무관한 런타임
|
||||
요구사항(예: 오퍼레이터가 자신의 파일 레이아웃에 의존하는 것)을 전혀 보지 못한다.
|
||||
실제 배포 검증을 반드시 한다 — 자동화된 배포 테스트 절차는 아직 없으므로 해당 차트를
|
||||
@@ -105,5 +103,5 @@ security-catalog 는 자체 빌드 이미지의 최종 런타임 베이스로 SU
|
||||
## SBOM·스캔·게이트는 절대 다시 만들지 않는다
|
||||
|
||||
`scripts/pipeline/scan-sbom.sh` · `scripts/pipeline/cve-gate.py` 는 이미지 종류와 무관하게
|
||||
동작한다(단, dip-catalog 의 `scan-sbom.sh` 는 커버리지 자가진단이 없다 — `doc/sbom-pipeline.md`
|
||||
참고). `build-hardened-image.sh` 가 이미 이 둘을 호출한다 — 이미지별로 다시 구현하지 않는다.
|
||||
동작하며 커버리지 자가진단(`CoverageProbe`)도 포함한다(`doc/sbom-pipeline.md` 참고).
|
||||
`build-hardened-image.sh` 가 이미 이 둘을 호출한다 — 이미지별로 다시 구현하지 않는다.
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ security-catalog 프로젝트에서 CNPG/etcd 자체 빌드·배포 테스트
|
||||
| **벤더 미평가 은폐** | Ubuntu 의 "Needs evaluation" CVE 는 보고되지 않음. `--detection-priority comprehensive` 로도 안 나옴 |
|
||||
|
||||
> dip-catalog 의 `scan-sbom.sh` 는 두 번째 양상(데이터 커버리지 부재)을 구분하는 자가진단
|
||||
> (`CoverageProbe`)이 아직 없다 — `doc/sbom-pipeline.md` 참고.
|
||||
> (`CoverageProbe`)을 이식했다(2026-08-03) — `doc/sbom-pipeline.md` 참고.
|
||||
|
||||
## 이미지 태그의 베이스 OS 를 확인할 것
|
||||
|
||||
|
||||
Reference in New Issue
Block a user