Kubernetes Network Policies для защиты подов

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

kubernetesnetwork policiesnetworkpolicy

👁 В Kubernetes безопасность — это не только настройка RBAC и ограничение прав пользователей. Network Policies — это мощный инструмент для контроля трафика между подами, который позволяет ограничить, какие поды могут общаться друг с другом. Это ключевая часть для защиты микросервисов и создания изолированных сред.

📝 Пример конфигурации Network Policy, которая разрешает доступ только к определенным подам через HTTP:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-http
  namespace: default
spec:
  podSelector:
    matchLabels:
      app: myapp
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 80

📌 Что это делает:

  • podSelector: matchLabels: app: myapp — выбирает поды, к которым применяется правило (в данном случае это поды с лейблом app=myapp)
  • ingress — это входящий трафик, то есть кто и с каких подов может подключаться
  • from: podSelector: matchLabels: role: frontend — трафик разрешен только от подов с лейблом role=frontend
  • ports: - protocol: TCP port: 80 — разрешает только трафик на порт 80 (HTTP) через TCP

❗️ Если используешь Cilium или Calico как CNI, они могут предоставить более гибкие и мощные возможности для политики безопасности, включая сетевые метки и ограничения.

tags: #k8s #безопасность #сети

❤️ @recura_tech

Скриншот: YAML-конфигурация Kubernetes NetworkPolicy (allow-http) в тёмной теме терминала, видны podSelector, ingress, ports и логотип RECURA.
Код NetworkPolicy в примере — правило allow-http для namespace default.

Читайте так же