[Supply Chain Security] Image Security

IMKUNYOUNG·2024년 6월 27일
0

CKS

목록 보기
60/70

이번 글에선 이미지 보호의 중요성과 private 레지스트리를 통한 안전한 이미지 관리에 대해 알아보겠습니다. 이미지 보호는 모든 애플리케이션 배포에서 핵심적인 부분이며, Docker와 Kubernetes 환경에서 어떻게 이를 구현할 수 있는지 살펴볼 것입니다.

Docker 이미지의 명명 규칙

Docker 이미지는 이름을 통해 여러가지 정보를 제공합니다. 예를 들어, nginx라는 이름은 library/nginx를 의미합니다. 여기서 library는 Docker의 공식 이미지가 저장된 기본 계정 이름을 나타냅니다. 개인이나 회사의 경우, 자신의 이름이나 회사 이름으로 이미지를 명명할 수 있습니다.

이미지 저장소와 레지스트리

모든 Docker 이미지는 레지스트리에 저장됩니다. 가장 일반적으로 사용되는 것은 Docker Hub이며, 기본 DNS 이름은 docker.io입니다. 이 외에도 Google의 레지스트리인 gcr.io와 같은 다른 공개 레지스트리도 있습니다. 개인이나 기업 내부에서는 보안상의 이유로 private 레지스트리를 사용할 수 있습니다.

private 레지스트리의 필요성

내부 애플리케이션을 외부에 공개하면 안 되는 경우, private 레지스트리를 사용하는 것이 이상적입니다. AWS, Azure, GCP와 같은 클라우드 제공 업체는 기본적으로 사설 레지스트리를 제공하며, Docker Hub나 공개 레지스트리와는 달리 접근 제어와 보안을 강화할 수 있습니다.

Kubernetes에서의 private 레지스트리 사용

쿠버네티스 환경에서 사설 레지스트리를 사용하려면, 먼저 해당 레지스트리에 접근할 수 있는 자격 증명이 필요합니다. 이를 위해 Kubernetes는 시크릿 객체를 사용합니다. Docker 레지스트리 시크릿은 레지스트리 서버 이름, 사용자 이름, 비밀번호, 이메일 주소를 포함합니다. 이 시크릿을 통해 쿠버네티스 파드는 사설 레지스트리에서 이미지를 안전하게 가져올 수 있습니다.

시크릿 생성 및 사용

시크릿을 생성할 때는 다음과 같은 절차를 따릅니다:

  1. 자격 증명을 포함한 Docker 레지스트리 시크릿 객체 생성.
  2. 파드 정의 파일의 이미지 풀 시크릿 섹션에 시크릿 지정.

시크릿을 이용하여 쿠버네티스는 레지스트리에서 이미지를 가져오는 동안 필요한 인증 정보를 제공받습니다.

마치며

이미지 보호와 private 레지스트리 사용은 모든 애플리케이션 배포에서 중요한 요소입니다. Docker와 Kubernetes를 이용하여 안전하게 이미지를 관리하고 배포할 수 있도록 private 레지스트리를 효과적으로 활용하는 방법에 대해 살펴보았습니다. 보다 안전하고 효율적인 개발 및 운영 환경을 구축하는 데 도움이 되기를 바랍니다.

0개의 댓글