1. Kubernetes 네트워킹 개요
- Kubernetes 네트워크는 평면 구조로 설계되어 있어 모든 Pods가 서로 통신 가능.
- Pods는 자체 IP주소를 가지며, 같은 네트워크 네임스페이스 내에서 포트를 공유.
- DNS를 통해 서비스 접근이 가능하며, Ingress Controller 또는 로드 밸런서를 통해 외부 접근 지원.
- 보안 강화를 위해 무단 접근 방지 및 안전한 데이터 전송이 필요함.
2. 컨테이너 네트워킹 보안 강화 방법
1) Network POlicy 적용 (네트워크 트래픽 제어)
- Kubernetes는 기본적으로 모든 Pod 간 트래픽을 허용
- Network Policy를 사용하여 트래픽을 제한하고 보안 강화.
- 예시: 특정 Namespace의 Pods에 대한 모든 송수신 트래픽 차단하여 기본적인 보안 수준 제공.
- 특정 트래픽을 허용/차단하는 규칙을 정의하여 Pod 간 통신을 안전하게 관리.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: default
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
ingress: []
egress: []
2) 서비스 메쉬 사용 (Mutual TLS 및 트래픽 관리)
- Istio, Linkerd와 같은 서비스 메쉬를 활용하여 보안 강화.
- Mutual TLS(mTLS) 적용을 통해 서비스 간 통신을 암호화하고 인증.
- 중간자 공격(MITM) 방지.
- 트래픽 제어 및 모니터링 기능 제공.
- 서비스 간 통신을 안전하게 유지하고, 마이크로서비스 보안을 강화하는 데 필수적.
3) 네트워크 암호화 (전송 중 데이터 보호)
- Kubernetes는 IPsec, WireGuard와 같은 암호화 매커니즘 지원.
- Calico CNI 플러그인을 사용하여 네트워크 트래픽의 IPsec 암호화 활성화 가능.
- 노드 간 트래픽 암호화를 통해 무단 접근을 방지하고 데이터 기밀성을 보장.
4) 네임스페이스 및 네트워크 정책을 통한 워크로드 격리
- 민감한 워크로드를 격리하여 보안 사고 발생 시 피해를 최소화
- 네임스페이스 분리를 통해 서로 다른 애플리케이션을 격리
- 엄격한 네트워크 정책 적용으로 보안 경계를 강화
- 보안 사고가 발생해도 영향을 최소화하여 전체 시스템의 안정성을 유지
3. 요약
- Network Policy 적용: Pod 간 트래픽을 제어하여 무단 접근 방지
- 서비스 메쉬 활용: Mutual TLS를 통해 서비스 간 암호화 및 인증.
- 네트워크 암호화: IPsec, WireGuard 등을 활용하여 데이터 전송 보호.
- 워크로드 격리: 네임스페이스 및 네트워크 정책을 통해 보안 사고 확산 방지.