구글 쿠버네티스 엔진(GKE, Google Kubernetes Engine)을 사용하고 계시나요? 워크로드 특성에 맞게 컨테이너 이미지를 생성해 배포하고 있다면 잘 알 것입니다. 이미지 관련해 패치 등 유지보수 작업이 은근히 피곤하다는 것을요. 구글은 이런 작은 불편 하나 놓치지 않습니다. 구글은 매니지드 기반 이미지를 제공하는데요, 이를 사용하면 패치는 구글에 맡기면 됩니다.
현재 구글이 제공하는 매니지드 이미지는 세 가지 운영체제를 지원합니다. 이들 운영체제 기반의 이미지는 패치가 자동으로 이루어집니다. 관리자가 유지보수를 일일이 챙기지 않아도 됩니다.
– CentOS 7
– Debian 9 Stretch
– Ubuntu 16.04
신뢰할 수 있는 소스를 통해 컨테이너 이미지를 늘 최신의 상태로 유지하는 것은 쉽지 않습니다. 패치 작업이란 것이 그냥 반영하면 그만이 아니죠. 프로덕선 환경에 적용하려면 사전에 충분히 테스트를 거쳐야 합니다. 컨테이너는 여러 바이너리와 라이브러리가 한데 묶여 있다 보니 어느 한 요소를 대상으로 업데이트가 필요할 경우 이미지를 다시 빌드해서 배포하는 것이 마음이 더 편합니다. 구글이 제공하는 매니지드 기반 이미지는 패치 관련 사전 테스트까지 구글이 맡아 합니다. 패치가 자동으로 이루어지는 배경에는 신뢰할 수 있는 소스에서 최신 패치를 가져와 사전 테스트를 한 다음 적용이 되는 일련의 과정이 있습니다.
매니지드 기반 이미지는 구글 클라우드 플랫폼 마켓플레이스에서 가져와 사용할 수 있습니다.
매니지드 기반 이미지보다 보안이 더 강화된 것도 있습니다. Distroless Image가 바로 그것인데요, 이 이미지는 보안 취약점 노출을 최소화한 버전이라고 보면 됩니다. 이 이미지에 포함된 리눅스 배포본은 패키지 관리자, 쉘 등이 빠져 있습니다. 취약점 스캔을 통해 컨테이너 상의 운영체제의 보안 허점을 파고 들어갈 경우의 수를 줄이기 위한 특별한 패키징이라 보면 됩니다. 운영체제 전체 기능이 다 필요하다면 매니지드 기반 이미지를 쓰면 됩니다.
매니지드 기반 이미지를 더 안전하게 사용하기 위한 팁도 하나 알려드리겠습니다. 매니지드 기반 이미지도 구글이 제공하는 컨테이너 레지스트리 취약점 스캐닝 기능을 이용해 보안 점검을 할 수 있습니다.
한편 CI/CD를 개발과 운영 프로세스에 적용하였을 경우 구글이 제시하는 이미지 유효성 검사에 대한 베스트 프랙티스 모델을 따르면 더 안전하게 DevOps 환경에 구글의 매니지드 기반 이미지를 적용할 수 있습니다. 이 경우 앞서 소개한 취약점 스캐닝 기능과 배포 관련 정책을 통해 유효성을 검증합니다.