Kubernetes Cluster에서는 수많은 Pod와 Service가 서로 통신하며 Application을 구성합니다.
하지만 기본 Kubernetes Network 구조에서는 같은 Cluster 내부의 Pod들이 서로 통신할 수 있기 때문에 보안 측면에서 관리가 필요합니다.
예를 들어 Database Pod는 Backend Application에서만 접근해야 하지만 모든 Pod에서 접근 가능하다면 데이터 노출 위험이 발생할 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 NetworkPolicy 기능을 제공합니다.
NetworkPolicy는 Pod 간 Network Traffic을 제어하고 허용된 통신만 가능하도록 제한하는 Kubernetes 보안 Resource입니다.
| 구성 요소 | 역할 |
|---|---|
| NetworkPolicy | Pod Traffic 규칙 정의 |
| Ingress | 들어오는 Traffic 제어 |
| Egress | 나가는 Traffic 제어 |
| CNI Plugin | Network 정책 적용 |
NetworkPolicy 구조를 이해하면 Kubernetes 환경에서 Zero Trust 기반의 안전한 Network Architecture를 구성할 수 있습니다.
Kubernetes NetworkPolicy란 무엇인가?
NetworkPolicy는 Kubernetes Pod 사이의 Network 통신 규칙을 정의하는 Resource입니다.
기본 상태에서는 Pod 간 통신이 자유롭게 가능하지만 NetworkPolicy를 적용하면 필요한 통신만 허용할 수 있습니다.
기본 구조:
Frontend Pod
↓
Backend Pod
↓
Database Pod
모든 통신 가능
NetworkPolicy 적용:
Frontend Pod
↓
차단
Backend Pod
↓
허용
Database Pod
이처럼 Application 계층별 접근 제어가 가능합니다.
Kubernetes NetworkPolicy가 필요한 이유
Microservice Architecture에서는 많은 Application이 서로 연결됩니다.
하지만 모든 Pod가 자유롭게 통신하면 보안 위험이 증가합니다.
문제:
| 상황 | 위험 |
|---|---|
| 불필요한 Pod 접근 | 데이터 노출 |
| 악성 Container 실행 | 내부 공격 가능 |
| 권한 없는 통신 | 보안 취약점 증가 |
| 외부 접근 제한 부족 | 서비스 위험 증가 |
NetworkPolicy는 필요한 통신만 허용하는 구조를 제공합니다.
Kubernetes NetworkPolicy 동작 구조
NetworkPolicy는 Pod Label을 기준으로 적용 대상을 선택합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Pod Label | 정책 적용 대상 선택 |
| NetworkPolicy | Traffic 규칙 정의 |
| CNI Plugin | 실제 차단 및 허용 |
| Pod | 통신 대상 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | NetworkPolicy 생성 |
| 2단계 | Selector로 Pod 선택 |
| 3단계 | Ingress/Egress 규칙 적용 |
| 4단계 | Traffic 허용 또는 차단 |
실제 Network 제어는 CNI Plugin이 담당합니다.
Kubernetes Ingress Policy란?
Ingress Policy는 Pod로 들어오는 Traffic을 제어하는 정책입니다.
외부 또는 다른 Pod에서 특정 Application으로 접근하는 것을 제한합니다.
예:
Database Pod 정책:
허용:
Backend Pod
차단:
Frontend Pod
외부 접근
구조:
Traffic
↓
Ingress Policy
↓
Database Pod
보안이 필요한 서비스 보호에 사용됩니다.
Kubernetes Egress Policy란?
Egress Policy는 Pod에서 외부로 나가는 Traffic을 관리합니다.
Application이 접근할 수 있는 외부 Network 범위를 제한할 수 있습니다.
예:
Backend Application
허용:
결제 API
차단:
불필요한 외부 주소
데이터 유출 방지에 활용됩니다.
Kubernetes NetworkPolicy Selector 구조
NetworkPolicy는 Label 기반으로 대상 Pod를 선택합니다.
예:
Database Pod:
app=database
Backend Pod:
app=backend
Policy:
backend Label을 가진 Pod만 database 접근 허용
따라서 일관된 Label 설계가 중요합니다.
Kubernetes NetworkPolicy 주요 구성 요소
NetworkPolicy는 여러 설정으로 구성됩니다.
| 설정 | 설명 |
|---|---|
| podSelector | 적용 대상 Pod 선택 |
| policyTypes | Ingress/Egress 지정 |
| ingress | 들어오는 Traffic 규칙 |
| egress | 나가는 Traffic 규칙 |
| namespaceSelector | Namespace 제한 |
이 설정을 조합하여 세밀한 Network 제어가 가능합니다.
Kubernetes Default Deny Policy란?
Default Deny Policy는 모든 Network Traffic을 기본 차단하는 보안 방식입니다.
구조:
기본 상태:
모든 통신 허용
↓
Default Deny 적용
↓
모든 통신 차단
↓
필요한 Traffic만 허용
Zero Trust Network 환경에서 많이 사용하는 방식입니다.
Kubernetes NetworkPolicy와 CNI 관계
NetworkPolicy는 Kubernetes API Resource이지만 실제 Traffic 제어는 CNI Plugin이 수행합니다.
대표적인 CNI:
| CNI Plugin | 특징 |
|---|---|
| Calico | 강력한 NetworkPolicy 지원 |
| Cilium | eBPF 기반 보안 제공 |
| Flannel | 기본 Network 기능 중심 |
따라서 NetworkPolicy 사용 전 CNI 지원 여부 확인이 필요합니다.
Kubernetes Namespace 기반 NetworkPolicy
NetworkPolicy는 Namespace 단위 접근 제한도 가능합니다.
예:
Production Namespace
↓
Database Namespace
허용
Development Namespace
↓
Database Namespace
차단
환경별 Network 격리가 가능합니다.
Kubernetes NetworkPolicy와 Service 관계
NetworkPolicy는 Service 자체가 아니라 Pod Traffic을 제어합니다.
구조:
Client
↓
Service
↓
Pod
↓
NetworkPolicy 확인
최종적으로 Pod 기준으로 Traffic 허용 여부가 결정됩니다.
Kubernetes NetworkPolicy 활용 사례
| 활용 사례 | 설명 |
|---|---|
| Database 보호 | 접근 Application 제한 |
| Microservice 보안 | 서비스 간 통신 제어 |
| Multi Tenant 환경 | Namespace 격리 |
| 외부 접근 제한 | 데이터 보호 |
대규모 Kubernetes 환경에서는 필수적인 보안 기능입니다.
Kubernetes NetworkPolicy 운영 시 고려사항
Production 환경에서는 단계적인 정책 적용이 중요합니다.
| 항목 | 설명 |
|---|---|
| Label 관리 | 일관된 기준 필요 |
| Traffic 분석 | 기존 통신 확인 |
| Default Deny 적용 | 점진적 적용 |
| Monitoring | 차단 Traffic 확인 |
잘못된 Policy 설정은 정상 서비스 통신을 차단할 수 있습니다.
Kubernetes NetworkPolicy 장점
| 장점 | 설명 |
|---|---|
| 보안 강화 | 불필요한 접근 차단 |
| Traffic 제어 | 서비스 통신 관리 |
| 격리 환경 | Application 보호 |
| Zero Trust 지원 | 최소 접근 구현 |
NetworkPolicy는 Kubernetes 보안 Architecture의 핵심 기능입니다.
자주 묻는 질문
NetworkPolicy를 적용하면 모든 통신이 차단되나요?
아닙니다.
Policy가 적용된 Pod만 규칙 영향을 받으며 기본 동작은 설정 방식에 따라 달라집니다.
NetworkPolicy는 Kubernetes가 직접 Traffic을 차단하나요?
아닙니다.
실제 Traffic 제어는 Calico, Cilium 같은 CNI Plugin이 담당합니다.
모든 CNI Plugin에서 NetworkPolicy를 사용할 수 있나요?
아닙니다.
NetworkPolicy를 지원하는 CNI Plugin이 필요합니다.
마무리
Kubernetes NetworkPolicy는 Pod 간 통신을 제어하고 Application 보안을 강화하는 핵심 Network 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| NetworkPolicy | 통신 규칙 정의 |
| Ingress | 들어오는 Traffic 관리 |
| Egress | 나가는 Traffic 관리 |
| CNI Plugin | 정책 적용 |
NetworkPolicy를 활용하면 Kubernetes 환경에서 서비스 간 접근을 제한하고 안전한 Zero Trust Network 구조를 구축할 수 있습니다.
다음 글에서는 Kubernetes Application 안정성을 위한 Kubernetes Probe 완벽 가이드! Liveness, Readiness, Startup Health Check 구조 이해하기를 알아보겠습니다.