Поиск по сайту:

Как сканировать уязвимости Kubernetes с помощью Kubescape


Kubescape — это новый инструмент с открытым исходным кодом от ARMO, который позволяет автоматизировать сканирование кластера Kubernetes для выявления проблем безопасности. Kubescape проверяет ваш кластер на соответствие рекомендациям по усилению безопасности, опубликованным АНБ и CISA.

Вот как установить Kubescape и приступить к сканированию вашего кластера. Регулярные проверки могут помочь вам решить проблемы до того, как они будут использованы злоумышленниками.

Скачивание Кубескейпа

Kubescape в настоящее время распространяется в виде предварительно собранного бинарного файла для Windows, macOS и Ubuntu. Вы можете скачать его прямо со страницы релизов проекта на GitHub.

Существует также сценарий автоматической установки, который вы можете вставить в свой терминал. Это позволит получить правильный двоичный файл для вашей системы и добавить его к вашему пути.

curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /bin/bash

Попробуйте запустить kubescape, чтобы убедиться, что установка завершена. Вы увидите краткий обзор доступных команд.

Сканирование вашего кластера

Kubernetes подключается к вашему кластеру с помощью стандартных файлов конфигурации Kubectl. Установите переменную среды KUBECONFIG в вашей оболочке, чтобы она ссылалась на файл конфигурации для кластера, который вы хотите сканировать:

export KUBECONFIG=.kube/my-cluster.yaml

Kubescape сообщит, что «не удалось загрузить конфигурацию Kubernetes», если эта переменная не установлена или указанный файл недействителен. Обновляйте переменную KUBECONFIG каждый раз, когда запускаете Kubescape, если хотите сканировать несколько кластеров.

Сканирование запускается командой scan. Вам нужно указать структуру защиты, которую вы хотите сканировать. В настоящее время nsa — единственный поддерживаемый вариант.

kubescape scan framework nsa --exclude-namespaces kube-system,kube-public

Kubescape просканирует все ресурсы в вашем кластере, за исключением ресурсов в пространствах имен, опущенных флагом --exclude-namespaces. Здесь рекомендуется указать встроенные пространства имен Kubernetes, так как вы не сможете решить обнаруженные проблемы.

Ваше первое сканирование Kubescape может занять некоторое время, так как инструмент должен загрузить свои определения фреймворка. Они определяют тесты, по которым оценивается ваш кластер. После завершения сканирования вы увидите цветной вывод в своем терминале, в котором подробно описаны все обнаруженные проблемы.

Результаты сканирования

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

Kubescape проверяет более 20 возможных уязвимостей на основе списка, выявленного АНБ. В отчете АНБ содержится описание затронутых вопросов и обоснование их включения. Вот некоторые из ключевых проблем, которые проверяет Kubescape:

  • Возможности повышения привилегий
  • Контейнеры, работающие в привилегированном режиме
  • Контейнеры с опасными возможностями
  • Открытая панель управления Kubernetes
  • Контейнеры, работающие от имени root
  • Учетные данные, содержащиеся в файлах конфигурации
  • Неправильно защищенная плоскость управления

Запуск Kubescape позволяет проверить работоспособность вашего кластера в соответствии с текущими рекомендациями по передовой практике, что дает вам больше уверенности в том, что вы не подвергаете риску свои данные и рабочие нагрузки.

Сканирование файлов манифеста

Kubescape может работать без подключения к кластеру. Вы можете сканировать манифесты ресурсов, хранящиеся в виде локальных файлов YAML, что позволит вам проверить их безопасность, прежде чем применять их к вашему кластеру. Добавьте дополнительный аргумент после имени фреймворка, чтобы указать файлы, которые вы хотите сканировать:

kubescape scan framework nsa k8s/*.yaml

Вы можете использовать URL-адрес в качестве пути к файлу для сканирования файлов, хранящихся удаленно, например, в репозитории Git.

При проведении комплексного аудита безопасности лучше всего использовать режим сканирования кластера по умолчанию. Сканирование манифеста идеально встраивается в конвейеры непрерывной интеграции. При таком использовании вы можете избежать непреднамеренного появления новых уязвимостей при обновлении ресурсов и развертывании их в кластере.

Автономное сканирование

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. Добавьте флаг -f, чтобы указать желаемый режим:

kubescape scan framework nsa -f json
kubescape scan framework nsa -f junit

Последний вариант создает XML-файл, который может использоваться инструментами отчетов о тестировании, работающими с форматом Junit. Это позволяет загружать сканы Kubescape в существующие решения для создания тестовых отчетов для визуализации и агрегирования.

Вывод выводится в стандартный поток вывода вашего терминала независимо от формата отчета, который вы укажете. Добавьте флаг -o, чтобы указать путь к файлу для сохранения:

kubescape scan framework nsa -f json -o report.json

Обычные сообщения о прогрессе Kubescape можно отключить с помощью флага -s. Это полезно в сценариях непрерывной интеграции, когда вы не хотите засорять журналы заданий символами ASCII.

Заключение

Kubescape позволяет оценить безопасность ваших кластеров Kubernetes в соответствии с рекомендациями, опубликованными АНБ. Простой инструмент с открытым исходным кодом предоставляет единую команду для сравнения вашей среды с более чем 20 ключевыми проверками.

Kubescape не проверяет наличие уязвимостей внутри контейнеров, которые вы запускаете в своем кластере. Для этого вам понадобится другой инструмент, например docker scan или Trivy. Запуск механизма сканирования контейнеров вместе с Kubescape дает наиболее полное представление о состоянии безопасности вашей среды.