Kubernetes 환경에서는 기본적으로 모든 Pod가 서로 통신할 수 있습니다.
이러한 기본 동작은 개발 환경에서는 편리하지만 Production 환경에서는 보안 위험이 될 수 있습니다.
예:
Frontend Pod
↓
Database Pod 접근
↓
불필요한 내부 통신 가능
↓
보안 위험 발생
이를 해결하기 위해 Kubernetes는 NetworkPolicy 기능을 제공합니다.
NetworkPolicy는 Pod 간 Network Traffic을 제어하여 어떤 Pod가 어떤 Pod와 통신할 수 있는지 정의하는 Kubernetes Network Security 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| NetworkPolicy | Pod Traffic 제어 |
| Label Selector | 대상 Pod 지정 |
| Ingress Rule | 들어오는 Traffic 관리 |
| Egress Rule | 나가는 Traffic 관리 |
| CNI Plugin | Policy 적용 |
NetworkPolicy 구조를 이해하면 Kubernetes 환경에서 Zero Trust Network Architecture를 구현할 수 있습니다.
Kubernetes NetworkPolicy란?
NetworkPolicy는 Kubernetes Pod 간 Network 접근 규칙을 정의하는 Resource입니다.
기본 Kubernetes Network:
Pod A
↓
Pod B
통신 가능
NetworkPolicy 적용:
Pod A
↓
Policy 검사
↓
허용 또는 차단
필요한 통신만 허용하는 구조입니다.
Kubernetes 기본 Network 동작
Kubernetes 기본 Network Model:
- 모든 Pod는 고유 IP 보유
- Pod 간 직접 통신 가능
- NAT 없이 통신 가능
장점:
- 단순한 구조
- Service 연결 편리
하지만:
- 불필요한 접근 가능
- 내부 공격 확산 위험
보안 정책이 필요합니다.
Kubernetes NetworkPolicy Architecture
구조:
Client
↓
Service
↓
Frontend Pod
↓
NetworkPolicy
↓
Backend Pod
↓
Database Pod
Traffic이 Policy 규칙을 통과해야 합니다.
Kubernetes NetworkPolicy 구성 요소
주요 요소:
| 구성 요소 | 설명 |
|---|---|
| Pod Selector | 대상 Pod 지정 |
| Ingress | 수신 Traffic 제어 |
| Egress | 송신 Traffic 제어 |
| Namespace Selector | Namespace 기준 제한 |
| IP Block | IP 기반 제한 |
세밀한 Network 접근 관리가 가능합니다.
Kubernetes Ingress NetworkPolicy
Ingress는 들어오는 Traffic을 제어합니다.
예:
Frontend Pod
↓
Backend Pod 접근 허용
Database Pod 접근 차단
외부 또는 다른 Pod에서 들어오는 요청을 관리합니다.
Kubernetes Egress NetworkPolicy
Egress는 나가는 Traffic을 제어합니다.
예:
Application Pod
↓
외부 API 접근 허용
↓
불필요한 외부 접근 차단
Data 유출 방지에 중요합니다.
Kubernetes NetworkPolicy YAML 예제
예:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: backend-policy
spec:
podSelector:
matchLabels:
app: backend
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
Frontend Pod만 Backend Pod에 접근 가능합니다.
Kubernetes Label과 NetworkPolicy 관계
NetworkPolicy는 Label 기반으로 동작합니다.
구조:
Pod Label
↓
Selector 확인
↓
Traffic 허용/차단
따라서 Label 설계가 중요합니다.
Kubernetes Namespace NetworkPolicy
Namespace 단위 제한도 가능합니다.
예:
Development Namespace
↓
Production 접근 차단
환경별 격리가 가능합니다.
Kubernetes NetworkPolicy와 CNI 관계
중요한 부분입니다.
NetworkPolicy는 Kubernetes API 기능이지만 실제 적용은 CNI Plugin이 담당합니다.
지원 CNI:
- Calico
- Cilium
- Weave
CNI가 Policy Enforcement를 수행합니다.
Kubernetes Calico NetworkPolicy
Calico는 가장 많이 사용하는 Network Policy 구현 방식 중 하나입니다.
기능:
- Layer 3/4 Policy
- IP 관리
- Network Security
- Micro Segmentation
Enterprise Kubernetes 환경에서 많이 사용됩니다.
Kubernetes Cilium NetworkPolicy
Cilium은 eBPF 기반 Network Security 솔루션입니다.
특징:
- 고성능 Packet 처리
- Application Layer Policy
- Observability 지원
현대 Cloud Native 환경에서 활용도가 증가하고 있습니다.
Kubernetes Zero Trust Network 구조
Zero Trust 원칙:
“기본적으로 모두 차단하고 필요한 접근만 허용”
Kubernetes 적용:
기본 Deny
↓
필요 Traffic 허용
↓
Access Logging
↓
지속적인 검증
보안 수준을 높일 수 있습니다.
Kubernetes Default Deny Policy
Production 환경에서는 기본 차단 정책을 사용할 수 있습니다.
구조:
모든 Traffic 차단
↓
필요한 통신만 허용
보안 강화의 기본 패턴입니다.
Kubernetes NetworkPolicy 장애 분석
Network 문제가 발생하면 확인합니다.
Policy 확인:
kubectl get networkpolicy
상세 확인:
kubectl describe networkpolicy policy-name
Pod Label 확인:
kubectl get pods --show-labels
주요 확인:
- Label 오류
- Namespace 설정
- CNI 지원 여부
- Rule 설정
Kubernetes NetworkPolicy 테스트 방법
통신 테스트:
kubectl exec -it pod-name -- curl service-name
확인:
- 접근 성공
- 접근 차단
- DNS 동작
Policy 적용 후 반드시 테스트가 필요합니다.
Kubernetes NetworkPolicy 운영 전략
Production 환경:
기본 Deny 적용
↓
서비스별 Allow 정책 작성
↓
Namespace 분리
↓
Traffic Monitoring
↓
정책 정기 검토
Zero Trust Network 환경을 구축합니다.
Kubernetes NetworkPolicy와 Security Architecture
전체 보안 구조:
Authentication
↓
Authorization
↓
RBAC
↓
NetworkPolicy
↓
Container Security
↓
Audit Logging
여러 보안 계층이 함께 동작합니다.
Kubernetes NetworkPolicy 장점
| 장점 | 설명 |
|---|---|
| Traffic 제어 | 불필요한 접근 차단 |
| Micro Segmentation | 서비스 분리 |
| Zero Trust 구현 | 최소 통신 허용 |
| 보안 강화 | 공격 확산 방지 |
NetworkPolicy는 Kubernetes Network Security의 핵심 기능입니다.
자주 묻는 질문
NetworkPolicy를 설정하면 모든 CNI에서 동작하나요?
아닙니다.
사용하는 CNI Plugin이 NetworkPolicy를 지원해야 합니다.
NetworkPolicy와 Firewall 차이는 무엇인가요?
Firewall은 외부 Network 중심이고 NetworkPolicy는 Pod 내부 통신 제어에 집중합니다.
기본적으로 Kubernetes는 Network를 차단하나요?
아닙니다.
기본 상태는 Pod 간 통신이 허용됩니다.
마무리
Kubernetes NetworkPolicy는 Pod 간 통신을 제어하여 안전한 Network 환경을 만드는 핵심 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| NetworkPolicy | Traffic 규칙 관리 |
| CNI | 정책 적용 |
| Ingress | 수신 제어 |
| Egress | 송신 제어 |
| Label | 대상 지정 |
NetworkPolicy 구조를 이해하면 Kubernetes 환경에서 Zero Trust 기반의 안전한 Network Architecture를 구축할 수 있습니다.
다음 글에서는 Kubernetes 접근 보안 강화 영역인 Kubernetes Service Mesh 완벽 가이드! Istio 기반 Traffic Management와 Microservice 보안 구조 이해하기를 진행하겠습니다.