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 환경에서 사용 가능한 전체 이미지를 보실 수 있습니다.
