apisix 카탈로그 CVE 게이트 완전 해소 (차단 165건 → 0건)
etcd(bitnamilegacy 동결 미러) → etcd.enabled=false + 카탈로그 자체 etcd 차트를 externalEtcd 기본값으로 연결. adc·apisix-ingress-controller·apisix(paasup/apisix) 세 이미지는 SUSE BCI 자체 빌드로 교체 — 전부 벤더 등급만으로는 안 보이던 벤더 하향 등급 CVE(NVD 재평가 시 드러남)가 원인이었다. - images/apisix-ingress-controller: 정적 링크 Go 모듈 취약 버전만 강제 업그레이드 - images/apisix: APISIX-Runtime(WASM·dubbo 등 커스텀 모듈 포함) 전체를 SUSE BCI 위에서 소스로 재현, keycloak-authz 플러그인 오버레이 - images/adc: 업스트림 빌더 스테이지는 그대로 두고 distroless 최종 베이스만 SUSE BCI+nodejs24 로 교체 scripts/build/patch-catalog-tag.py 의 TAG_BLOCK 이 점 구분 중첩 경로를 지원하도록 확장(apisix 서브차트 alias 때문에 필요). 세 이미지 모두 게이트 PASS(실효 CRITICAL/HIGH 0/0)와 배포 검증(테스트 클러스터)을 마쳤다. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Executable
+42
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
# adc 이미지 기능 검증 — 호스트에서 bash 로 실행된다(build-hardened-image.sh 가
|
||||
# `env TAG=... PLATFORM=... SOURCE_COMMIT=... bash verify.sh` 형태로 호출한다).
|
||||
#
|
||||
# 최종 베이스가 bci-base 라 bash/coreutils 가 있다 — 게스트 셸을 그대로 쓴다. adc 는
|
||||
# APISIX/API7 백엔드에 실제로 접속해야 하는 명령(dump/diff/sync)이 대부분이라 그건 이
|
||||
# 스모크 범위 밖이다(백엔드 연동은 dev 클러스터 배포 검증이 담당,
|
||||
# .claude/deploy-test-procedure.md). 여기서는 백엔드 없이 확인 가능한 것만 본다:
|
||||
# 바이너리 실행 가능 여부, 버전 문자열, --help 커맨드 목록, non-root 실행.
|
||||
#
|
||||
# 마지막 줄에 VERIFY-OK 를 출력하면 통과다. build-hardened-image.sh 가 그것으로 판정한다.
|
||||
set -e
|
||||
|
||||
TAG="${TAG:?TAG 환경변수가 필요하다}"
|
||||
PLATFORM="${PLATFORM:-linux/amd64}"
|
||||
|
||||
echo "== 실행 사용자 (nonroot) =="
|
||||
USER_CFG="$(docker inspect --format '{{.Config.User}}' "$TAG")"
|
||||
[ "$USER_CFG" = "adc" ] || { echo "FAIL: 이미지 Config.User 가 adc 가 아니다 (실제: $USER_CFG)"; exit 1; }
|
||||
echo " Config.User=$USER_CFG"
|
||||
|
||||
docker run --rm -i --platform "$PLATFORM" --entrypoint sh "$TAG" <<'GUEST'
|
||||
set -e
|
||||
|
||||
echo "== 버전 =="
|
||||
OUT="$(/usr/bin/node /adc/main.cjs --version)"
|
||||
echo " $OUT"
|
||||
case "$OUT" in
|
||||
*0.29.0*) ;;
|
||||
*) echo "FAIL: 버전 출력에 0.29.0 이 없다"; exit 1 ;;
|
||||
esac
|
||||
|
||||
echo "== --help 스모크 (백엔드 없이 도는 유일한 확인 범위) =="
|
||||
OUT="$(/usr/bin/node /adc/main.cjs --help)"
|
||||
case "$OUT" in
|
||||
*"dump"*"diff"*"sync"*) ;;
|
||||
*) echo "FAIL: --help 출력에 예상 커맨드(dump/diff/sync)가 없다"; exit 1 ;;
|
||||
esac
|
||||
echo " dump/diff/sync 커맨드 확인됨"
|
||||
|
||||
echo "VERIFY-OK"
|
||||
GUEST
|
||||
Reference in New Issue
Block a user