안녕하세요, Twodragon입니다.
지난 6주차에서는 AWS WAF/CloudFront 보안 아키텍처와 GitHub DevSecOps 실전을 다루었습니다. 이번 클라우드 보안 과정 8기 7주차에서는 Docker & Kubernetes 보안 실전 가이드를 통해 컨테이너 보안부터 클러스터 보안까지 실무 중심으로 다루고자 합니다.
특히 이번 주에는 2024-2026년 최신 Kubernetes 보안 기능과 실전 보안 사례를 결합하여, DevSecOps 관점에서 컨테이너 보안을 강화하는 방법을 깊이 있게 다뤄보겠습니다.
본 과정은 온라인 미팅으로 진행되며, ‘20분 강의 + 5분 휴식’ 사이클로 멘티분들의 집중력을 최대로 유지하며 진행됩니다.

📅 7주차 타임테이블 (Agenda)
| 10:00 - 10:20 | 근황 토크 & 과제 피드백 | 한 주간의 보안 이슈 공유 및 Q&A |
| 10:25 - 10:50 | Docker/Container/Kubernetes 기본 이해 | Docker 이미지/컨테이너 개념, VM vs Container, Kubernetes 핵심 리소스 |
| 11:00 - 11:25 | 컨테이너 보안 Best Practices | Docker 이미지 보안, Secret 관리, 비루트 실행, 이미지 스캔(Trivy, Snyk) |
| 11:30 - 11:50 | Kubernetes 보안 아키텍처 & Best Practices | Pod Security Standards, User Namespaces, Network Policies, RBAC, 보안 모범 사례 |
| 11:55 - 12:00 | 실습 및 Q&A | Minikube 보안 환경 구성, 실전 보안 강화 사례 |
🌐 1. Docker/Container/Kubernetes 기본 이해
컨테이너와 Kubernetes를 이해하기 전에 기본 개념을 명확히 하는 것이 중요합니다.
1.1 Docker 기본 개념
Docker의 핵심 구성 요소
| 개념 | 설명 | 비유 |
| Image | 컨테이너 실행에 필요한 파일과 설정을 포함한 템플릿 | 빵을 만드는 레시피 |
| Container | 이미지를 기반으로 실행되는 인스턴스 | 레시피로 만든 빵 |
| Dockerfile | 이미지를 빌드하기 위한 명령어 스크립트 | 레시피 작성 방법 |
| Registry | 이미지를 저장하고 공유하는 저장소 (Docker Hub 등) | 빵 레시피 도서관 |
기본 Docker 명령어
참고: Docker 기본 명령어는 Docker 공식 문서 및 Docker GitHub 저장소를 참조하세요.
# 이미지 다운로드
docker pull nginx:latest
# 컨테이너 실행
docker run -d -p 8080:80 --name my-nginx nginx:latest
# 실행 중인 컨테이너 확인
docker ps
# 컨테이너 로그 확인
docker logs my-nginx
# 컨테이너 중지
docker stop my-nginx
# 컨테이너 삭제
docker rm my-nginx
1.2 Container 이해
VM vs Container 비교
| 항목 | 가상머신(VM) | 컨테이너 |
| 실행 단위 | 전체 OS 포함 | 앱 + 라이브러리 |
| 성능 | 무겁고 느림 | 경량, 빠름 |
| 실행 환경 | 독립적 커널 | 호스트 커널 공유 |
| 사용 목적 | 레거시 시스템, 완전 격리 | 마이크로서비스, DevOps |
| 리소스 사용 | 높음 (GB 단위) | 낮음 (MB 단위) |
| 시작 시간 | 느림 (분 단위) | 빠름 (초 단위) |
컨테이너 격리 원리
컨테이너는 Linux 커널의 다음 기능을 활용하여 격리를 제공합니다:
| Linux 기능 | 설명 | 격리 효과 |
| Namespaces | 프로세스, 네트워크, 파일시스템 격리 | 각 컨테이너가 독립적인 환경을 가짐 |
| Cgroups | CPU, 메모리, I/O 리소스 제한 | 리소스 사용량 제어 |
| Union File Systems | 레이어드 파일시스템 | 이미지 효율적 관리 |
1.3 Kubernetes 기본 개념
Kubernetes 핵심 리소스
| 리소스 | 설명 | 비유 |
| Pod | 하나 이상의 컨테이너로 구성된 최소 배포 단위 | 컨테이너를 담는 상자 |
| Deployment | Pod의 배포, 업데이트, 스케일링을 관리 | Pod를 관리하는 관리자 |
| Service | Pod에 대한 안정적인 네트워크 엔드포인트 제공 | Pod를 찾는 전화번호부 |
| Namespace | 리소스를 논리적으로 분리하는 가상 클러스터 | 아파트의 층 구분 |
| ConfigMap | 설정 데이터를 저장하는 리소스 | 설정 파일 저장소 |
| Secret | 민감한 데이터를 저장하는 리소스 | 비밀 정보 저장소 |
Kubernetes 아키텍처
| 구성 요소 | 설명 | 역할 |
| Control Plane | 클러스터 관리 및 제어 | API Server, etcd, Scheduler, Controller Manager |
| Node | 실제 워크로드가 실행되는 서버 | kubelet, kube-proxy, 컨테이너 런타임 |
| API Server | Kubernetes API를 제공하는 중앙 엔드포인트 | 모든 요청의 진입점 |
| etcd | 클러스터 상태를 저장하는 분산 키-값 저장소 | 클러스터의 데이터베이스 |
| Scheduler | Pod를 적절한 Node에 배치 | 리소스 할당 결정 |
| kubelet | Node에서 Pod를 관리하는 에이전트 | Pod 생명주기 관리 |
참고: Kubernetes 기본 개념은 Kubernetes 공식 문서 및 Kubernetes GitHub 저장소를 참조하세요.
기본 Kubernetes 명령어
# 클러스터 정보 확인
kubectl cluster-info
# Node 목록 확인
kubectl get nodes
# Pod 목록 확인
kubectl get pods
# Namespace 목록 확인
kubectl get namespaces
# Deployment 생성
kubectl create deployment nginx --image=nginx:latest
# Deployment 확인
kubectl get deployments
# Pod 상세 정보 확인
kubectl describe pod <pod-name>
# Pod 로그 확인
kubectl logs <pod-name>
# Pod 삭제
kubectl delete pod <pod-name>
🌐 2. 컨테이너 보안 Best Practices
컨테이너 보안은 DevSecOps의 핵심입니다. 이미지 빌드 단계부터 런타임까지 전 과정에서 보안을 고려해야 합니다.
- https://twodragon.tistory.com/686
- https://tech.2twodragon.com/posts/2026/01/Cloud_Security_Course_8Batch_7Week_Docker_Kubernetes_Security_Practical_Guide/
클라우드 시큐리티 과정 7기 - 7주차 Docker 및 Kubernetes 이해
안녕하세요, Twodragon입니다. 이번 포스트에서는 클라우드 보안 과정 7기의 Dcoker 및 Kubernetes 이해에 관련된 내용을 다루고자 합니다. 이 과정은 게더 타운에서 진행되며, 각 세션은 20분 강의 후 5
twodragon.tistory.com
🤖 3. Kubernetes 보안 아키텍처
Kubernetes 클러스터 보안은 다층 방어 전략으로 접근해야 합니다.
- https://www.skshieldus.com/uploads/files/20240416/20240416180036051.pdf
- https://kubernetes.io/docs/concepts/security/
- https://tech.2twodragon.com/posts/2026/01/Cloud_Security_Course_8Batch_7Week_Docker_Kubernetes_Security_Practical_Guide/
Security
Concepts for keeping your cloud-native workload secure.
kubernetes.io
✅ 보안 체크리스트
보안 영역체크리스트 항목설명
| Docker 이미지 | 비루트 사용자 실행 | USER 지시어로 비루트 사용자 지정 |
| 읽기 전용 파일시스템 | readOnlyRootFilesystem: true 설정 | |
| 최소 Capabilities | capabilities.drop: ["ALL"] 설정 | |
| 이미지 스캔 자동화 | CI/CD 파이프라인에 Trivy/Snyk 통합 | |
| Kubernetes 보안 | Pod Security Standards 적용 | Namespace에 PSS 레벨 설정 |
| User Namespaces 활성화 | hostUsers: false 설정 (Kubernetes 1.33+) | |
| Network Policies 적용 | Pod 간 통신 제어 정책 설정 | |
| RBAC 최소 권한 원칙 | 필요한 권한만 부여 | |
| Secret 관리 | Kubernetes Secrets 또는 External Secrets Operator 사용 | |
| 모니터링 | 런타임 보안 모니터링 | Falco 등 런타임 보안 도구 통합 |
| 취약점 스캔 정기 실행 | 주기적인 이미지 및 클러스터 스캔 |
결론
Docker & Kubernetes 보안은 DevSecOps의 핵심입니다. 컨테이너 보안부터 클러스터 보안까지 전 과정에서 보안을 고려해야 합니다.
주요 포인트:
- Docker/Container/Kubernetes 기본 이해: 이미지, 컨테이너, Pod 개념 이해, VM vs Container 비교
- 컨테이너 보안 Best Practices: 비루트 실행, 읽기 전용 파일시스템, 최소 Capabilities, 이미지 스캔, Secret 관리
- Kubernetes 보안 아키텍처: Pod Security Standards, User Namespaces, Network Policies, RBAC
- Kubernetes 보안 Best Practices (2024-2026): 이미지 서명 및 검증, 런타임 모니터링, 자동화된 보안 검증, 최신 Kubernetes 보안 기능(Kubernetes 1.32-1.35+, Minikube 1.37.0+, K9s)
- 실전 보안 강화 사례: DevSecOps 관점에서의 보안 강화 워크플로우, 취약점 발견 및 수정 사례
- 실습: Minikube 보안 환경 구성, Pod Security Standards 적용, 이미지 스캔 자동화
이 가이드를 참고하여 여러분의 컨테이너 환경 보안을 강화하시기 바랍니다.
관련 자료
- Kubernetes 공식 문서
- Kubernetes 보안 Best Practices
- Pod Security Standards
- Minikube 공식 문서
- K9s 공식 문서
- Trivy GitHub 저장소
- External Secrets Operator 문서