Securizarea Rețelei Interne cu NetworkPolicy (Zero-Trust K8s) în Kubernetes (kubectl)

Ghid de securitate a rețelei în Kubernetes cu NetworkPolicy: izolarea Pod-urilor, filtrarea traficului ingress și egress pe bază de etichete (labels) și implementarea principiului de minim privilegiu pentru prevenirea mișcării laterale.

Sintaxă comandă
kubectl get networkpolicies -A | kubectl describe netpol isolate-database

Î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.

Blocarea accesului direct la baza de date și permiterea exclusivă din backend
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
Cerință critică: Resursele 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!