hardened-containers가 이미 rescan.yml로 매일 자율 재스캔·재빌드하고, sbom.yml이
custom-values.yaml 기준으로 자체 빌드 이미지를 다른 카탈로그 이미지와 동일하게
스캔하고 있어 self-build-drift-check.yml의 트리거·전용 스캔이 순수 중복이었다
(SECURITY_IMAGES_DISPATCH_TOKEN도 등록된 적 없어 트리거 스텝은 항상 실패하던
죽은 코드). check-rebuild-needed.py가 더하던 fixable/no-fix 구분도 cve-gate.py
리포트에 이미 있어 흡수할 필요 없이 삭제했다. 근거는 ADR 0005.
곁들여 CI 위생 문제(trivy DB 캐시 없음, concurrency 없음, catalog-tag-update.yml의
브랜치 누적)를 함께 고치고, hardened-containers의 docs/image-authoring.md가
docs/image-authoring/ 로 분할된 것을 반영해 관련 링크를 정정했다.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
doc/scripts/* -> scripts/pipeline/* 경로 수정 (두 워크플로 공통).
sbom.yml 에 cve-gate.py 판정 스텝 추가(--warn-only), SEVERITY 를 전
심각도로 덮어써 게이트가 필요한 데이터를 스캔이 누락하지 않게 한다.
cve-edge-post.yml 은 외부 대시보드 전송용이라 게이트 연결은 하지 않는다.
Replace the per-image catalogs array with a flat structure: results
are now keyed by (catalog, version), with the same image's scan
counts duplicated across every chart/version that references it.
summary now lists only CRITICAL vulnerabilities, formatted as
"CVE-ID: description" pairs joined by "; ". Description comes from
trivy's Title field, falling back to the first sentence of Description.
Allow scanning a single catalog (manifests/helm/<chart>/) via the
workflow_dispatch chart input, filtering images_final.tsv by chart
name before the limit is applied. Empty value scans the full catalog
as before.
Allow scanning a single catalog (manifests/helm/<chart>/) via the
workflow_dispatch chart input, filtering images_final.tsv by chart
name before the limit is applied. Empty value scans the full catalog
as before.
Parallel trivy image workers sharing the fs cache directory hit
"cache may be in use by another process: timeout" errors. Switch to
--cache-backend memory to avoid bolt-db lock contention, matching the
approach already used in generate-sbom.sh.
Python was still reading DOCKERHUB_PAASUP_USER/TOKEN while the env:
block sets DOCKERHUB_USER/TOKEN, silently disabling private registry
auth. Also restore the nvcr.io (NGC) auth entry that was dropped.
Skip SBOM generation entirely since cve-edge-post.yml only needs
vulnerability counts, not CycloneDX artifacts — scan each image with
`trivy image` directly and aggregate with python3 (drop jq dependency).
Output is now a JSON array with one entry per image instead of a single
merged summary.