Kubescape: как быстро сканировать Kubernetes и автоматизировать проверку безопасности
Быстрые ссылки
- Скачивание Kubescape
- Сканирование кластера
- Результаты сканирования
- Сканирование манифестов
- Офлайн-сканы
- Форматы вывода
- Заключение

Введение
Kubescape — инструмент от ARMO, который автоматизирует проверку конфигурации Kubernetes-кластеров на соответствие рекомендациям по жёсткой настройке, опубликованным NSA и CISA. Он фокусируется на конфигурационных рисках control plane и ресурсах Kubernetes, но не на уязвимостях внутри образов контейнеров.
Важно: регулярные сканы помогают обнаруживать и исправлять ошибки до того, как ими воспользуются злоумышленники.
Скачивание Kubescape
Kubescape распространяется как готовый бинарник для Windows, macOS и Ubuntu. Самый быстрый способ установить — воспользоваться автоматическим скриптом, который подберёт подходящую сборку и добавит её в PATH:
curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /bin/bashПосле установки выполните команду kubescape без аргументов, чтобы убедиться, что утилита доступна — вы увидите синопсис доступных команд.
Примечания по платформам:
- macOS/Linux: скрипт выше обычно подходит.
- Windows: используйте WSL или загрузите соответствующий релиз с GitHub и положите бинарник в папку, включённую в PATH.

Сканирование кластера
Kubescape использует стандартные kubeconfig-файлы для подключения к кластеру. Перед запуском укажите переменную окружения KUBECONFIG в вашей оболочке:
export KUBECONFIG=.kube/my-cluster.yamlЕсли переменная не задана или файл некорректен, Kubescape сообщит: “failed to load Kubernetes config”. Обновляйте переменную KUBECONFIG перед каждым сканированием, если вы работаете с несколькими кластерами.
Запуск сканирования производится командой scan. На момент написания этой инструкции в качестве фреймворка поддержан nsa:
kubescape scan framework nsa --exclude-namespaces kube-system,kube-publicФлаг --exclude-namespaces полезен, чтобы пропускать системные пространства имён, где вы, скорее всего, не будете исправлять найденные проблемы.
Первый запуск может занимать больше времени — инструмент скачивает определения фреймворка (набор тестов). После сканирования вы увидите цветной вывод в терминале с деталями найденных проблем.

