Kubernetes по умолчанию не безопасен. Кластер из коробки — открытые порты, pods без ограничений, плоская сеть без сегментации.
Топ-5 уязвимостей K8s
- Открытый API Server — доступ без аутентификации. Shodan находит тысячи таких кластеров.
- Privileged containers — root внутри pod = root на ноде. Побег из контейнера за секунды.
- Отсутствие Network Policies — любой pod видит любой pod. Lateral movement без препятствий.
- Secrets в plain text — base64 это НЕ шифрование. etcd хранит всё открытым.
- Устаревшие образы — известные CVE крутятся в production месяцами.
Network Policies: первый рубеж защиты
Без Network Policies сеть K8s — как офис без стен. Любой compromised pod может сканировать весь кластер.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
spec:
podSelector: {}
policyTypes:
- IngressНачните с deny-all, потом открывайте только нужное.
RBAC: минимум привилегий
Каждый ServiceAccount — только те права, которые реально нужны. Никаких cluster-admin для приложений.
- Используйте Role/RoleBinding для namespace-scoped доступа
- ClusterRole только для кросс-namespace операций
- Audit logs для всех RBAC действий
Защита Ingress от DDoS
Rate limiting на уровне Ingress Controller:
nginx.ingress.kubernetes.io/limit-rps: "10"
nginx.ingress.kubernetes.io/limit-connections: "5"WAF перед кластером — ModSecurity, Cloudflare, AWS WAF.
HPA для auto-scaling при spike нагрузки — но с лимитами!
Runtime Security
- Falco — обнаружение аномалий в runtime
- OPA/Gatekeeper — policy enforcement на admission
- Trivy, Anchore — сканирование образов в CI/CD
Вывод
Kubernetes security — это процесс, не продукт. Постоянный мониторинг, регулярные обновления, security audits.