안전한 쿠버네티스 운영을 위한 보안 Best Practice 소개
개요
쿠버네티스는 클라우드 네이티브 애플리케이션을 배포하고 관리하는 데 있어 매우 강력한 도구이지만, 동시에 보안 취약점이 발생하기 쉬운 환경이기도 합니다.
이 세션에서는 컨테이너 이미지 생성부터 배포, 운영까지 모든 단계에서 보안 취약점을 최소화하고, 안전한 쿠버네티스 운영 방법을 소개합니다.
세션은 클러스터 보안, 컨테이너 보안, 네트워크 및 서비스 보안, 로그 및 모니터링의 네 가지 파트로 나뉘어 진행됩니다.
클러스터 보안 파트에서는 클러스터 구성 및 네트워크 정책 설정을 통해 내부 및 외부의 공격을 방지하는 방법을 다룹니다.
컨테이너 보안 파트에서는 오픈소스 도구를 활용해 컨테이너 이미지와 쿠버네티스 클러스터의 보안 취약점을 점검하고, 안전한 이미지를 안전한 클러스터에 배포하는 방법을 소개합니다.
또한, 파드와 컨테이너의 보안 정책을 설정하고 적용하여 실행 중인 애플리케이션의 안전성을 강화하는 방법도 설명합니다.
마지막으로, 마이크로 세그멘테이션(Micro-Segmentation) 기법을 쿠버네티스에 적용해 애플리케이션 및 프로세스 단위에서 보안 이벤트를 모니터링하고 대응하는 방법을 실제 사례와 함께 공유합니다.
이 세션을 통해 참가자들은 쿠버네티스 환경에서 발생할 수 있는 다양한 보안 위협을 이해하고, 이에 효과적으로 대응할 수 있는 실질적인 방법을 습득하게 될 것입니다.
발표
보안의 3요소 cia
- 기밀성
- 정보 접근을 허가된 사람만
- rbac
- 무결성
- 허용되지 않은 변경 방지
- 가용성
- 필요한 정보에 언제든지
- 무력화 공격에 서비스 다운되는 거 생각해보면 보안에서 고려할 만한 사항
이를 쿠버에 적용한다면
- 기밀성
- rbac
- secret
- 이걸론 부족해서 vault를 흔히 쓴다.
- 네폴
- 무결성
- 이미지 무결성 검증
- 보안 컨텍스트
- 앱 무결성 모니터링
- 혹시 이상한 프로세스가 갑자기 돌지 않는지
- 가용성
- qos
- 리소스 제한
- 자동복구
- 중앙 집중 관측가능성
클러스터 보안
- 호스트 운영체제 보안
- 리눅스 호스트 머신 차원의 보안
- rbac
- 네폴
- 파드간 불필요한 통신 없애기
- etcd
- 적절한 암호화가됐는지
- api 서버
- TLS
- 데이터 전송 중의 보안
수상한 프로세스가 돌아가면, 일다 api 서버와kubelet을 건드려야 한다.
달리 말하자면 이놈들을 기준으로 조심해줘야 한다.
쿠버는 아직 보안에 있어서 완벽하지 않다.
그래서 이를 서드파티로 보완하는 게 중요하다.
컨테이너 보안
- 런타임 보안
- cri 보안
- 이미지 보안
- triviy같은 걸로 스캔 ㄱㄱ
- 서명 및 취약점 과닐
- cgroups, namespace 관리
- 서로 정말 격리가 잘 됐는지.
- 샌드박스에서 컨테이너 격리 실행
- 권한 제한
- root 사용제한, 최소 권한
- security context
- 서비스 어카운트 그냥 사용하거나 그런 건 조심해야 한다.
네트워크, 서비스 보안
- 트래픽 제어
- cni 플러그인
- 인그레스, 이그레스(네폴)
- 나가는 트래픽도 조심해야 한다.
- 결국 이것도 인그레스와 깊은 연관이 있다.
- 인그레스 컨트롤러
- dns 암호화 및 보안
- tls 인증서
- 서비스 메시 보안
- 네트워크 격리 및 필터링
- kube-proxy, iptables
- rate limiting, waf, ddos
로그 및 모니터링
보안 도구
- kube-bench보
- 보안 설정 관련 검사.
- 이거 진짜 최소로라도 해라
- gvisor
- 컨테이너와 호스트 격리 강화
- 컨테이너가 털려도 호스트 털리지 않게
- sysdig
- 실시간 보안 모니터링
- 이미지로도 제공
- trivy
- 이미지 취약점
- apparmor
- 원래 리눅스에서 사용
- ㅡㄴ데 cncf에 넣는 중프로세스 제어
컨테이너 보안
- root 사용자 피하기
- 최소 베이스 이미지
- 업데이트 관리
- 멀티스테이지
- 비밀 노출 금지
- copy, add 헷갈리지 말
쿠버 세그멘테이션
네트워크 보안 전략
네임스페이스 안에 뭐가 있는지