[Kubernetes Threat Model] Kubernetes Trust Boundaries and Data Flow
1. 다계층 웹 애플리케이션의 주요 구성 요소
-
프론트엔드 (Nginx)
- 정적 콘텐츠 제공 (HTML, CSS, JavaScript)
- 리버스 프록시 역할 수행
- 프론트엔드 네임스페이스 내에서 실행됨
-
백엔드 (Node.js 마이크로서비스)
- 애플리케이션의 비즈니스 로직 처리
- 데이터베이스와 상호작용
- 백엔드 네임스페이스 내에서 실행됨
-
데이터베이스 (MySQL)
- 사용자 데이터 및 애플리케이션 상태 저장
- 데이터베이스 네임스페이스 내에서 실행됨
2. 신뢰 경계 (Trust Boundaries)
-
클러스터 경계
- 개발, 스테이징, 프로덕션 환경을 분리하여 보안 강화
- 네트워크 트래픽이 클러스터 단위로 격리됨
-
노드 경계
- 노드는 여러 개의 팟(Pod)과 시스템 구성 요소(Kubelet 등)를 포함
- 특정 노드가 침해되더라도 다른 서비스에 영향을 미치지 않도록 격리됨
-
네임스페이스 경계
- 프론트엔드, 백엔드, 데이터베이스를 별도 네임스페이스로 분리
- 역할 기반 접근 제어(RBAC)를 통해 각 네임스페이스의 접근을 제어
-
Pod 및 컨테이너 경계
- 각 애플리케이션 구성 요소는 독립된 Pod에서 실행됨
- 컨테이너 단위의 격리를 통해 내부 보안 유지
3. 데이터 흐름 분석
-
사용자 → 프론트엔드 (Nginx)
- HTTPS 및 인증을 통해 보안 유지
- Nginx가 백엔드 API로 요청 전달
-
프론트엔드 → 백엔드 API
-
백엔드 → 데이터베이스 (MySQL)
- 민감한 데이터 보호를 위해 접근 제어 및 암호화 필요
-
백엔드 서비스 간 통신
- 인증 서비스, 주문 서비스, 로그 서비스 등 여러 마이크로서비스 간 통신 필요
- Kubernetes 네트워크 정책을 적용하여 불필요한 통신 차단
4. 위협 요소 및 보안 대책
-
위협 행위자
- 외부 공격자
- 타협된 애플리케이션
- 악의적인 내부 사용자
-
보안 조치
- 네트워크 정책 적용: 불필요한 서비스 간 통신 차단
- RBAC 설정: 최소 권한 원칙 적용
- 데이터 암호화: 저장 및 전송 중 데이터 보호
- 모니터링 및 로깅: 이상 징후 탐지 및 대응