Заметки о Kubernetes Security и DevSecOps

DevSecOps для самых маленьких: 9\n. Башни на карте

12 октября 2026 г., 2 минуты

В стратегиях есть башни. Ты ставишь их по карте, они не бегают за врагом и не лезут первыми в драку. Стоят и смотрят. Пока всё тихо, ты их вообще не замечаешь. Как только кто-то входит в радиус — тревога и огонь. Runtime security для меня выглядит так же: фоновая стража, которая молчит, пока всё нормально, и реагирует, когда началось что-то странное.

Runtime security — безопасность во время выполнения. Всё, что происходит внутри контейнера прямо сейчас: кто-то запустил shell, полез в /etc/shadow, стучится на необычный IP. Сканирование смотрит на код и образы до запуска, а runtime — на то, что уже работает. Это последний рубеж: если атакующий всё-таки пробрался внутрь, runtime должен это заметить, а в идеале остановить.

Почему дефолт — дыра
В обычном кластере runtime-защиты нет. Контейнер запустился и делает что хочет: открывает reverse shell, читает чужие секреты, майнит крипту на твоих ресурсах. Узнаёшь ты об этом, когда приходит счёт за облако или звонят из банка. Дефолт — «работает и ладно», а не «работает и под наблюдением».

Два уровня, которые путают
Детект — заметить подозрительное поведение и записать: контейнер запустил bash, хотя обычно этого не делает; полез в /proc, хотя ему туда не надо. Enforce — заблокировать действие в реальном времени, убить процесс прямо на системном вызове. Это сложнее и эффективнее, но обнаружить запуск shell и запретить его — разные задачи. Начинать стоит с детекта: при плохо написанных правилах блокировка ломает рабочие вещи, а плохо они написаны почти всегда, пока только начинаешь.

Что отслеживать
Запуск shell. Приложение обычно не запускает bash или sh.
Чтение чувствительных файлов: /etc/shadow, ключи, сертификаты.
Сетевые соединения на необычные IP и порты, особенно egress в интернет.
Запись в системные директории, которые должны быть read-only.
Новые процессы, которых не было при старте.
Эскалация привилегий: попытки получить root, использовать capabilities, что-то смонтировать.
С чего начать: Falco в режиме детекта
Я однажды поставил Falco в тестовый кластер с community-правилами и за сутки получил столько алертов, что растерялся. Часть была шумом: приложение при старте честно запускало процессы, которые выглядели подозрительно. Часть оказалась реальными проблемами: кто-то ходил в /etc/shadow из контейнера, которому там делать нечего. Без runtime-защиты я бы об этом не узнал. Тогда я понял, что runtime начинается не с блокировок, а с наблюдаемости. Сначала увидеть, что происходит. Потом научиться не тонуть в ложных срабатываниях. И только потом включать enforce.

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update
helm install falco falcosecurity/falco \
  --namespace falco --create-namespace \
  --set falcosidekick.enabled=true \
  --set falcosidekick.config.telegram.token=<токен бота> \
  --set falcosidekick.config.telegram.chatid=<id чата>
Алерты лучше отправлять туда, где ты их увидишь: в Telegram, Slack или SIEM, а не в файл. Проверь, что башня стреляет:

# открой shell в тестовом поде, Falco должен это заметить
kubectl run test --image=busybox:1.36 -it --rm -- sh

# в другом терминале
kubectl logs -n falco -l app.kubernetes.io/name=falco -c falco
Дальше разбери, что нашлось: часть будет ложной, часть реальной. Постепенно добавляй свои правила под твоё приложение. Когда привыкнешь к детекту, пробуй enforce: на тестовом стенде, сначала одно правило, потом второе.

Инструменты
Falco — зрелый проект CNCF (Graduated): правила, eBPF, алерты в SIEM. С него я бы начал.
Tetragon от Cilium — eBPF-native, умеет не только детектить, но и блокировать.
Tracee — готовые eBPF-детекты от Aqua.
KubeArmor — runtime-политики для процессов, файлов и сети в Kubernetes.
Российские: Luntry (процессные и сетевые события, расследование инцидентов), Kaspersky Container Security (защита контейнерных приложений на этапах жизненного цикла). Сверь, какие runtime-функции входят в твою редакцию.
Runtime security — не про то, чтобы запретить всё, а про то, чтобы видеть, что происходит, и уметь остановить, если что-то пошло не так. Как башни: не мешают играть, просто следят за картой, пока не появится враг. Без неё остальные практики работают вполсилы: можно сканировать код, но если атакующий уже внутри, сканирование не поможет; можно харденить контейнеры, но reverse shell харденинг не остановит. Начни с Falco, потом алерты, потом разбор. Через месяц ты будешь знать, что происходит в твоих контейнерах, и спать спокойнее.

Напоминаю, что статьи мы обсуждаем в Telegram-канале. Недушный ИнфоБез.

Social Media
Telegram
Powered by BS5 Simply Blog and Bludit
Navigation