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