쿠버네티스 클러스터에서 보안이 필요한 부분과 그 방법에 대해 정리한다.
호스트
쿠버네티스 클러스터를 형성한 호스트에 대한 접근은 보호되어 있어야 한다.
비밀번호 인증 접근은 제한되어야 하며, SSH 키 인증 접근만이 허용되어야 한다.
kube-apiserver
kube-apiserver는 쿠버네티스 내 모든 작업의 중심으로, 사용자는 kubectl를 이용하거나 apiserver에 직접 접근하여 클러스터와 상호작용할 수 있다. 클러스터에서 거의 모든 작업을 kube-apiserver를 통해 수행할 수 있으므로 apiserver 자체에 대하 접근 제어가 필수적이다.
고려사항
- 누가 클러스터에 접근할 수 있는가
ID/PASSWD, Token, 인증서, 외부 인증 공급자(LDAP), Service Accounts 등 인증(Authorization) 메커니즘에 의해 결정된다. - 클러스터에 접근해 무엇을 할 수 있는가
ID/PASSWD 저장 파일, Token 저장 파일, 인증서, 외부 인증 공급자(LDAP), Service Accounts 등 권한 부여(Authentication) 메커니즘에 의해 결정된다.
클러스터 내 구성 요소
ETCD 클러스터, Kube 컨트롤러 관리자, 스케줄러, API 서버와 같은 구성 요소와 클러스터 간 모든 통신은 TLS 암호화를 사용하여 보호되어야 한다.
포드 간 통신
기본적으로 임의의 포드는 클러스터 내의 모든 포드와 통신할 수 있다. 필요한 통신만을 허용하기 위해서는 network policy에 의한 제한이 필요하다.