CKS 를 따는 이유
8월/9월 중으로 CKS 자격증을 취득하는 것을 목표로 하고 있다. 현재 CKA(Certified Kubernetes Administrator) 자격증은 보유하고 있지만, CKA를 준비하면서 보안과 네트워크 관련 지식이 부족하다고 느꼈다. 현업에서 관리형 쿠버네티스 서비스(EKS, GKE, AKS 등등.. 쿠버모니터링 개발팀에 있었기 때문...하하) 를 많이 다뤄봤지만, On-Premise 환경의 쿠버네티스 실무 경험과 배경 지식이 매우 부족한 상태입니다. 특히, Control Plane 관련 공부가 시급하다고 느껴 CKS를 취득하는 동시에 보안과 네트워크를 함께 공부하려고 한다. 준비 순서는 이론 -> 실습 -> 실제 기출 문제 풀이 순으로 진행하려고 한다. 강의는 아래 유튜브 영상을 참고하려고 한다.
CKS 자격증이란 ?
CKS(Certified Kubernetes Security Specialist) 자격증은 Kubernetes 환경에서 보안 관행을 적용하고 유지 관리하는 데 필요한 지식을 검증하는 인증시험이다. CKS는 Kubernetes 클러스터의 보안 설정, 강화, 모니터링, 취약점 최소화, 공급망 보안 등을 다루는 전문가를 대상으로 하고 있다. CKS 자격증 시험의 문제 구성은 다음과 같다.
- Cluster Setup - 10%
- Cluster Hardening - 15%
- System Hardening - 15%
- Minimize Microservice Vulnerabilities - 20%
- Supply Chain Security - 20%
- Monitoring, Logging and Runtime Security - 20%
쿠버네티스 환경에서의 보안은 매우 중요한 주제이다. 다양한 요소들이 결합된 복잡한 시스템이기 때문에, 보안을 철저하게 신경 써야 한다. 쿠버네티스에서 보안을 효과적으로 유지하기 위해 알아야 할 주요 원칙들에 대해 알아보자.
Security Principle (쿠버네티스의 보안 원칙)
쿠버네티스에서의 보안은 복잡하며, 다양한 요소들을 결합해야 한다. 우리가 해야 하는 일은 단순히 한 가지에 그치는 것이 아니다. 보안은 특정 상태에 머물 수 없고, 지속적으로 적응해야 하며 업데이트 해야한다. 공격자는 언제든지 공격할 시기와 대상을 선택할 수 있기 때문에, 일반적으로 이점을 가지고 있다.
- Defense in Depth
- Least Privilege
- Limiting the Attack Surface
K8s Security Categories (쿠버네티스의 보안 종류)
관리형 쿠버네티스 서비스(EKS, GKE, AKS)를 사용하는 경우 일정 수준의 보안을 유지할 수 있지만, 우리가 직접 관리해야 하는 쿠버네티스 클러스터의 경우 아래 3가지 범주의 보안이 중요합니다.
- Host Operating System Security (Linux)
- Kubernetes Cluster Security (Kubernetes)
- Application Security (Docker)
Host OS Security
- 쿠버네티스 노드는 단일 작업을 수행해야 한다.
- 공격을 줄이기 위해 불필요한 Application을 제거하고 모든 소프트웨어를 최신 상태로 유지한다.
- Runtime 보안 도구를 고려한다.
- 악의적인 공격과 위험 요소를 식별하고 프로세스를 제한한다.
- SSH와 IAM 접근 제한을 설정한다.
Kubernetes Cluster Security
- 다양한 구성 요소(API-SERVER, Kubelet, ETCD 등)가 안전하게 실행되어야 합니다.
- ETCD는 파일 시스템에 암호화되어 저장되어야 하며, 이는 지속적으로 유지되어야 한다. ETCD에 접근할 수 있는 권한을 제한하고, 워커 노드와 통신할 수 있는 Port를 최소화해야 한다.
- Control Plane 구성 요소의 외부 접근을 제한해야 힌다.
- 인증을 활성화한다.
- Admission Controllers를 사용하여 API-SERVER로 들어오는 모든 요청이 인증되도록 해야 한다.
- Node 제한
- Custom Policies(OPA)
- 로깅을 활성화 한다.
Application Security
- Secret을 사용할 때는 하드코딩된 자격 증명을 사용하면 안된다..
- Docker 컨테이너 내부에서는 Port 선언 역할 접근을 제한하는 RBAC(역할 기반 접근 제어)를 사용해야 합니다.
- 컨테이너 샌드박싱과 시스템 경화를 통해 공격을 최소화해야 합니다.
- 컨테이너는 사용자 권한으로 실행하고, 파일 시스템은 읽기전용(ReadOnly)으로 설정해야 한다.
- 취약점 Scanning을 수행해야 한다.
- mTLS 및 ServiceMesh를 사용해야 한다.
이러한 보안 원칙과 카테고리는 쿠버네티스 환경에서 보안을 유지하고 강화하는 데 필수적이다. 지속적인 학습과 실습을 통해 이러한 원칙들을 잘 이해하고 적용하는 것이 중요하다. 다음은 Google Cloud Platform을 사용하여 쿠버네티스 클러스터를 셋팅하는 방법에 대해 알아보겠다.
[학습 영상]
'DevOps > k8s' 카테고리의 다른 글
[CKS] Kubernetes에서의 Public Key Infrastructure 구조 (PKI) 이해하기 (0) | 2024.06.26 |
---|---|
[CKS] Google Cloud로 Master Node와 Worker Node 구성하는 방법 (0) | 2024.06.25 |
[K8s] 쿠버네티스에서의 헬스체크 LivenessProbe, ReadnessProbe (2) | 2024.06.18 |
[K8s] AWS Karpenter를 통해 EKS 클러스터 효율적으로 관리하기 2편_워크로드 배포 (2) | 2024.06.14 |
[K8s] AWS Karpenter를 통해 EKS 클러스터 효율적으로 관리하기 1편_기본 구성 (2) | 2024.06.14 |