Как защитить Kubernetes от выстрела в ногу с помощью KubeArmor

20 июн 2026
2,624
530
17
4 дня

Представьте ситуацию: злоумышленник нашел уязвимость в вашем приложении и получил доступ к контейнеру. Первым делом он попытается прочитать /etc/shadow, установить nmap или залезть в папку с сертификатами. Стандартные механизмы Kubernetes (Network Policies) тут не помогут — они контролируют трафик, а не то, что происходит внутри процесса.

Обычно для защиты на уровне системы используют AppArmor или SELinux. Но любой, кто пробовал писать профили для SELinux вручную, знает, насколько это больно. KubeArmor берет эту сложную работу на себя. Это Cloud-Native решение, которое ограничивает поведение подов и контейнеров на системном уровне, используя современные технологии ядра Linux.

Что умеет KubeArmor

Проект фокусируется на концепции Least Permissive Access. Проще говоря, контейнеру разрешается делать только то, что ему действительно нужно для работы. Все остальное блокируется «на корню».

KubeArmor управляет тремя основными аспектами:

Реклама
  1. Запуск процессов. Можно запретить выполнение любых бинарников, кроме основного приложения. Никаких apt-get install или curl в рантайме.
  2. Доступ к файловой системе. Вы можете закрыть доступ к чувствительным путям вроде /etc, .ssh или папкам с логами и конфигами.
  3. Сетевые операции. Речь не о трафике между подами, а о системных вызовах на открытие сокетов или биндинг портов.

Интересно, что инструмент работает не только в Kubernetes. Его можно запустить на обычных виртуальных машинах или Bare-metal серверах. Это полезно, если у вас гибридная инфраструктура и вы хотите единый подход к безопасности везде.

Как это устроено внутри

Архитектура проекта опирается на LSM (Linux Security Modules). Это механизмы внутри ядра, которые проверяют права доступа перед выполнением системного вызова.

Схема архитектуры KubeArmor

KubeArmor выступает в роли оркестратора для этих модулей. Он умеет работать с:

  • AppArmor (дефолт для Ubuntu/Debian)
  • SELinux (для RHEL/CentOS)
  • BPF-LSM (самый современный вариант на базе eBPF)

Последний пункт особенно важен. eBPF позволяет писать гибкие правила безопасности без пересборки ядра и с минимальными накладными расходами. KubeArmor использует eBPF не только для блокировки, но и для глубокого мониторинга. Вы получаете детальные алерты с контекстом: какой именно под, в каком неймспейсе и какой процесс попытался нарушить политику.

Практические кейсы

Давайте посмотрим, как выглядят политики KubeArmor. Они описываются в привычном YAML-формате Kubernetes.

Например, мы хотим запретить выполнение любых команд в контейнере, кроме тех, что лежат в /usr/bin/. Это моментально ломает большинство скриптов взломщиков, которые пытаются скачать софт в /tmp.

apiVersion: security.kubearmor.com/v1
kind: KubeArmorPolicy
metadata:
  name: restrict-exec-to-bin
spec:
  selector:
    matchLabels:
      app: my-app
  process:
    matchDirectories:
      - dir: /usr/bin/
        recursive: true
  action: Block

Другой частый сценарий — защита сертификатов. Если ваше приложение использует TLS-ключи, их стоит скрыть от всех процессов, кроме основного. С KubeArmor это делается парой строк в секции file.

Проект также помогает соответствовать стандартам безопасности вроде MITRE или CIS Benchmark. В документации есть готовые наборы правил, которые закрывают типовые дыры в защите инфраструктуры.

Почему это стоит попробовать

KubeArmor сейчас находится в песочнице CNCF (Cloud Native Computing Foundation). Это хороший знак: проект развивается по открытым стандартам и имеет поддержку сообщества.

В отличие от того же Falco, который в основном занимается обнаружением (detection), KubeArmor делает упор на предотвращение (enforcement). Он не просто скажет вам «кто-то читает пароли», а физически не даст этого сделать.

Кому проект пригодится в первую очередь:

  • Финтех и проекты с высокими требованиями к безопасности (PCI DSS и прочее).
  • Командам, которые хотят внедрить Zero Trust на уровне процессов.
  • Тем, кто устал бороться с конфигурацией SELinux в каждом образе.

Конечно, есть и нюансы. Внедрение таких инструментов требует осторожности: если ошибиться в политике, можно «окирпичить» легитимное приложение. Но KubeArmor умеет работать в режиме аудита, когда нарушения только логируются, но не блокируются. Это позволяет отладить правила перед тем, как включать жесткую блокировку.

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.