În configurația inițială a oricărui cluster Kubernetes standard, rețeaua este complet deschisă (flat network): orice Pod din orice namespace poate iniția conexiuni de rețea către oricare alt Pod sau serviciu din cluster. Dacă un atacator compromite o vulnerabilitate dintr-un container frontend accesibil public, acesta poate iniția imediat conexiuni către baza de date sau alte microservicii interne (mișcare laterală / lateral movement). NetworkPolicy funcționează ca un firewall de nivel 3/4 intern, blocând traficul neautorizat pe baza etichetelor.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: protectie-baza-date
namespace: productia
spec:
# Politica se aplică Pod-urilor etichetate 'role: db':
podSelector:
matchLabels:
role: db
policyTypes:
- Ingress
ingress:
# Permite conexiuni DOAR de la Pod-urile etichetate 'role: api':
- from:
- podSelector:
matchLabels:
role: api
ports:
- protocol: TCP
port: 5432
NetworkPolicy sunt doar specificații decorative dacă clusterul vostru nu rulează un plugin de rețea CNI care să suporte aplicarea politicilor (precum Cilium, Calico sau WeaveNet). Driverele de bază precum Flannel simplu ignoră NetworkPolicies!