Files
service-catalog/images/adc/verify.sh
T
wbsong111 18044210f6 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>
2026-08-12 11:37:32 +09:00

43 lines
1.7 KiB
Bash
Executable File

#!/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