Kubernetes 환경에서는 수많은 Application이 하나의 Cluster 안에서 동작합니다.
예를 들어 쇼핑몰 서비스를 운영한다고 가정하면:
Frontend Pod
↓
API Server Pod
↓
Database Pod
구조로 구성될 수 있습니다.
하지만 기본 Kubernetes Network 구조에서는 모든 Pod가 서로 통신 가능한 상태입니다.
개발 환경에서는 편리하지만 Production 환경에서는 보안 문제가 발생할 수 있습니다.
만약 공격자가 하나의 Pod에 접근한다면 내부의 다른 Pod까지 접근할 가능성이 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 NetworkPolicy 기능을 제공합니다.
NetworkPolicy는 Pod 간 Network Traffic을 허용하거나 차단하는 Kubernetes 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| NetworkPolicy | Pod Traffic 제어 |
| Label Selector | 대상 Pod 선택 |
| Ingress Rule | 들어오는 Traffic 관리 |
| Egress Rule | 나가는 Traffic 관리 |
NetworkPolicy 구조를 이해하면 Kubernetes 환경에서 Zero Trust 방식의 내부 Network 보안을 구성할 수 있습니다.
Kubernetes NetworkPolicy가 필요한 이유
기본 Kubernetes Network 구조에서는 Pod 간 통신 제한이 없습니다.
기본 상태:
Frontend Pod
↓
API Pod
↓
Database Pod
모든 통신 가능
하지만 실제 운영 환경에서는 접근 권한이 필요합니다.
예:
Frontend:
API 접근 가능
API:
Database 접근 가능
Database:
외부 접근 차단
이처럼 필요한 통신만 허용하는 것이 안전한 구조입니다.
Kubernetes NetworkPolicy 동작 구조
NetworkPolicy는 Label을 기준으로 Traffic 대상을 선택합니다.
구조:
NetworkPolicy
↓
Pod Selector
↓
Traffic Rule 적용
↓
허용 또는 차단
중요한 점은 NetworkPolicy가 직접 Network Traffic을 처리하는 것이 아니라 CNI Plugin이 실제 동작을 수행한다는 것입니다.
Kubernetes NetworkPolicy와 CNI 관계
NetworkPolicy는 CNI Plugin 지원이 필요합니다.
구조:
NetworkPolicy 생성
↓
API Server 저장
↓
CNI Plugin 확인
↓
Firewall Rule 적용
대표적으로 지원하는 CNI:
| CNI | NetworkPolicy 지원 |
|---|---|
| Calico | 지원 |
| Cilium | 지원 |
| Flannel | 제한적 |
| Weave Net | 지원 |
Production 환경에서는 NetworkPolicy 지원 여부를 확인해야 합니다.
Kubernetes Ingress Rule이란?
Ingress Rule은 외부에서 Pod로 들어오는 Traffic을 제어합니다.
예:
허용:
Frontend Pod
↓
API Pod
차단:
외부 Pod
↓
Database Pod
구조:
Incoming Traffic
↓
Ingress Rule 확인
↓
허용 여부 판단
내부 Application 보호에 활용됩니다.
Kubernetes Egress Rule이란?
Egress Rule은 Pod에서 외부로 나가는 Traffic을 제어합니다.
예:
허용:
API Pod
↓
외부 Payment API
차단:
Database Pod
↓
인터넷 접근
외부 통신 제한을 통해 보안을 강화할 수 있습니다.
Kubernetes NetworkPolicy 실제 운영 예시
쇼핑몰 Application 구조:
Frontend
↓
API
↓
Database
보안 정책:
Frontend:
API만 접근 허용
API:
Database 접근 허용
Database:
API만 접근 허용
구현:
Frontend → API 허용
API → Database 허용
나머지 차단
Microservice 환경에서 많이 사용하는 방식입니다.
Kubernetes Label과 NetworkPolicy 관계
NetworkPolicy는 IP보다 Label 기반으로 동작합니다.
예:
Pod Label:
app=backend
NetworkPolicy:
app=backend 선택
결과:
Backend Pod에만 정책 적용
Pod IP가 변경되어도 정책은 유지됩니다.
Kubernetes Default Deny Policy
Production 환경에서는 모든 Traffic 차단 후 필요한 접근만 허용하는 방식이 많이 사용됩니다.
구조:
기본 차단
↓
필요한 Traffic만 허용
↓
보안 강화
이를 Default Deny 방식이라고 합니다.
Kubernetes NetworkPolicy 적용 과정
실제 적용 흐름:
Policy 작성
↓
kubectl 적용
↓
CNI Plugin 전달
↓
Network Rule 생성
↓
Traffic 제어 시작
Kubernetes API 기반으로 관리됩니다.
Kubernetes NetworkPolicy 장애 상황
NetworkPolicy 적용 후 통신 문제가 발생할 수 있습니다.
주요 원인:
| 문제 | 결과 |
|---|---|
| Label 오류 | Traffic 차단 |
| Rule 설정 오류 | 접속 실패 |
| CNI 미지원 | Policy 미동작 |
| Port 오류 | Connection 실패 |
운영 환경에서는 정책 적용 전 테스트가 필요합니다.
Kubernetes NetworkPolicy 확인 방법
기본 확인:
kubectl get networkpolicy
상세 확인:
kubectl describe networkpolicy
확인 항목:
- 적용 Pod
- 허용 Traffic
- Port
- Namespace
장애 분석 시 중요한 명령어입니다.
Kubernetes Namespace 기반 NetworkPolicy
NetworkPolicy는 Namespace 단위로도 제어할 수 있습니다.
예:
Production Namespace
↓
Database 접근 허용
Development Namespace
↓
접근 차단
대규모 Cluster에서 환경 분리에 활용됩니다.
Kubernetes NetworkPolicy와 Zero Trust
NetworkPolicy는 Zero Trust Network 구조와 연결됩니다.
기존 방식:
내부 Network는 신뢰
↓
모든 접근 허용
Zero Trust:
모든 접근 검증
↓
필요한 연결만 허용
Cloud Native 보안에서 중요한 개념입니다.
Kubernetes NetworkPolicy 운영 전략
Production 환경에서는 단계적으로 적용하는 것이 좋습니다.
추천 순서:
1단계
현재 Traffic 분석
↓
2단계
Default Allow 유지
↓
3단계
필요한 Rule 작성
↓
4단계
Default Deny 적용
↓
5단계
Monitoring
갑작스러운 차단을 방지할 수 있습니다.
Kubernetes NetworkPolicy 장점
| 장점 | 설명 |
|---|---|
| Traffic 제어 | Pod 접근 관리 |
| 보안 강화 | 불필요한 연결 차단 |
| Zero Trust 구현 | 최소 권한 적용 |
| 확장성 | Microservice 지원 |
NetworkPolicy는 Kubernetes Production 보안의 핵심 기능입니다.
자주 묻는 질문
NetworkPolicy는 Kubernetes 기본 기능인가요?
API Resource는 기본 제공되지만 실제 동작은 CNI Plugin 지원이 필요합니다.
NetworkPolicy를 적용하면 모든 Traffic이 차단되나요?
아닙니다.
정책 설정 방식에 따라 허용하거나 차단합니다.
NetworkPolicy와 Firewall 차이는 무엇인가요?
Firewall은 주로 서버 또는 Network Layer를 보호하고 NetworkPolicy는 Kubernetes Pod 단위 Traffic을 제어합니다.
마무리
Kubernetes NetworkPolicy는 Pod 간 통신을 제어하고 Kubernetes Cluster 내부 보안을 강화하는 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| NetworkPolicy | Traffic 정책 관리 |
| Ingress | 들어오는 접근 제어 |
| Egress | 나가는 접근 제어 |
| CNI | 정책 실제 적용 |
NetworkPolicy 구조를 이해하면 Kubernetes 환경에서 Application 간 접근 권한을 관리하고 안전한 Production Cluster를 운영할 수 있습니다.
다음 글에서는 Kubernetes Application 배포 전략을 다루는 Kubernetes Deployment Strategy 완벽 가이드! Rolling Update와 무중단 배포 구조 이해하기를 알아보겠습니다.