이미지 출처(Provenance)
이미지 출처(Provenance)
이미지의 기원, 저자, 무결성을 추적하는 메타데이터인 이미지 provenance 개념과, Docker Hardened Images(DHI)가 이를 어떻게 지원하는지 살펴봐요.
출처: 문서
본문
이미지 출처(Provenance)란 무엇인가요?
이미지 출처(Provenance)는 컨테이너 이미지의 기원, 저자, 무결성을 추적하는 메타데이터를 말해요. 다음과 같은 핵심 질문에 답을 주죠.
- 이 이미지는 어디에서 왔나요?
- 누가 만들었나요?
- 변조된 적이 있나요?
Provenance는 감사 체인(chain of custody)을 확립해서, 사용 중인 이미지가 신뢰할 수 있고 검증 가능한 빌드 프로세스의 결과물임을 확인하도록 도와줘요.
이미지 출처가 왜 중요한가요?
Provenance는 소프트웨어 공급망을 보호하는 데 기초가 돼요. 이것이 없으면 다음과 같은 위험이 생겨요.
- 검증되지 않았거나 악성인 이미지를 실행하게 됨
- 내부 또는 규제 컴플라이언스 요구사항을 충족하지 못함
- 컨테이너를 만드는 구성 요소와 워크플로에 대한 가시성을 잃게 됨
반대로 신뢰할 수 있는 provenance가 있으면 다음과 같은 이점을 얻어요.
- 신뢰(Trust): 이미지가 정품이고 변경되지 않았음을 알 수 있어요.
- 추적성(Traceability): 전체 빌드 프로세스와 소스 입력을 이해할 수 있어요.
- 감사성(Auditability): 컴플라이언스와 빌드 무결성에 대한 검증 가능한 증거를 제공해요.
또한 Provenance는 자동화된 정책 적용을 지원하며, SLSA(Supply-chain Levels for Software Artifacts) 같은 프레임워크의 핵심 요구사항이에요.
Docker Hardened Images가 provenance를 어떻게 지원하나요?
Docker Hardened Images(DHI)는 기본 제공되는 provenance를 갖도록 설계되어, 보안 기본값(secure-by-default) 방식과 공급망 보안 표준을 충족하도록 도와줘요.
증명(Attestations)
DHI에는 증명(attestations), 즉 이미지가 어떻게, 언제, 어디서 빌드되었는지를 설명하는 기계가 읽을 수 있는 메타데이터가 포함돼요. 이는 in-toto 같은 업계 표준으로 생성되며 SLSA provenance 규격에 부합해요. 증명을 통해 다음을 할 수 있어요.
- 빌드가 예상된 단계를 따랐는지 검증
- 입력과 환경이 정책을 충족하는지 확인
- 시스템과 단계를 가로질러 빌드 프로세스를 추적
코드 서명(Code signing)
각 Docker Hardened Image는 암호화 방식으로 서명되어 digest와 함께 레지스트리에 저장돼요. 이 서명은 정품임을 검증할 수 있는 증거이며, cosign, Docker Scout, Kubernetes admission controller 같은 도구와 호환돼요. 이미지 서명을 통해 다음을 할 수 있어요.
- 이미지가 Docker에 의해 게시되었는지 확인
- 이미지가 수정·재게시되었는지 감지
- CI/CD 또는 프로덕션 배포에서 서명 검증을 강제