Политики безопасности подов в Kubernetes

Представьте, что вы запускаете сотни контейнеров в своем кластере. Каждый под – это отдельная квартира в большом доме. Без правил любой сосед может зайти к другому, взять его вещи или, что хуже, поджечь общий коридор. Политики безопасности подов – это и есть правила дома, которые не дают хаосу захватить вашу инфраструктуру.

Если говорить технически, то политики безопасности подов – это набор правил и ограничений, которые вы применяете к подам в кластере Kubernetes. Они контролируют, что под может делать и к чему имеет доступ на уровне операционной системы и сети. Без них запущенный контейнер по умолчанию обладает почти теми же правами, что и сама нода, на которой он работает. Одна уязвимость в приложении – и злоумышленник получает контроль над всем узлом.

Зачем это нужно вам, даже если вы не большой банк?

Вы можете думать: «У меня маленький сервис, зачем мне эти сложности?» Ответ прост: потому что безопасность – это не про размер, а про риск. Взломанный под может стать точкой входа для атаки на всю систему, кражи данных или майнинга криптовалюты за ваш счет. Политики безопасности Kubernetes – это не роскошь, а базовый уровень гигиены, как мытье рук.

Представьте, что разработчик по ошибке запускает под с правами root. Это как выдать уборщику ключи от сейфа. Контроль доступа подов через политики автоматически заблокирует такое развертывание, не дав даже стартовать потенциально опасному контейнеру. Вы защищаетесь не только от злоумышленников, но и от человеческих ошибок своей команды.

Из чего состоят политики: не только одна PSP

Когда говорят о политиках безопасности подов, часто имеют в виду устаревший механизм Pod Security Policies (PSP). Kubernetes ушел от него, но сама концепция живет в новых, более гибких инструментах. Сегодня безопасность выстраивается комбинацией нескольких слоев.

Pod Security Standards и Admission Controllers

Это современная замена PSP. Вы определяете профили – «privileged», «baseline» или «restricted» – и настраиваете контроллер допуска (например, Pod Security Admission), который автоматически проверяет создаваемые поды на соответствие. Профиль «restricted», например, запрещает запуск от root, требует drop всех Linux capabilities и устанавливает строгие настройки контекста безопасности. Для вас это означает, что правила применяются централизованно и последовательно ко всем развертываниям.

Сетевые политики Kubernetes (Network Policies)

Они решают задачу изоляции подов на сетевом уровне. По умолчанию все поды в кластере могут общаться друг с другом. Сетевые политики Kubernetes позволяют вам сказать: «Поду из неймспейса frontend можно общаться только с подом базы данных на порту 5432, а доступ в интернет запрещен». Это минимизирует ущерб, если один из компонентов будет скомпрометирован.

Runtime-защита: AppArmor и Seccomp

Это более глубокий уровень. AppArmor – это профили безопасности Linux, которые ограничивают, какие файлы, порты и системные вызовы доступны процессу в контейнере. Seccomp фильтрует системные вызовы на еще более низком уровне. На практике это значит, что даже если злоумышленник попадет в контейнер, он не сможет, например, запустить новый процесс или открыть raw-сокет для сканирования сети.

RBAC для подов и контроль ресурсов

RBAC для подов определяет, какие сервисные аккаунты и с какими правами могут использоваться подами. А контроль ресурсов подов (limits/requests) не даст одному пода захватить все CPU и память ноды, вызвав отказ в обслуживании для соседей. Вы защищаете стабильность всего кластера.

Как это внедрить без боли: практические шаги

Не пытайтесь закрыть все сразу. Начните с малого, иначе вы заблокируете работу команды.

  1. Аудит. Запустите в неймспейсе разработки инструмент вроде kubeaudit или проверьте текущие развертывания через `kubectl describe pod`. Увидите, сколько подов работают с правами root или без ограничений ресурсов.
  2. Пилот. Включите Pod Security Admission в режиме аудита (audit) для одного неймспейса. Вы будете видеть предупреждения в логах, но поды не будут блокироваться. Это даст вам понять, что сломается.
  3. Профили. Начните применять профиль «baseline» в режиме enforce для новых развертываний в продакшене. Он блокирует очевидно опасные практики, но совместим с большинством приложений.
  4. Сеть. Реализуйте политику «deny all ingress and egress» по умолчанию для каждого неймспейса, а затем явно разрешайте только необходимое общение. Это золотой стандарт безопасности оркестрации.
  5. Доводка. Постепенно переходите к профилю «restricted» и добавляйте аннотации для AppArmor и Seccomp в наиболее критичные workloads.

Помните, что политики безопасности кластера – это не разовая настройка, а процесс. Они должны развиваться вместе с вашими приложениями. Их цель – не создать бюрократию, а дать вам уверенность. Уверенность в том, что ваша безопасность развертывания не зависит от случайной опечатки в манифесте, а ваш кластер – не дом без дверей, а надежная крепость с продуманной системой пропусков.

➤