Kubernetes NetworkPolicy 완벽 가이드! Pod 간 통신 제어와 Zero Trust Network 구조 이해하기

Kubernetes 환경에서는 기본적으로 모든 Pod가 서로 통신할 수 있습니다.

이러한 기본 동작은 개발 환경에서는 편리하지만 Production 환경에서는 보안 위험이 될 수 있습니다.

예:

Frontend Pod

Database Pod 접근

불필요한 내부 통신 가능

보안 위험 발생

이를 해결하기 위해 Kubernetes는 NetworkPolicy 기능을 제공합니다.

NetworkPolicy는 Pod 간 Network Traffic을 제어하여 어떤 Pod가 어떤 Pod와 통신할 수 있는지 정의하는 Kubernetes Network Security 기능입니다.

구성 요소역할
NetworkPolicyPod Traffic 제어
Label Selector대상 Pod 지정
Ingress Rule들어오는 Traffic 관리
Egress Rule나가는 Traffic 관리
CNI PluginPolicy 적용

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

Kubernetes NetworkPolicy란?

NetworkPolicy는 Kubernetes Pod 간 Network 접근 규칙을 정의하는 Resource입니다.

기본 Kubernetes Network:

Pod A

Pod B

통신 가능

NetworkPolicy 적용:

Pod A

Policy 검사

허용 또는 차단

필요한 통신만 허용하는 구조입니다.

Kubernetes 기본 Network 동작

Kubernetes 기본 Network Model:

  • 모든 Pod는 고유 IP 보유
  • Pod 간 직접 통신 가능
  • NAT 없이 통신 가능

장점:

  • 단순한 구조
  • Service 연결 편리

하지만:

  • 불필요한 접근 가능
  • 내부 공격 확산 위험

보안 정책이 필요합니다.

Kubernetes NetworkPolicy Architecture

구조:

Client

↓

Service

↓

Frontend Pod

↓

NetworkPolicy

↓

Backend Pod

↓

Database Pod

Traffic이 Policy 규칙을 통과해야 합니다.

Kubernetes NetworkPolicy 구성 요소

주요 요소:

구성 요소설명
Pod Selector대상 Pod 지정
Ingress수신 Traffic 제어
Egress송신 Traffic 제어
Namespace SelectorNamespace 기준 제한
IP BlockIP 기반 제한

세밀한 Network 접근 관리가 가능합니다.

Kubernetes Ingress NetworkPolicy

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

예:

Frontend Pod

Backend Pod 접근 허용

Database Pod 접근 차단

외부 또는 다른 Pod에서 들어오는 요청을 관리합니다.

Kubernetes Egress NetworkPolicy

Egress는 나가는 Traffic을 제어합니다.

예:

Application Pod

외부 API 접근 허용

불필요한 외부 접근 차단

Data 유출 방지에 중요합니다.

Kubernetes NetworkPolicy YAML 예제

예:

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

  policyTypes:
  - Ingress

  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend

Frontend Pod만 Backend Pod에 접근 가능합니다.

Kubernetes Label과 NetworkPolicy 관계

NetworkPolicy는 Label 기반으로 동작합니다.

구조:

Pod Label

Selector 확인

Traffic 허용/차단

따라서 Label 설계가 중요합니다.

Kubernetes Namespace NetworkPolicy

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

예:

Development Namespace

Production 접근 차단

환경별 격리가 가능합니다.

Kubernetes NetworkPolicy와 CNI 관계

중요한 부분입니다.

NetworkPolicy는 Kubernetes API 기능이지만 실제 적용은 CNI Plugin이 담당합니다.

지원 CNI:

  • Calico
  • Cilium
  • Weave

CNI가 Policy Enforcement를 수행합니다.

Kubernetes Calico NetworkPolicy

Calico는 가장 많이 사용하는 Network Policy 구현 방식 중 하나입니다.

기능:

  • Layer 3/4 Policy
  • IP 관리
  • Network Security
  • Micro Segmentation

Enterprise Kubernetes 환경에서 많이 사용됩니다.

Kubernetes Cilium NetworkPolicy

Cilium은 eBPF 기반 Network Security 솔루션입니다.

특징:

  • 고성능 Packet 처리
  • Application Layer Policy
  • Observability 지원

현대 Cloud Native 환경에서 활용도가 증가하고 있습니다.

Kubernetes Zero Trust Network 구조

Zero Trust 원칙:

“기본적으로 모두 차단하고 필요한 접근만 허용”

Kubernetes 적용:

기본 Deny

필요 Traffic 허용

Access Logging

지속적인 검증

보안 수준을 높일 수 있습니다.

Kubernetes Default Deny Policy

Production 환경에서는 기본 차단 정책을 사용할 수 있습니다.

구조:

모든 Traffic 차단

필요한 통신만 허용

보안 강화의 기본 패턴입니다.

Kubernetes NetworkPolicy 장애 분석

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

Policy 확인:

kubectl get networkpolicy

상세 확인:

kubectl describe networkpolicy policy-name

Pod Label 확인:

kubectl get pods --show-labels

주요 확인:

  • Label 오류
  • Namespace 설정
  • CNI 지원 여부
  • Rule 설정

Kubernetes NetworkPolicy 테스트 방법

통신 테스트:

kubectl exec -it pod-name -- curl service-name

확인:

  • 접근 성공
  • 접근 차단
  • DNS 동작

Policy 적용 후 반드시 테스트가 필요합니다.

Kubernetes NetworkPolicy 운영 전략

Production 환경:

기본 Deny 적용

서비스별 Allow 정책 작성

Namespace 분리

Traffic Monitoring

정책 정기 검토

Zero Trust Network 환경을 구축합니다.

Kubernetes NetworkPolicy와 Security Architecture

전체 보안 구조:

Authentication

Authorization

RBAC

NetworkPolicy

Container Security

Audit Logging

여러 보안 계층이 함께 동작합니다.

Kubernetes NetworkPolicy 장점

장점설명
Traffic 제어불필요한 접근 차단
Micro Segmentation서비스 분리
Zero Trust 구현최소 통신 허용
보안 강화공격 확산 방지

NetworkPolicy는 Kubernetes Network Security의 핵심 기능입니다.

자주 묻는 질문

NetworkPolicy를 설정하면 모든 CNI에서 동작하나요?

아닙니다.

사용하는 CNI Plugin이 NetworkPolicy를 지원해야 합니다.

NetworkPolicy와 Firewall 차이는 무엇인가요?

Firewall은 외부 Network 중심이고 NetworkPolicy는 Pod 내부 통신 제어에 집중합니다.

기본적으로 Kubernetes는 Network를 차단하나요?

아닙니다.

기본 상태는 Pod 간 통신이 허용됩니다.

마무리

Kubernetes NetworkPolicy는 Pod 간 통신을 제어하여 안전한 Network 환경을 만드는 핵심 보안 기능입니다.

구성 요소역할
NetworkPolicyTraffic 규칙 관리
CNI정책 적용
Ingress수신 제어
Egress송신 제어
Label대상 지정

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

다음 글에서는 Kubernetes 접근 보안 강화 영역인 Kubernetes Service Mesh 완벽 가이드! Istio 기반 Traffic Management와 Microservice 보안 구조 이해하기를 진행하겠습니다.

댓글 남기기