CVE/SBOM 게이트 문서화: CLAUDE.md 3번째 서브시스템 + MEMORY.md 신설
CLAUDE.md 에 CVE/SBOM 게이트 서브시스템 절 추가(기존 7개 설계 원칙·구현 현황은 변경 없음). doc/sbom-pipeline.md 에 게이트 판정 절 + 커버리지 자가진단 미이식 제약 명시. MEMORY.md 신설 — warn-only 상태, 45+ 차트 미검증, 자체 빌드 프레임워크 미사용, SBOM_PIPELINE_IMAGE 재빌드 보류 등 후속 결정 사항 기록.
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
# 현재 상태 · 미결 결정
|
||||
|
||||
작업을 이어받을 때 여기서 시작한다. **지금 시점의 상태와 다음에 할 일**만 담는다.
|
||||
|
||||
- 프로젝트 개요·설계 원칙 → [CLAUDE.md](CLAUDE.md)
|
||||
- SBOM·CVE 게이트 메커니즘 → [doc/sbom-pipeline.md](doc/sbom-pipeline.md)
|
||||
|
||||
최종 갱신: 2026-08-03
|
||||
|
||||
---
|
||||
|
||||
## 다음 작업
|
||||
|
||||
**CVE 게이트(`scripts/pipeline/cve-gate.py`)를 도입했다 — 아직 warn-only다.** `sbom.yml`
|
||||
에 게이트 판정 스텝을 추가했지만 `--warn-only` 로 실행돼 실패해도 워크플로/PR 을 막지
|
||||
않는다. **45+ 개 카탈로그 차트가 이 게이트로 한 번도 트리아지된 적이 없다** — 강제
|
||||
게이트(`--warn-only` 제거)로 전환하려면 먼저 전체 카탈로그 스캔 1회로 몇 개 이미지가
|
||||
차단되는지 파악해야 한다. `gh workflow run helm-catalog-sbom --ref main`(또는 대상
|
||||
브랜치)으로 전체 스캔 후 `cve-gate.md` 아티팩트를 확인한다.
|
||||
|
||||
**`doc/cve-exceptions.json` 이 비어 있다.** 첫 전체 스캔에서 차단 항목이 나오면 대응
|
||||
우선순위(상위 태그 교체 → 베이스 OS 교체 → 자체 빌드 → 예외 승인)를 검토하고, 예외는
|
||||
근거·만료일을 명시해 추가한다.
|
||||
|
||||
**커버리지 자가진단(`CoverageProbe`)이 이식되지 않았다.** security-catalog 의
|
||||
`scan-sbom.sh` 는 센티널 패키지 주입 재스캔으로 "0건"과 "측정되지 않음"을 구분하지만,
|
||||
dip-catalog 의 `scan-sbom.sh` 는 이 로직이 없다 — 게이트는 findings 총계 0건을 보수적으로
|
||||
차단 처리하는 구버전 경로로만 동작한다. 45+ 차트 규모에서 이 판정이 오탐을 얼마나
|
||||
내는지 실측 후 이식 여부를 결정한다.
|
||||
|
||||
**자체 빌드 프레임워크(`scripts/build/`, `.github/workflows/build-image.yml`)는 도입만
|
||||
했고 실사용 이미지가 없다.** `images/` 디렉토리 자체가 아직 없다. 실제 자체 빌드가
|
||||
필요해지면(게이트가 상위 태그/베이스 OS 교체로 해소 안 되는 차단 CVE 를 찾을 때)
|
||||
[.claude/image-authoring.md](.claude/image-authoring.md) 절차로 `images/<image>/` 를
|
||||
신설한다. 이때 최종 런타임 베이스 OS 정책(security-catalog 는 SUSE BCI 로 고정했으나
|
||||
dip-catalog 는 아직 미결)을 처음으로 정해야 한다.
|
||||
|
||||
**`SBOM_PIPELINE_IMAGE` 재빌드가 보류돼 있다.** 이 마이그레이션으로 빌드 컨텍스트 경로가
|
||||
`doc/scripts/Dockerfile` → `scripts/pipeline/Dockerfile` 로 바뀌었다. Dockerfile 내용
|
||||
자체는 안 바뀌었으므로 기존 `docker.io/wbsong111/sbom-pipeline:latest` 는 당장 깨지지
|
||||
않지만, `paasup` 네임스페이스로 이전할지는 별도 결정이 필요하다. **재빌드 + push +
|
||||
Repo Variable `SBOM_PIPELINE_IMAGE` 갱신은 git 커밋으로 되지 않는 수동 작업**이다.
|
||||
|
||||
**`build-image.yml` 의 `REGISTRY_HOST` 를 `docker.io/paasup` 로 설정했다.** 실제 이미지를
|
||||
push 하려면 `DOCKERHUB_USER`/`DOCKERHUB_TOKEN` 시크릿이 `paasup` 조직 네임스페이스에
|
||||
push 권한을 가져야 한다 — **미확인**, 실제 첫 자체 빌드 시도 전에 확인 필요.
|
||||
|
||||
---
|
||||
|
||||
## 미결 결정
|
||||
|
||||
### 게이트 강제력 전환 시점
|
||||
"45+ 차트 미검증" 문제 해소 후 결정한다. branch protection(필수 상태 체크)도 게이트
|
||||
강제와 짝을 이뤄야 의미가 있다 — 지금은 미설정.
|
||||
|
||||
### scan-sbom.sh 커버리지 자가진단 이식 여부
|
||||
위 "다음 작업" 참고. 이식하면 dip-catalog scan-sbom.sh 와 security-catalog 버전의
|
||||
동작 차이가 사라지지만, 스캔 시간이 늘어난다(대상별 추가 재스캔).
|
||||
|
||||
### SBOM_PIPELINE_IMAGE 재빌드/네임스페이스 전환
|
||||
결정 나면 `docker.io/paasup/sbom-pipeline:...` 로 빌드·push 하고 Repo Variable
|
||||
`SBOM_PIPELINE_IMAGE` 를 갱신한다(수동, out-of-band).
|
||||
Reference in New Issue
Block a user