[CKS] Docker Securing the Daemon

Docker 데몬의 외부 노출 시 TLS 및 mTLS 암호화 통신을 통해 보안을 강화하고, 클라이언트 인증서로 상호 인증을 구현하여 Kubernetes 보안을 확보하는 방법입니다.

개요

CKS 시험 만료가 얼마 남지않아 다시 시작하고 있습니다.

Certified Kubernetes Security Specialist (CKS) | KodeKloud

보안 설정 없는 Docker Daemon

기본적으로 Docker는 Docker API를 Unix 소켓에 바인딩합니다. 이로써 외부 접근을 차단하고 호스트에 로그인한 사용자만 접근할 수 있게 제한합니다. 하지만 외부에서 접근해야한다면 추가적인 보안 조치가 필요합니다.

만약 보안조치 없이 외부 악의적인 사용자가 접근한다면 원격지의 컴퓨터를 탈취 당한 것과 유사합니다.

따라서 Docker 데몬의 외부 연결을 허용하려면 추가적인 보안 조치를 구현하는 것이 중요합니다.

Docker 호스트 보안 설정

표준 서버 보안 강화 절차는 다음과 같습니다.

해당 구성을 어떻게 설정할 수 있을지 정리했습니다.

Docker 데몬을 외부로 노출하기

Docker 데몬을 외부에 노출하기 위한 TLS 암호화 통신 구성입니다.

서버는 CA(인증기관)을 설정하고 server.pem , serverkey.pem , cacert.pem 을 생성해야합니다.

설정하면 TLS 기반의 암호화 통신을 수행할 수 있습니다. 하지만 통신의 암호화를 보장할 뿐, 클라이언트의 인증이 없으므로 누구나 접근하여 악의적인 코드를 수행할 수 있게 됩니다.

{
  "hosts": ["tcp://192.168.1.10:2376"],
  "tls": true,
  "tlscert": "/var/docker/server.pem",
  "tlskey": "/var/docker/serverkey.pem",
  "tlsverify": true,
  "tlscacert": "/var/docker/cacert.pem"
}

따라서 mTLS 통신을 위해 tlsverify를 활성화하고, 클라이언트에게 세 가지 파일을 제공해야 합니다.(mTLS)

<mTLS(참고)>