[정보보안] 쿠버네티스 보안 강화 가이드(Kubernetes Hardening Guidance)
미국 NSA(국가안보국)와 CISA(사이버보안 및 인프라 보안국)가 작성한 ‘Kubernetes Hardening Guidance‘는 요약했습니다. 이 가이드는 쿠버네티스에서 흔히 발생하는 세 가지 주요 위협(공급망 위험, 악성 행위자, 내부자 위협)을 설명하고, 이러한 위험을 완화하기 위한 다양한 보안 조치를 제시합니다.
- 파드 보안 (Kubernetes Pod Security)
- 컨테이너를 ‘non-root’ 사용자로 실행하고, 가능한 경우 파일 시스템을 변경 불가능(immutable)하도록 설정해야 합니다.
- 배포 전에 컨테이너 이미지의 취약점 및 잘못된 구성을 스캔해야 합니다.
- privileged 컨테이너 실행을 방지하고, 호스트 파일 시스템 접근(HostPath)과 같은 위험한 기능을 허용하지 않도록 보안 정책을 적용해야 합니다.
- SELinux나 AppArmor와 같은 보안 서비스를 사용하여 애플리케이션을 강화해야 합니다.
- 네트워크 분리 및 강화 (Network Separation and Hardening)
- 방화벽과 RBAC(Role-Based Access Control)를 사용하여 컨트롤 플레인에 대한 접근을 제한해야 합니다.
- 컨트롤 플레인 컴포넌트와 노드를 별도의 네트워크로 분리하고, etcd 서버에 대한 접근을 더욱 제한해야 합니다.
- 민감한 정보를 쿠버네티스 Secret에 암호화하여 저장하고, TLS 인증서를 사용하여 통신을 암호화해야 합니다.
- 인증 및 권한 부여 (Authentication and Authorization)
- 기본적으로 활성화되어 있는 익명 로그인을 비활성화해야 합니다.
- 강력한 사용자 인증을 사용하고, 최소 권한의 원칙에 따라 사용자, 관리자, 개발자 등 그룹별로 고유한 RBAC 정책을 만들어야 합니다.
- 감사 로깅 및 위협 탐지 (Audit Logging and Threat Detection)
- 감사 로깅을 활성화하고, 로그를 노드 또는 컨테이너 실패에 대비하여 영구적으로 보존해야 합니다.
- 클러스터 외부의 중앙화된 시스템으로 로그를 집계하여 실시간 모니터링 및 위협 탐지를 수행해야 합니다.
- 업그레이드 및 애플리케이션 보안 관행 (Upgrading and Application Security Practices)
- 보안 패치와 업데이트를 즉시 적용해야 합니다.
- 정기적인 취약점 스캔 및 침투 테스트를 수행해야 합니다.
- 사용하지 않는 컴포넌트는 환경에서 제거 및 삭제해야 합니다.
Kubernetes 클러스터의 취약점을 점검하고 보안을 강화하는 데 사용할 수 있는 여러 가지 툴이 있습니다. Kubescape, Polaris와 Kube-bench는 배포된 클러스터 자체의 보안 설정을 점검(misconfiguration)하는 데 특화되어 있고, Trivy와 Checkov는 컨테이너 이미지나 IaC 코드와 같이 배포 전 단계에서 취약점을 점검하여 보안을 강화하는 데 주로 사용됩니다.