feat(sbom): add Helm catalog SBOM+vuln pipeline (CycloneDX)

manifests/helm 카탈로그 전 이미지의 SBOM(CycloneDX)과 취약점 리포트를
생성하는 파이프라인 추가. 컨테이너 내부 trivy/helm 바이너리 직접 호출.

- doc/scripts/extract-helm-images.sh: helm template 렌더로 이미지 인벤토리 추출
- doc/scripts/generate-sbom.sh: trivy image --format cyclonedx (이미지 1회 pull)
- doc/scripts/scan-sbom.sh: trivy sbom 로 SBOM 기반 오프라인 취약점 스캔
- .github/workflows/sbom.yml: 스케줄(전체)+PR(증분)+수동, 산출물은 아티팩트
- doc/sbom-pipeline.md: 파이프라인 설계·운영 문서(단일)
- latest/무태그 digest 고정: mlflow postgresql, vllm-openai(v0.24.0)
- .gitignore: 파이프라인 산출물 제외

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
wbsong111
2026-07-08 12:15:58 +09:00
parent 9676fec2f3
commit 2af7fcb43d
8 changed files with 699 additions and 1 deletions
@@ -23,6 +23,11 @@ postgresql:
database: mlflow
image:
repository: bitnamilegacy/postgresql
# bitnamilegacy 레지스트리에 postgresql v18 버전 태그가 없어(서브차트는 v18 요구,
# bitnami legacy 지원 중단 #83267) chart 기본값이 latest 로 풀린다. 재현성을 위해
# 조회 시점(2026-07-08) latest 내용을 digest 로 고정한다. digest 는 tag 를 override 한다.
# 상세: doc/sbom-pipeline.md (운영 노트 — digest 고정)
digest: "sha256:42a8200d35971f931b869ef5252d996e137c6beb4b8f1b6d2181dc7d1b6f62e0"
primary:
persistence:
enabled: true
@@ -2,7 +2,7 @@ servingEngineSpec:
modelSpec:
- name: "qwen"
repository: "vllm/vllm-openai"
tag: "latest"
tag: "v0.24.0" # latest 고정 해제 (재현성). 상세: doc/sbom-pipeline.md
modelURL: "Qwen/Qwen2.5-Coder-14B-Instruct"
replicaCount: 1