Kubernetes NetworkPolicy 완벽 가이드! Pod Traffic 제어와 Zero Trust Network 보안 구조 이해하기

Kubernetes Cluster에서는 기본적으로 모든 Pod 간 통신이 가능합니다.

하지만 Production 환경에서는 모든 Application이 서로 자유롭게 통신하면 보안 문제가 발생할 수 있습니다.

예:

Frontend Pod

Backend Pod

Database Pod

만약 공격자가 하나의 Pod를 탈취한다면 전체 Cluster 내부로 접근할 수 있습니다.

이를 방지하기 위해 사용하는 기능이 Kubernetes NetworkPolicy입니다.

NetworkPolicy는 Pod 간 Network Traffic을 제어하고 필요한 통신만 허용하는 Kubernetes 보안 기능입니다.

구성 요소역할
NetworkPolicyTraffic 제어 정책
CNI Plugin정책 적용
Pod Selector대상 Pod 선택
Ingress들어오는 Traffic 관리
Egress나가는 Traffic 관리

NetworkPolicy를 이해하면 Kubernetes 환경에서 Zero Trust Network 구조를 구축할 수 있습니다.

Kubernetes NetworkPolicy란?

NetworkPolicy는 Pod 간 통신 규칙을 정의하는 Kubernetes Resource입니다.

기본 상태:

모든 Pod 통신 허용

NetworkPolicy 적용

허용된 Traffic만 통과

즉:

“필요한 연결만 허용하는 방식”

입니다.

Kubernetes NetworkPolicy가 필요한 이유

Microservice 환경에서는 많은 Service가 연결됩니다.

예:

User Service

Payment Service

Database

하지만:

Admin Service

Database

불필요한 접근

차단 필요

NetworkPolicy를 사용하면 Application 간 접근 범위를 제한할 수 있습니다.

Kubernetes NetworkPolicy 동작 구조

흐름:

Traffic 발생

NetworkPolicy 확인

CNI Plugin 검사

허용 또는 차단

Pod 전달

중요:

NetworkPolicy 자체가 Packet을 처리하는 것이 아니라 CNI Plugin이 실제 적용합니다.

Kubernetes NetworkPolicy 기본 구조

예:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-policy
spec:
  podSelector:
    matchLabels:
      app: backend

대상 Pod를 선택하고 Traffic 규칙을 적용합니다.

Kubernetes Ingress Policy

Ingress는 들어오는 Traffic을 제어합니다.

예:

Frontend

Backend 허용

Database

Backend 차단

구조:

External Traffic

Pod

외부 또는 다른 Pod에서 접근하는 Traffic 관리입니다.

Kubernetes Egress Policy

Egress는 나가는 Traffic을 관리합니다.

예:

Application

외부 API 허용

Database

Internet 차단

외부 통신 제어에 사용됩니다.

Kubernetes NetworkPolicy Selector

Policy 적용 대상은 Label 기반으로 선택합니다.

예:

Pod Label:

app: database

Policy:

podSelector:
  matchLabels:
    app: database

해당 Label을 가진 Pod에만 적용됩니다.

Kubernetes Namespace 기반 NetworkPolicy

Namespace 단위 제어도 가능합니다.

예:

Production Namespace

Production Service만 통신 허용

Development Namespace

차단

멀티 팀 환경에서 중요합니다.

Kubernetes NetworkPolicy Allow 구조

예:

Backend 접근 허용:

Frontend Pod

Backend Pod

허용

다른 Pod:

차단

최소 권한 Network를 구성합니다.

Kubernetes Default Deny Policy

보안 환경에서는 기본 차단 방식을 사용합니다.

구조:

모든 Traffic 차단

필요한 Traffic만 허용

예:

policyTypes:
- Ingress

Zero Trust Network의 기본 방식입니다.

Kubernetes NetworkPolicy와 CNI 관계

모든 CNI가 NetworkPolicy를 지원하는 것은 아닙니다.

대표:

CNI지원
Calico지원
Cilium지원
Flannel제한적
Weave지원

따라서 CNI 선택이 중요합니다.

Kubernetes NetworkPolicy 장애 분석

통신 문제가 발생하면 확인합니다.

Policy 확인

kubectl get networkpolicy

상세 확인

kubectl describe networkpolicy policy-name

Pod Label 확인

kubectl get pods --show-labels

Policy 대상이 맞는지 확인합니다.

Kubernetes NetworkPolicy Debug 방법

테스트 Pod 생성:

kubectl run debug --image=nicolaka/netshoot

통신 테스트:

curl service-name

Traffic 허용 여부를 확인합니다.

Kubernetes NetworkPolicy와 Zero Trust Architecture

Zero Trust 핵심:

“기본 신뢰하지 않고 모든 접근 검증”

Kubernetes 적용:

User

Service

NetworkPolicy 검증

Pod 접근

보안 중심 Cluster 운영 방식입니다.

Kubernetes NetworkPolicy 운영 전략

Production 환경:

1단계

전체 Traffic 분석

2단계

Default Deny 적용

3단계

필요한 연결 허용

4단계

Monitoring 적용

점진적인 적용이 안전합니다.

Kubernetes NetworkPolicy와 Microservice 보안

Microservice 구조에서는 필수 기능입니다.

예:

Frontend

Backend

허용

Backend

Database

허용

Backend

Admin

차단

서비스별 접근 범위를 관리할 수 있습니다.

Kubernetes NetworkPolicy Monitoring

확인 항목:

  • 차단 Traffic
  • 허용 Traffic
  • Policy 변경
  • Network Error

Cilium 같은 솔루션은 상세 Flow 분석도 제공합니다.

Kubernetes NetworkPolicy 장점

장점설명
보안 강화불필요한 접근 차단
Zero Trust 구현최소 권한 Network
Microservice 보호서비스 분리
장애 감소Traffic 제어

Production Kubernetes 환경에서 중요한 보안 기능입니다.

자주 묻는 질문

NetworkPolicy를 적용하면 모든 통신이 차단되나요?

기본 설정에 따라 다릅니다.

Default Deny 정책을 적용하면 차단 후 필요한 연결만 허용합니다.

NetworkPolicy는 Kubernetes 자체 기능인가요?

Resource는 Kubernetes 기능이며 실제 적용은 CNI Plugin이 담당합니다.

모든 CNI에서 NetworkPolicy를 사용할 수 있나요?

아닙니다.

NetworkPolicy 지원 여부는 CNI Plugin에 따라 다릅니다.

마무리

Kubernetes NetworkPolicy는 Pod 간 Network Traffic을 제어하여 Cluster 보안을 강화하는 핵심 기능입니다.

구성 요소역할
NetworkPolicy규칙 정의
CNI Plugin정책 적용
Ingress수신 Traffic 제어
Egress송신 Traffic 제어

NetworkPolicy를 이해하면 Kubernetes 환경에서 Zero Trust Network와 안전한 Microservice Architecture를 구축할 수 있습니다.

다음 글에서는 Kubernetes Storage 구조를 다시 확장하여 Kubernetes Persistent Volume 완벽 가이드! Container 데이터 영속성과 Storage Architecture 이해하기를 진행하겠습니다.

댓글 남기기