Kubernetes 환경에서는 여러 Application과 Service가 하나의 Cluster 안에서 동작합니다.
기본 Kubernetes Network 구조에서는 같은 Cluster 내부의 Pod들이 서로 통신할 수 있습니다.
하지만 Production 환경에서는 모든 Pod가 자유롭게 통신하도록 허용하면 보안 문제가 발생할 수 있습니다.
Kubernetes에서는 이러한 문제를 해결하기 위해 Network Policy 기능을 제공합니다.
Network Policy는 Pod 간 Network Traffic을 제어하고 허용된 통신만 가능하도록 제한하는 Kubernetes 보안 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Network Policy | Pod 통신 규칙 관리 |
| Pod Selector | 적용 대상 Pod 선택 |
| Ingress Rule | 들어오는 Traffic 제어 |
| Egress Rule | 나가는 Traffic 제어 |
Network Policy를 활용하면 Microservice 환경에서 서비스 간 접근을 제한하고 안전한 Network 구조를 구성할 수 있습니다.
Kubernetes Network Policy란 무엇인가?
Network Policy는 Kubernetes Cluster 내부 Pod 간 Network 통신을 제어하는 Resource입니다.
기본적으로 Kubernetes에서는 Pod 간 통신이 자유롭게 허용됩니다.
하지만 보안이 중요한 환경에서는 필요한 통신만 허용하는 방식이 필요합니다.
예:
| 서비스 | 통신 허용 |
|---|---|
| Frontend Pod | Backend Pod 접근 가능 |
| Backend Pod | Database 접근 가능 |
| Database Pod | 외부 접근 제한 |
Network Policy를 적용하면 Application 구조에 맞는 세밀한 Network 보안 설정이 가능합니다.
Kubernetes Network Policy 동작 구조
Network Policy는 Label을 기반으로 특정 Pod에 규칙을 적용합니다.
구조:
| 구성 요소 | 역할 |
|---|---|
| Policy | 통신 규칙 정의 |
| Selector | 적용 대상 선택 |
| Ingress | 수신 Traffic 관리 |
| Egress | 송신 Traffic 관리 |
동작 과정:
| 단계 | 내용 |
|---|---|
| 1단계 | Pod Label 확인 |
| 2단계 | Network Policy 적용 |
| 3단계 | Traffic 허용 여부 판단 |
| 4단계 | 통신 허용 또는 차단 |
Kubernetes는 Policy 규칙에 따라 Pod 간 통신을 제어합니다.
Kubernetes Network Policy가 필요한 이유
초기 Kubernetes 환경에서는 모든 Pod가 서로 통신할 수 있습니다.
하지만 실제 서비스에서는 Application 역할에 따라 접근 범위를 제한해야 합니다.
필요한 이유:
| 이유 | 설명 |
|---|---|
| 보안 강화 | 불필요한 접근 차단 |
| 서비스 분리 | Application 영역 보호 |
| 데이터 보호 | Database 접근 제한 |
| Compliance 대응 | 보안 정책 적용 |
특히 금융, 기업 서비스 같은 환경에서는 Network Policy가 중요한 보안 요소입니다.
Kubernetes Ingress Rule이란?
Ingress Rule은 외부 또는 다른 Pod에서 들어오는 Traffic을 제어합니다.
즉, Pod가 어떤 요청을 받을 수 있는지 정의합니다.
예:
| 대상 | 허용 여부 |
|---|---|
| Frontend Pod → Backend Pod | 허용 |
| 외부 사용자 → Database Pod | 차단 |
Ingress Rule을 활용하면 불필요한 접근을 제한할 수 있습니다.
Kubernetes Egress Rule이란?
Egress Rule은 Pod에서 외부로 나가는 Traffic을 제어합니다.
Application이 어떤 외부 서비스와 통신할 수 있는지 관리합니다.
예:
| 대상 | 허용 여부 |
|---|---|
| Backend → 외부 API | 허용 |
| Database → 인터넷 | 차단 |
Egress 제어는 데이터 유출 방지와 보안 강화에 활용됩니다.
Kubernetes Network Policy와 Label 관계
Network Policy는 Label Selector를 이용하여 적용 대상을 선택합니다.
예:
Pod Label:
| Pod | Label |
|---|---|
| Frontend Pod | app=frontend |
| Backend Pod | app=backend |
| Database Pod | app=database |
Policy 적용:
| 대상 | 허용 통신 |
|---|---|
| Frontend | Backend 접근 |
| Backend | Database 접근 |
| Database | 제한된 접근 |
Label 기반 구조는 Kubernetes Resource 관리의 핵심 방식입니다.
Kubernetes Default Deny Policy
Production 환경에서는 모든 Traffic을 허용하는 것보다 기본 차단 방식이 많이 사용됩니다.
Default Deny Policy는 기본적으로 모든 통신을 차단하고 필요한 Traffic만 허용합니다.
구조:
| 정책 | 결과 |
|---|---|
| 기본 차단 | 모든 접근 제한 |
| 필요한 Rule 추가 | 허용된 통신만 가능 |
이 방식은 Zero Trust Network 구조와 연결됩니다.
Kubernetes Network Policy 적용 방식
Network Policy는 YAML 파일을 이용해 정의합니다.
주요 설정:
| 항목 | 설명 |
|---|---|
| podSelector | 적용 대상 Pod 선택 |
| policyTypes | Ingress/Egress 지정 |
| ingress | 수신 규칙 |
| egress | 송신 규칙 |
YAML 기반 관리 방식은 반복적인 배포와 자동화에 적합합니다.
Kubernetes Network Policy 지원 환경
모든 Kubernetes Network 환경이 Network Policy를 지원하는 것은 아닙니다.
일반적으로 CNI Plugin이 Network Policy 기능을 제공해야 합니다.
| CNI Plugin | 지원 |
|---|---|
| Calico | 지원 |
| Cilium | 지원 |
| Flannel | 제한적 |
운영 환경에서는 사용하는 Network Plugin의 지원 여부를 확인해야 합니다.
Kubernetes Network Policy와 Security 비교
| 기능 | 역할 |
|---|---|
| RBAC | 사용자 권한 관리 |
| Secret | 민감 데이터 보호 |
| Network Policy | Network 접근 제어 |
| Pod Security | Container 보안 |
Kubernetes 보안은 하나의 기능이 아니라 여러 보안 계층을 함께 구성해야 합니다.
Kubernetes Network Policy 운영 장점
| 장점 | 설명 |
|---|---|
| 접근 제어 | Pod 통신 제한 |
| 보안 강화 | 불필요한 Traffic 차단 |
| 서비스 보호 | 중요 Application 보호 |
| Zero Trust 구현 | 최소 접근 원칙 적용 |
Network Policy는 Kubernetes Production 환경에서 필수적인 보안 기능입니다.
자주 묻는 질문
Kubernetes Network Policy를 사용하지 않으면 어떻게 되나요?
기본적으로 Pod 간 통신이 허용되어 불필요한 접근 위험이 증가할 수 있습니다.
Network Policy는 모든 Kubernetes 환경에서 동작하나요?
아닙니다.
사용 중인 CNI Plugin이 Network Policy 기능을 지원해야 합니다.
RBAC와 Network Policy의 차이는 무엇인가요?
RBAC는 사용자와 Application 권한을 관리하고 Network Policy는 Pod 간 Network 통신을 제어합니다.
마무리
Kubernetes Network Policy는 Pod 간 통신을 제어하여 안전한 Network 환경을 구성하는 핵심 기능입니다.
| 구성 요소 | 역할 |
|---|---|
| Network Policy | 통신 규칙 관리 |
| Ingress Rule | 수신 Traffic 제어 |
| Egress Rule | 송신 Traffic 제어 |
| Label Selector | 적용 대상 선택 |
Network Policy를 활용하면 Kubernetes Cluster 내부 통신을 세밀하게 관리하고 Zero Trust 기반의 안전한 운영 환경을 구축할 수 있습니다.
다음 글에서는 Kubernetes 장애 대응과 안정적인 운영을 위한 Kubernetes Health Check 완벽 가이드! Liveness Probe와 Readiness Probe 구조 이해하기를 알아보겠습니다.