네트워크 정책

지원 버전: Kubernetes 1.31, 1.32, 1.33 마지막 업데이트: 2026년 2월 22일

Kubernetes 네트워크 정책은 Pod 간 트래픽을 제어하는 방화벽 규칙입니다. 이 문서에서는 기본 NetworkPolicy부터 Cilium과 Calico의 확장 기능까지 상세히 다룹니다.

목차


네트워크 정책 개요

네트워크 정책이란?

네트워크 정책은 Kubernetes에서 Pod 수준의 방화벽 역할을 합니다. 기본적으로 Kubernetes Pod는 모든 다른 Pod와 자유롭게 통신할 수 있지만, 네트워크 정책을 통해 이 트래픽을 제한할 수 있습니다.

네트워크 정책의 특징

특성
설명

네임스페이스 범위

NetworkPolicy는 네임스페이스 내 리소스에 적용

추가적(Additive)

여러 정책이 있으면 모든 정책의 합집합이 적용

선택적 적용

podSelector로 대상 Pod 지정

방향별 제어

Ingress(수신)와 Egress(송신) 별도 제어

CNI 의존

CNI 플러그인이 NetworkPolicy를 지원해야 함

CNI별 NetworkPolicy 지원

CNI
기본 NetworkPolicy
확장 기능
L7 정책

Cilium

CiliumNetworkPolicy, CiliumClusterwideNetworkPolicy

Calico

GlobalNetworkPolicy, NetworkSet

✓ (Enterprise)

Weave Net

제한적

Flannel

Amazon VPC CNI

✗ (별도 설치 필요)

Security Groups for Pods


Kubernetes NetworkPolicy 스펙

기본 구조

podSelector

정책이 적용될 Pod를 선택합니다.

namespaceSelector

다른 네임스페이스의 Pod를 선택합니다.

주의: namespaceSelectorpodSelector를 함께 사용할 때 AND vs OR 구분:

ipBlock

특정 IP 범위를 허용하거나 차단합니다.

ports

허용할 포트와 프로토콜을 지정합니다.


기본 거부 정책

Ingress 기본 거부

모든 인바운드 트래픽을 차단하는 기본 정책:

Egress 기본 거부

모든 아웃바운드 트래픽을 차단하는 기본 정책:

전체 거부 (Ingress + Egress)

DNS 허용과 함께 기본 거부

Egress를 차단할 때 DNS 조회를 허용하는 일반적인 패턴:

Zero Trust 아키텍처 기본 정책


정책 순서 및 평가

정책 평가 규칙

NetworkPolicy는 다음 규칙에 따라 평가됩니다:

여러 정책의 조합

여러 NetworkPolicy가 동일한 Pod에 적용될 때, 모든 정책의 규칙이 합쳐집니다 (Union):

결과: app: api Pod는 frontend Pod의 8080 접근과 monitoring 네임스페이스의 8080, 9090 접근 모두 허용됩니다.

정책 평가 순서

NetworkPolicy에는 우선순위 개념이 없습니다. 모든 정책은 동등하게 처리됩니다:


Cilium 네트워크 정책 확장

CiliumNetworkPolicy

Cilium은 기본 NetworkPolicy를 확장하여 더 강력한 기능을 제공합니다.

L7 HTTP 정책

L7 Kafka 정책

L7 DNS 정책

CiliumClusterwideNetworkPolicy

클러스터 전체에 적용되는 정책:

Cilium 엔티티 기반 정책


Calico 네트워크 정책 확장

Calico NetworkPolicy

GlobalNetworkPolicy

클러스터 전체에 적용되는 Calico 정책:

NetworkSet

재사용 가능한 IP 집합 정의:

NetworkSet 사용:

Tier 기반 정책

Calico Enterprise에서 지원하는 계층형 정책:


설계 패턴

마이크로세그멘테이션

각 서비스를 개별적으로 격리:

네임스페이스 격리

데이터베이스 보호

3-Tier 아키텍처 정책


네트워크 정책 테스트

netshoot을 사용한 테스트

kubectl exec을 사용한 테스트

Cilium Connectivity Test

자동화된 테스트 스크립트


EKS 고려사항

Amazon VPC CNI와 NetworkPolicy

Amazon VPC CNI는 기본적으로 NetworkPolicy를 지원하지 않습니다. NetworkPolicy를 사용하려면 추가 구성이 필요합니다:

Security Groups for Pods

EKS에서 Pod에 직접 Security Group을 적용할 수 있습니다:

Security Group 설정 예시:

VPC 레벨 제어와 NetworkPolicy 조합

EKS에서 Cilium 사용


시각화 도구

Cilium Network Policy Editor

Cilium은 웹 기반 정책 편집기를 제공합니다:

Cilium Policy Verdict 확인

Calico Enterprise UI

Calico Enterprise는 정책 시각화 UI를 제공합니다:

Network Policy 시각화 도구

Kube-hunter를 사용한 보안 테스트


모범 사례

1. 기본 거부 정책 적용

2. 최소 권한 원칙

필요한 통신만 명시적으로 허용:

3. 정책 문서화

4. 정기적인 정책 감사


요약

Kubernetes 네트워크 정책은 클러스터 내 Pod 통신을 제어하는 핵심 보안 메커니즘입니다:

  1. 기본 NetworkPolicy: 네임스페이스 범위, podSelector/namespaceSelector/ipBlock 지원

  2. Cilium 확장: L7 정책, DNS FQDN 기반 정책, 클러스터 와이드 정책

  3. Calico 확장: GlobalNetworkPolicy, NetworkSet, Tier 기반 정책

  4. EKS 고려사항: VPC CNI NetworkPolicy 활성화, Security Groups for Pods

권장 사항

  • 모든 프로덕션 네임스페이스에 기본 거부 정책 적용

  • 최소 권한 원칙에 따라 필요한 트래픽만 허용

  • 정기적인 정책 감사 및 테스트

  • L7 정책이 필요한 경우 Cilium 사용 고려


참고 자료

마지막 업데이트