Docker Hardened Image (DHI)와 .NET 프로덕션 이미지 빌드 인프라 제공

Docker에서 보안성과 공급망 투명성을 극대화한 **Hardened Images(DHI)**를 오픈 소스로 공개했습니다. .NET용 이미지도 포함되어 있어, 기존 Ubuntu Chiselled 이미지와 비교하고 적용 방법을 살펴보겠습니다.

자세한 발표 전문은 https://www.docker.com/blog/docker-hardened-images-for-every-developer/ 를 참고해주세요!

DHI와 Ubuntu Chiselled의 차이

  • Ubuntu Chiselled: Ubuntu 환경을 깎아내어(Chisel) 크기를 줄인 ‘경량화’ 중심 이미지입니다.

  • Docker Hardened (DHI): Alpine, Debian 등 다양한 OS를 지원하며, "이 이미지가 안전하게 빌드되었는가"를 증명하는 **‘공급망 보안 표준’**에 집중합니다.

DHI를 써야 하는 3가지 이유

  • 공격 표면 최소화: 쉘(Shell), 패키지 관리자, 유틸리티가 모두 제거되어 해킹 도구로 활용될 여지를 원천 차단합니다.

  • 보안 인증 기본 포함: 소프트웨어 자재 명세서(SBOM)와 빌드 무결성 인증(SLSA Level 3)이 포함되어 기업용 보안 규정을 즉시 충족합니다.

  • 안전한 기본 설정: Docker가 직접 취약점(CVE)을 상시 패치하며, 기본적으로 **Rootless(비루트 권한)**로 실행되어 관리가 편리합니다.

.NET 프로젝트 적용 방법

기존 멀티 스테이지 빌드 구조는 유지하되, 실행(Runtime) 이미지의 주소만 dhi.io로 변경하면 됩니다.

# 1. 빌드: 기존 SDK 이미지 사용
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
...

# 2. 실행: 보안 강화된 DHI 이미지로 교체
FROM dhi.io/dotnet/runtime:10.0
WORKDIR /app
COPY --from=build /app/out .
USER 65532
ENTRYPOINT ["dotnet", "YourApp.dll"]

정리

Ubuntu Chiselled가 .NET의 크기를 줄여주었다면, DHI는 .NET 서비스의 보안 신뢰도를 증명해 줍니다. 이는 거버넌스 차원의 보증이므로 도입을 검토해보실 만한 충분한 가치가 있는 내용일 것입니다.

알아둘 점

추가로 보안이 중요한 금융, 엔터프라이즈 환경의 .NET 개발자라면 FIPS (미국 정부의 연방 정보 처리 표준) 140-2 또는 140-3 인증이 통과된 버전의 이미지를 사용하는 것이 권장됩니다.

https://hub.docker.com/hardened-images/catalog/dhi/dotnet 에서 DHI 환경에서 사용 가능한 전체 이미지를 보실 수 있습니다.

4개의 좋아요

도커 허브는 비로그인시 동일 아이피에서 6시간 100회 pull 제약이 있어서.. CI 만들때는 AWS ECR 퍼블릭을 사용하게 되더군요 :sob:

1개의 좋아요