Результаты сканирования
Каждый проваленный тест отображается отдельным блоком с перечислением подозрительных ресурсов, описанием проблемы и подсказкой по исправлению. Внизу отчёта — сводная таблица с перечнем тестов, количеством упавших ресурсов и общим процентом соответствия.
Некоторые из проверок, которые выполняет Kubescape (на основе списка NSA):
- Возможности эскалации привилегий
- Контейнеры в режиме privileged
- Контейнеры с опасными capabilities
- Открытая панель Kubernetes Dashboard
- Контейнеры, запускаемые как root
- Утечки учётных данных в конфигурациях
- Неправильно защищённая control plane
Запуск Kubescape даёт базовую картину соответствия кластера текущим лучшим практикам и помогает приоритизировать исправления.
Пример структуры вывода (без реальных значений):
- Название теста
- Описание проблемы
- Список ресурсов (Namespace/Kind/Name)
- Подсказка по исправлению
Критерии приёмки
- Выполнен скан по фреймворку nsa без ошибок загрузки конфигурации.
- Для всех найденных критических проблем созданы задачи в трекере.
- Сформирован отчёт в формате JSON/JUnit и сохранён в артефакты CI.
Сканирование манифестов
Kubescape умеет сканировать YAML-манифесты локально без подключения к кластеру. Это удобно для проверки конфигураций на этапе разработки и CI:
kubescape scan framework nsa k8s/*.yamlМожно указать URL (например, файл в Git), и Kubescape скачает его и просканирует. Для комплексного аудита всё же лучше сканировать сам кластер; манифесты применяются как дополняющий способ — «shift-left» в pipeline.
Рекомендация: включайте проверку манифестов в CI, чтобы предотвращать попадание новых проблем в репозиторий.
Офлайн-сканы
Kubescape по умолчанию работает онлайн, так как ему требуется загрузить определения тестов. Для защищённых сетей можно заранее скачать фреймворк и использовать его локально:
kubescape download framework nsa --output nsa.jsonЗатем сканируйте, указывая локальный файл:
kubescape scan framework nsa --use-from nsa.jsonФлаг --use-from заставляет Kubescape загрузить определения из указанного файла. Есть также --use-default, который пытается использовать локальный кеш в стандартном пути, если файл доступен. При отсутствии локального файла Kubescape попытается скачать свежие определения.
Советы по офлайн-режиму:
- Периодически обновляйте скачанный файл, чтобы тесты соответствовали актуальным рекомендациям.
- Храните файл в защищённом хранилище конфигураций и контролируйте доступ.
Форматы вывода
По умолчанию Kubescape выводит результаты в терминал, но поддерживает JSON и JUnit для интеграции со сторонними инструментами.
JSON:
kubescape scan framework nsa -f jsonJunit (XML):
kubescape scan framework nsa -f junitВывод отправляется в stdout независимо от формата. Чтобы сохранить отчёт в файл, используйте флаг -o:
kubescape scan framework nsa -f json -o report.jsonДля тихого режима (без прогресс-баров и лишних сообщений), полезного в CI, используйте флаг -s.
Интеграция в CI (пример GitHub Actions)
Ниже простой пример job, который запускает Kubescape и сохраняет JSON-отчёт как артефакт:
name: kubescape-scan
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Kubescape
run: curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /bin/bash
- name: Run Kubescape
run: kubescape scan framework nsa -f json -o kubescape-report.json
- name: Upload report
uses: actions/upload-artifact@v3
with:
name: kubescape-report
path: kubescape-report.jsonСоветы для CI:
- Запускайте скан в PR-пайплайе и блокируйте мерж при обнаружении критических проблем.
- Сохраняйте исторические отчёты для трендов и анализа регрессий.
- Для приватных CI используйте предварительно скачанный фреймворк.
SOP: еженедельный рабочий процесс по результатам сканирования
- Запустите скан на продакшн-кластерах и стейджинг.
- Экспортируйте отчёт в JSON и загрузите в систему трекинга.
- Классифицируйте находки по приоритету: Critical / High / Medium / Low.
- Назначьте владельцев для каждой High/Critical задачи.
- Запланируйте исправления и тесты регрессии.
- Повторно сканируйте исправленные ресурсы и закрывайте задачи только после валидации.
- Храните отчёты и метрики для анализа трендов.
Чек-листы по ролям
Администратор кластера:
- Запустить полное сканирование кластера еженедельно.
- Проверить и отключить контейнеры в privileged-mode.
- Ограничить capabilities и применить PodSecurityPolicy/Pod Security Admission.
Разработчик:
- Проверять манифесты через
kubescapeв локальной сборке/CI. - Не запускать контейнеры как root без веской причины.
- Стремиться к наименьшим привилегиям для сервис-аккаунтов.
Инженер безопасности:
- Интегрировать отчёты в систему трекинга и визуализации.
- Настроить оповещения при появлении Critical-выводов.
- Проводить периодические ревью фреймворков тестов.
Ментальные модели и эвристики
- Shift-left: проверяйте конфигурации до деплоя (CI).
- Defense-in-depth: Kubescape покрывает конфигурацию Kubernetes; комбинируйте с анализом образов и SCA.
- Приоритизация по Blast Radius: сначала исправляйте находки, которые дают наибольшую возможность доступа/эскалации.
Матрица рисков и возможные смягчения
- Критично (например, открытая Dashboard с RBAC=нет): немедленно ограничить доступ, включить аутентификацию/авторизацию, назначить задачу на исправление.
- Высокая (контейнеры как root, privileged): пересобрать/переконфигурировать под non-root, удалить privileged.
- Средняя (легкие конфигурационные нарушения): плановые исправления, мониторинг.
- Низкая (рекомендации по hardening): регламентные улучшения.
Дополнения и альтернативные подходы
- Контейнерные сканеры: Kubescape не ищет уязвимости в образах. Для этого используйте Trivy или docker scan и интегрируйте результаты в общий процесс.
- Дополнительные политики: можно комбинировать Kubescape с Open Policy Agent (OPA/Gatekeeper) для блокировки опасных конфигураций на этапе Admission.
- Аудит доступа: используйте логи аудита kube-apiserver и SIEM для обнаружения аномалий в поведении.
Когда Kubescape не подходит (ограничения)
- Если вам нужно сканировать только уязвимости в слоях образа — используйте специализированный инструмент для анализа образов.
- Для очень специфичных политик безопасности может потребоваться написание кастомных проверок либо использование OPA.
Глоссарий (в одну строку)
- kubeconfig — файл с конфигурацией доступа к Kubernetes-кластеру.
- PodSecurityPolicy / Pod Security Admission — механизмы для ограничения прав подов.
- JUnit — формат XML-отчётов для тестовых систем.
- CI — непрерывная интеграция (Continuous Integration).
Примеры тест-кейсов и приёмки
Тест: запуск Kubescape с фреймворком nsa и сохранение JSON-отчёта. Критерий приёмки: Exit code 0 (если нет критических находок) или генерация отчёта и загрузка в артефакты CI.
Тест: проверка, что в продакшн-кластере нет запущенных контейнеров в privileged-mode. Критерий приёмки: список упавших ресурсов пуст.
Заключение
Kubescape предоставляет простой и быстрый способ оценить безопасность конфигурации ваших Kubernetes-кластеров по рекомендациям NSA/CISA. Это не заместитель проверки образов, но ценный инструмент в наборе средств защиты: он обнаруживает конфигурационные риски, помогает автоматизировать их обнаружение в CI и формализовать процесс исправления.
Важно: сочетайте Kubescape с инструментами для сканирования образов и системами контроля доступа, чтобы получить полную картину безопасности.
Резюме:
- Установите Kubescape и запустите сканирование по
nsa. - Интегрируйте проверки в CI и используйте офлайн-файлы для изолированных сред.
- Применяйте чек-листы и SOP для ускорения реагирования на найденные проблемы.

Похожие материалы
Компьютер завис на экране загрузки — как исправить
Копирование масок в Camera Raw и Lightroom
Как убрать зелёный треугольник в Excel
Как понять, что видеокамеру взломали и как реагировать
Защита от троянов на Android