← 블로그 목록
68 서버·보안

컨테이너 이미지를 배포 전에 멈춰 세우는 릴리스 보안 게이트

컨테이너 취약점 스캔 결과를 그대로 믿지 않고 이미지 출처, 빌드 재현성, 심각도 예외, 서명과 배포 정책을 연결해 릴리스 판단을 만드는 방법입니다.

컨테이너 이미지를 배포 전에 멈춰 세우는 릴리스 보안 게이트 대표 이미지

컨테이너 릴리스 게이트의 핵심은 ‘취약점이 0개인가’가 아니라, 어떤 이미지가 어떤 소스와 빌드에서 나왔고 배포해도 되는지 판단할 근거를 남기는 것입니다. 이미지 digest를 고정하고 스캔·SBOM·서명 결과를 같은 릴리스 기록에 묶으면 latest 태그나 임의의 예외 때문에 검증이 무너지는 일을 줄일 수 있습니다.

NIST SP 800-190은 컨테이너 이미지와 레지스트리, 오케스트레이터의 위험을 구분하고 SP 800-204D는 클라우드 네이티브 애플리케이션의 배포·운영 고려사항을 보완합니다. 이미지 출처와 최소 권한 같은 컨테이너 통제는 NIST의 컨테이너 보안 지침에서 확인합니다. CISA의 공급망 지침은 컨테이너 전용 통제가 아니라 공급자가 소프트웨어를 안전하게 전달하고 무결성을 유지하도록 요구하는 관점에서 릴리스 기록을 보완합니다.NIST SP 800-190CISA 공급망 보안 지침

소스 커밋에서 이미지 빌드, 스캔, SBOM, 서명, 배포 승인으로 이어지는 릴리스 게이트

릴리스 승인 대상은 이동하는 태그가 아니라 검증된 이미지 digest입니다.

게이트 입력을 digest 중심으로 고정합니다

태그는 이동할 수 있으므로 승인 대상은 registry/repository@sha256:digest 형식으로 기록합니다. 빌드 소스 커밋, 베이스 이미지 digest, 빌드 도구 버전, SBOM 위치, 스캔 시각, 서명 검증 결과를 함께 남깁니다. 심각도 기준은 조직의 노출 경로와 완화책을 포함해 정하고, 예외는 만료일과 책임자를 가져야 합니다.

  • Critical 또는 High 발견 항목은 실행 경로와 도달 가능성을 검토합니다.

  • 수정 불가 예외에는 대체 통제, 만료일, 승인자를 적습니다.

  • 서명과 digest가 배포 매니페스트의 이미지와 같은지 다시 확인합니다.

샘플: 운영 배포 직전 High 취약점 발견

샘플 입력은 결제 API 이미지에서 High 취약점 하나가 발견됐고, 해당 라이브러리가 런타임 경로에 포함된 경우입니다. 결정은 수정된 베이스 이미지로 재빌드하고 새 digest를 발급할 때까지 배포를 보류하는 것입니다. 중간 산출물은 커밋, 이미지 digest, SBOM, 스캔 결과, 서명 검증을 묶은 릴리스 레코드입니다. 예상 결과는 승인된 digest만 배포되고 이전 이미지가 매니페스트에 남지 않는 것입니다.

컨테이너 릴리스 레코드에 커밋, digest, SBOM, 취약점, 예외 만료를 기록하는 샘플

실패하면 배포를 멈추고 증거를 보존합니다

실패 사례는 스캔 결과를 통과시키려고 태그를 바꾸거나 예외를 영구화하는 것입니다. 그러면 실제 배포 이미지와 검사 이미지가 달라집니다. 복구는 승인 파이프라인을 중지하고 사용된 digest와 로그를 보존한 뒤, 취약점 수정 재빌드 또는 문서화된 대체 통제로 다시 게이트를 통과하는 순서입니다. 레지스트리 조회가 불가능하면 새 이미지를 배포하지 말고 마지막 검증된 digest로 롤백합니다.

검증 완료를 배포 시스템에서 확인합니다

  1. 배포 매니페스트의 digest와 릴리스 레코드의 digest가 일치하는지 확인합니다.

  2. 서명·SBOM·스캔 결과와 예외 만료일을 링크로 재현합니다.

  3. 게이트 실패 시 보류 또는 검증된 이전 digest 롤백이 실제로 가능한지 확인합니다.

완료 조건은 파이프라인 초록이 초록색인 때가 아니라, 실행 중인 배포가 승인된 digest이고 관련 SBOM·서명·스캔·예외 기록을 다른 운영자가 재현해 확인한 때입니다.