Files
service-catalog/MEMORY.md
T
wbsong111 f5b8e4b91f 자체 빌드 드리프트 스캔·재빌드 트리거를 제거하고 CI 파이프라인을 정리한다
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>
2026-08-26 09:48:48 +09:00

78 lines
5.1 KiB
Markdown

# 현재 상태 · 미결
작업을 이어받을 때 여기서 시작한다.
- 프로젝트 개요·설계 원칙 → [CLAUDE.md](CLAUDE.md)
- SBOM·CVE 게이트 메커니즘 → [doc/sbom-pipeline.md](doc/sbom-pipeline.md)
최종 갱신 · 점검: 2026-08-19
---
## 이 파일의 유지 규칙
**지금 시점의 상태와 다음에 할 일만 담는다.** 완료된 작업의 경위는 담지 않는다 — 커밋
메시지·PR 설명이 이미 권위 있는 기록이고, 복사본을 두면 나중에 어느 쪽이 맞는지가 새
문제가 된다.
항목이 "다음에 할 일" 이 아니게 되면 **셋 중 하나로 내보내고 여기서 지운다.**
| 성격 | 목적지 |
|---|---|
| 추적·논의·배정이 필요한 미결 | GitHub 이슈 — 여기엔 **한 줄 링크만** |
| 재발 방지 교훈 | `.claude/pitfalls.md` · 해당 skill |
| 단순 완료 기록 | 삭제 |
트리거는 시간이 아니라 **상태**다. 다만 놓친 것을 걷어내기 위해 **월 1회 점검**한다 —
30일 넘게 남아 있는 항목이 있으면 위 셋 중 하나로 보내고 위의 "점검" 날짜를 갱신한다.
---
## 열린 이슈
| # | 내용 | 상태 |
|---|---|---|
| [#42](https://github.com/paasup/dip-catalog/issues/42) | `applicationset` 참조 values 의 이미지 태그가 차단 CVE 태그(`20260803`)에 멈춰 있다 | dip-console 이 이 값을 어떻게 쓰는지 확인이 선행 |
| [#38](https://github.com/paasup/dip-catalog/issues/38) | airflow fernet key 비결정 — #29 와 같은 구조, 체크섬에 없어 시한폭탄 | sync 반복 시 값이 바뀌는지 **실측 미완** |
| [#37](https://github.com/paasup/dip-catalog/issues/37) | 게이트는 판정만 하고 제안하지 않는다 — 대응 레버 1번에 도구 지원 0 | 실증 완료, 구현 미착수 |
| [#19](https://github.com/paasup/dip-catalog/issues/19) | 카탈로그 CVE 트리아지 기준선 | 게이트 강제 전환의 선행 조건 |
| [#7](https://github.com/paasup/dip-catalog/issues/7) | CVE 조치 파이프라인 (상위 추적 이슈) | 게이트 강제력 전환 결정이 여기 있다 |
| [#3](https://github.com/paasup/dip-catalog/issues/3) · [#9](https://github.com/paasup/dip-catalog/issues/9) | SBOM 파이프라인 도입 · postgresql-ha 대체 | 본문상 완결로 보인다 — **닫을지 확인 필요** |
## 진행 중
없다. 열린 PR 0건.
## 아직 이슈로 만들지 않은 것
- **`argo-cd/7.8.11` 삭제 여부** — 카탈로그 차단 CVE 239건이 전부 이 동결 버전 몫이고,
지우면 게이트가 PASS 로 떨어진다. 직전 버전을 없애는 결정이라 PR #28 에서 보류했다.
- **자체 빌드 이미지 레포 분리는 완료됐다** — 프레임워크·이미지 정의·ADR 이
`hardened-containers` 레포로 나갔다. 카탈로그 쪽은 `catalog/image-map/`(어느 차트를
가리키는지) + `apply-published-tags.py`(발행 태그 반영)만 남았다. CVE 드리프트
스캔·재빌드 트리거는 별도로 두지 않는다 — `sbom.yml`이 자체 빌드 이미지도 함께 스캔·보고하고,
재빌드는 `hardened-containers``rescan.yml`이 자율 수행한다(ADR
[0005](doc/decisions/0005-self-build-drift-check-removed.md)). 배경·결합점 전체는
[doc/migrations/](doc/migrations/self-build-images-to-hardened-containers.md).
- **카탈로그 태그가 클러스터보다 앞서 있고 재검증 경로가 없다** — 게이트 PASS 만으로
`patch-catalog-tag.py`(이제 `catalog-tag-update.yml` 을 통해)가 태그를 올린다. 실측:
클러스터에 배포된 태그가 카탈로그가 가리키는 태그보다 뒤처진 사례가 있었다. 소스 안
바뀐 재빌드라 위험은 낮지만 **게이트 PASS 는 동작을 증명하지 않는다**
(argocd `cp --update=none` 사례). `published.json``digest` 필드가 이 재검증의
실마리다(태그가 아니라 digest 로 "실제로 검증된 것과 카탈로그가 가리키는 것"을
대조할 수 있다) — 아직 그 대조를 실제로 하는 자동화는 없다.
[#32](https://github.com/paasup/dip-catalog/issues/32) 코멘트에 실측을 남겼다.
- **워크플로 결함 3건** — `cve-edge-post.yml` 이 게이트를 안 부른다(판정기 두 벌) ·
인증 스텝이 `sbom.yml` 과 diff 0 으로 복붙 · `scripts/pipeline/Dockerfile` 을 빌드하는
워크플로가 없다(손으로 push).
- **`doc/define-chart-resources.md` 에 cloudnative-pg·cnpg-cluster·etcd 전용 절이 없다** —
리소스 프로파일 자체는 각 차트의 `dip-resources-quotas.yaml` 에 있으므로 누락은 아니다.
이 문서만 보는 사람이 세 차트를 못 찾는 것뿐이라 급하지 않다.
## 알아둘 현재 상태
- **게이트는 warn-only 다.** `sbom.yml``cve-gate.py --warn-only` 로 실행해 실패해도
워크플로·PR 을 막지 않는다. 강제 전환은 #19#7 순으로 간다.
- **CI 는 PR 을 자동 생성할 수 없다.** 조직 정책상 `GITHUB_TOKEN` 으로 PR 을 못 연다
(실측 확정). 워크플로는 브랜치 push + Job Summary 의 compare 링크까지만 자동화한다.