Введение
Kubescape – это инструмент с открытым исходным кодом для Kubernetes, разработанный компанией Armosec, используемый для анализа рисков, обеспечения безопасности, визуализации RBAC и сканирования уязвимостей образов. Кроме того, Kubescape способен сканировать манифесты Kubernetes для обнаружения потенциальных проблем конфигурации, которые могут подвергнуть ваши развертывания риску атаки. Он также может сканировать Helm-чарты, обнаруживать нарушения RBAC (контроль доступа на основе ролей), выполнять расчеты оценки риска и отображать тенденции риска со временем.
Основные функции Kubescape:
- Обнаружение неправильных конфигураций Kubernetes и предоставление помощи в устранении недостатков через портал Armosec Cloud.
- Анализ рисков и их динамика со временем через портал Armosec Cloud.
- Включает несколько стандартов безопасности, таких как ArmoBest, NSA, MITRE и Лучшие практики DevOps.
- Поддержка управления исключениями, позволяющая администраторам Kubernetes отмечать допустимые уровни риска.
- Интегрируется с различными инструментами, такими как Jenkins, рабочие процессы Github, Prometheus и т. д.
- Сканирование образов – сканирование образов на наличие уязвимостей и легкое просмотр, сортировка и фильтрация (какую уязвимость сначала закрыть).
- Упрощает сложность RBAC, предоставляя понятный граф, который показывает конфигурацию RBAC в вашем кластере.
Kubescape можно запустить различными способами:
- Через интерфейс командной строки (или CLI). Этот способ предпочтительно использовать в скриптах и различных автоматизациях, включая конвейеры CI/CD. Результаты могут быть загружены на портал облака Armosec для анализа.
- В виде cronjob внутри вашего кластера Kubernetes. В этом режиме Kubescape постоянно отслеживает изменения в вашем кластере Kubernetes и загружает результаты сканирования на портал облака Armosec. Эта функция работает только при развертывании Компонентов кластера Armo в вашем кластере DOKS.
- Через веб-интерфейс портала облака Armosec. Вы можете запускать сканирование конфигурации, сканирование образов, просматривать и проверять правила RBAC, настраивать фреймворки и т. д. Эта функция работает только при развертывании Компонентов кластера Armo в вашем кластере DOKS.
- Внутри вашей среды разработки Visual Studio Code. Таким образом, вы можете быстро обнаруживать проблемы на ранних стадиях разработки.
Kubescape использует различные фреймворки для обнаружения неправильных конфигураций, такие как:
Бесплатен ли Kubescape?
Да, инструментарий и версия для сообщества бесплатны навсегда, за исключением реализации облачного портала и, возможно, некоторых других расширенных функций. Также есть ограничение на максимальное количество рабочих узлов, которые вы можете сканировать в каждом кластере (до 10). Сохранение данных отчетов о сканировании ограничено одним месяцем в облачном портале Armo.
Смотрите тарифные планы для получения дополнительной информации.
Является ли Kubescape открытым исходным кодом?
Да, инструменты точно являются таковыми. Вы можете посетить домашнюю страницу GitHub Armo, чтобы получить более подробную информацию о каждой реализации компонента. Реализация облачного портала не является открытым исходным кодом.
В этом руководстве вы будете использовать Kubescape для анализа рисков поставки приложений Kubernetes (образов контейнеров, манифестов YAML Kubernetes). Затем вы узнаете, как принять соответствующие меры по устранению проблемы. Наконец, вы узнаете, как интегрировать Kubescape в конвейер CI/CD для сканирования уязвимостей на ранних этапах разработки.
Содержание
- Введение
- Требования
- Шаг 1 – Знакомство с Kubescape CLI
- Шаг 2 – Знакомство с порталом Armosec Cloud
- Шаг 3 – Настройка автоматических сканирований Kubescape для DOKS
- Шаг 4 – Использование Kubescape для сканирования уязвимостей конфигурации Kubernetes в конвейере CI/CD
- Шаг 5 – Исследование результатов сканирования Kubescape и устранение выявленных проблем
- Шаг 6 – Автоматическое запускание рабочего процесса CI/CD Kubescape
- Шаг 7 – Включение уведомлений в Slack для непрерывного мониторинга
- Заключение
- Дополнительные ресурсы
Предварительные требования
Для выполнения всех шагов из этого руководства вам понадобятся:
- A working
DOKS
cluster runningKubernetes version >=1.21
that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS). - A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
- Kubectl CLI для взаимодействия с
Kubernetes
. Следуйте этим инструкциям, чтобы подключиться к вашему кластеру с помощьюkubectl
иdoctl
. - Helm, чтобы установить Kubescape в кластер Kubernetes.
- Kubescape CLI для взаимодействия с Kubescape сканером уязвимостей.
- A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
- A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.
Шаг 1 – Знакомство с CLI Kubescape
Вы можете вручную сканировать уязвимости с помощью интерфейса командной строки kubescape
. CLI kubescape предназначен для использования в различных сценариях и автоматизации. Практический пример – это использование в конвейере непрерывной интеграции и поставки (CI/CD), реализованном с использованием различных инструментов, таких как Tekton, Jenkins, GitHub Workflows и т. д.
Kubescape предназначен для сканирования всего кластера Kubernetes с нуля (нагрузки, контейнеры и т. д.). При необходимости вы также можете ограничить сканирование определенным пространством имен. Другие функции включают сканирование хостов (рабочих узлов), сканирование локальных или удаленных репозиториев (например, GitHub), обнаружение неправильных настроек в манифестах Kubernetes YAML или в файлах Helm. Различные фреймворки могут быть выбраны с помощью команды framework
, такие как ArmoBest, NSA, MITRE и т. д.
При вызове CLI kubescape он загрузит (или обновит) базу данных известных уязвимостей на вашем локальном компьютере. Затем начнется процесс сканирования и сообщит о проблемах в определенном формате. По умолчанию будет выведена сводная таблица с использованием стандартного вывода или консоли. Kubescape также может генерировать отчеты в других форматах, таких как JSON, HTML, SARIF и т. д.
Вы можете выбрать отправку результатов на Портал облака Armosec с помощью флага --submit
, чтобы сохранить и визуализировать результаты сканирования позже.
Примечание: Необязательно отправлять результаты сканирования на портал облака Armosec. Большим преимуществом использования портала является возможность получения обзора, поскольку он предоставляет доступ к удобной панели инструментов, где можно просматривать все отчеты о сканировании и общий рейтинг риска. Это также помогает в долгосрочной перспективе с расследованиями и подсказками по устранению.
Некоторые примеры для попробовать с CLI kubescape:
-
Сканируйте весь кластер Kubernetes и создайте сводный отчет в консоли (стандартный вывод):
-
Используйте только определенное пространство имен для сканирования:
-
Исключите определенные пространства имен из сканирования:
-
Сканируйте определенное пространство имен и отправьте результаты на портал облачного сервиса Armosec:
-
Выполните сканирование кластера с использованием определенной структуры (например, NSA):
Kubescape способен сканировать хосты вашего кластера Kubernetes (или рабочие узлы) на наличие уязвимостей в ОС. Для активации этой функции вам необходимо передать флаг --enable-host-scan
в CLI kubescape. При включении этого флага kubescape развертывает сенсоры
в вашем кластере. Сенсоры создаются с использованием DaemonSets Kubernetes, которые развертывают поды на каждом узле вашего кластера для сканирования известных уязвимостей. После завершения процесса сканирования сенсоры удаляются из вашего кластера (включая связанные ресурсы Kubernetes).
CLI kubescape предоставляет справочные страницы для всех доступных опций. Нижеприведенная команда может быть использована для печати основной справочной страницы:
Вывод выглядит аналогично:
У каждой команды CLI kubescape (или подкоманды) также есть соответствующая справочная страница, которая может быть получена с помощью kubescape [команда] --help
.
Пожалуйста, посетите официальную страницу документации по CLI kubescape для получения дополнительных примеров.
Шаг 2 – Знакомство с порталом Armosec Cloud
Armosec предоставляет удобный облачный портал, где вы можете загружать результаты сканирования Kubescape и проводить анализ рисков. Это довольно полезно, поскольку вам захочется визуализировать и проверить каждый отчет о сканировании, принять соответствующие меры по устранению ситуации, а затем снова запустить сканирование, чтобы проверить результаты. Имея хорошее визуальное представление для каждого отчета и соответствующий балл риска, вы сможете долгосрочно проводить расследования и итерации, необходимые для устранения сообщенных проблем безопасности.
Вы можете создать учетную запись бесплатно, ограниченную 10 рабочими узлами и 1 месяцем хранения данных, что должно быть достаточно в большинстве случаев (например, для тестирования или разработки). Вы можете узнать больше о том, как создать облачную учетную запись kubescape
на официальной странице документации.
После создания учетной записи генерируется уникальный идентификатор пользователя, который вы можете использовать для загрузки результатов сканирования для этой конкретной учетной записи. Например, у вас может быть конкретная автоматизация, такая как конвейер CI/CD, где вам нужно загрузить результаты сканирования, поэтому требуется соответствующий идентификатор пользователя для различия между несколькими арендаторами.
Анализ оценки риска и тенденции
Для каждого отчета о сканировании, загруженного в вашу учетную запись Armosec Cloud, добавляется новая историческая запись, содержащая список найденных проблем и связанную оценку риска. Таким образом, вы можете получить тенденции и соответствующие графики, показывающие изменение оценки риска со временем. Кроме того, также генерируется список наиболее критических проблем безопасности на главной панели управления.
Ниже приведено изображение, иллюстрирующее эти функции:
Понимание значения оценки риска Kubescape
На каждом сканировании Kubescape проверяет ваши ресурсы на потенциальные угрозы безопасности с использованием внутренних контролов. Контроль Kubescape – это концепция, используемая инструментом kubescape
, чтобы обозначить тесты, используемые под капотом для проверки определенного аспекта вашего кластера (или сканируемых ресурсов). Пошагово, фреймворк представляет собой набор контролов или тестов, используемых внутренне для сканирования ваших конкретных ресурсов на наличие проблем. Таким образом, в зависимости от того, какой фреймворк вы используете, выполняется различный набор проверок (но некоторые тесты имеют общие черты). Наконец, в зависимости от фактора риска, связанного с каждым тестом, вычисляется окончательная оценка.
Итоговый балл – это положительное число в диапазоне от 0 до 100%. Более низкое значение указывает на лучший результат, в то время как более высокое значение указывает на худший. Так что, если вы хотите быть в безопасности, старайтесь добиться наименьшего возможного значения. На практике оценка риска, равная или меньше чем 30%, должна быть хорошей отправной точкой.
Помощь в устранении обнаруженных проблем безопасности
Еще одна полезная функция, предоставляемая порталом Armosec в облаке, – это помощь в устранении проблем безопасности. Это означает, что вы получаете рекомендацию о том, как исправить каждую проблему безопасности, обнаруженную сканером kubescape. Это очень важно, потому что упрощает процесс и закрывает петлю для каждой итерации, которую вам нужно выполнить, чтобы исправить каждую обнаруженную проблему безопасности.
Ниже приведена иллюстрация этого процесса:
Для каждой обнаруженной проблемы безопасности отображается значок инструмента ключа, на который можно нажать, чтобы получить помощь в устранении:
Затем открывается новое окно, в котором содержатся сведения о каждом затронутом объекте Kubernetes, выделенном зеленым цветом:
Вы можете щелкнуть на каждом элементе управления, таком как C-0018
, C-0030
, C-0086
и т. д., и изучить выделенные проблемы. Вам будут предложены рекомендации о том, как исправить каждую проблему безопасности. Остается следовать подсказкам и исправить каждую проблему безопасности.
Запуск кластерного сканирования через веб-интерфейс
Портал облачного Armo предоставляет возможность запуска сканирования кластера через веб-интерфейс, если график установки компонентов облачного Armo Helm развернут в вашем кластере DOKS (рассматривается в следующем шаге). Как конфигурация, так и сканирование образов могут быть запущены одним щелчком кнопки в портале. Чтобы эта функция работала, необходимо дождаться завершения сканирования кластера компонентами облачного Armo в фоновом режиме и загрузить результаты.
Запуск сканирования конфигурации производится путем перехода на страницу сканирования конфигурации и нажатия кнопки Сканировать. Ниже показано, как выполнить это действие:
Вы также можете установить или изменить текущий график для автоматического сканирования при необходимости, нажав кнопку График во всплывающем окне, которое появится после нажатия кнопки Сканировать. Используя то же окно, вы можете выбрать, какие контрольные фреймворки использовать для сканирования. Ниже показано, как выполнить задачи:
Шаг 3 – Настройка автоматического сканирования Kubescape для DOKS
Kubescape можно настроить для автоматического сканирования всего вашего кластера Kubernetes через определенный интервал времени или каждый раз при развертывании нового образа приложения. Для этого необходимо развернуть Компоненты кластера Armo в вашем кластере Kubernetes с помощью Helm. Также требуется учетная запись в Облачном портале Armosec, чтобы загружать и анализировать результаты.
В Helm-файле значений настраиваются интервалы запуска cron-задач, которые инициируют сканирование на уязвимости как всего кластера Kubernetes, так и образов контейнеров.
Предоставление Компонентов кластера Armo в DOKS
Шаги по развертыванию kubescape
в вашем кластере Kubernetes с использованием Helm:
- Добавьте репозиторий
Helm
и просмотрите доступныеcharts
:
Вывод будет выглядеть примерно так:
Примечание:Интересующей нас диаграммой является armo/armo-cluster-components
, которая установит компоненты Armo в вашем кластере Kubernetes. Пожалуйста, посетите страницу репозитория armo-helm, чтобы узнать больше о этой диаграмме.
- Получите свой идентификатор пользователя учетной записи Armo, используя CLI Kubescape (необходимо для следующего шага):
Выходные данные будут похожи на:
Примечание:
Если вы никогда не использовали CLI kubescape
для отправки результатов сканирования на портал облака Armosec, то вышеуказанная команда не будет работать. В этом случае вам нужно войти на портал и получить идентификатор учетной записи оттуда, как объяснено здесь.
- Установите компоненты кластера Armo Kubescape с помощью
Helm
– будет создано специальное пространство именarmo-system
(убедитесь, что замените заполнители<>
соответственно):
–create-namespace \
Примечание:
Используется определенная версия для Helm-чарта armo-cluster-components
. В данном случае была выбрана версия 1.7.15
, которая соответствует выпуску 1.7.15
компонентов кластера Armo (см. вывод из Шага 1.
). В целом, это хорошая практика зафиксировать конкретную версию. Это помогает иметь предсказуемые результаты и обеспечивает управление версиями через Git
.
Теперь проверьте, все ли развернуты и работают компоненты кластера Armo:
Выходные данные будут похожи на:
Все компоненты кластера Armo должны быть развернуты и работать.
- Наконец, через несколько минут вы должны сможете видеть отчеты о сканировании вашего кластера, доступные в облачном портале, например:
- Результаты сканирования конфигурации:
- Результаты сканирования изображения:
Результаты визуализации RBAC:
Для получения дополнительной информации посетите страницу сканирования уязвимостей кластера в официальной документации.
Настройка значений Helm для диаграммы компонентов кластера Armo
Вы можете изменить поведение диаграммы компонентов кластера Armo, отредактировав файл значений Helm, предоставленный в этом руководстве.
- Следующие параметры можно изменить:
- Интервалы сканирования через значения
armoScanScheduler
иarmoKubescapeScanScheduler
.
Триггер нового сканирования изображения через значение triggerNewImageScan
.
Полный список значений, которые можно настроить под свои нужды, доступен в файле официальных значений Helm-чарта.
Для применения изменений вам необходимо обновить текущую версию Helm-чарта через (убедитесь, что замените заполнители <>
соответственно):
Какие преимущества вы получаете от внедрения инструмента сканирования соответствия безопасности в ваш CI/CD пайплайн и избегаете неприятных ситуаций в производственной среде?
Всё начинается на уровне основ, где начинается разработка программного обеспечения. В общем случае вы захотите использовать отдельное окружение для каждого этапа. Так, на начальных этапах разработки, когда код приложения меняется очень часто, вы должны использовать отдельное развёрнутое средство разработки (обычно называемое нижней средой). Затем приложение становится всё более уточнённым в среде QA, где команды QA выполняют ручное и/или автоматизированное тестирование. Затем, если приложение получает одобрение от команды QA, его продвигают в верхние среды, такие как стейджинг, и наконец, в продакшен. В этом процессе, когда приложение продвигается из одной среды в другую, работает отдельная конвейерная линия, которая непрерывно сканирует артефакты приложения и вычисляет оценку уровня безопасности. Если оценка не соответствует определенному порогу, конвейер сразу же завершается неудачей, и продвижение артефактов приложения в продакшен останавливается на ранних этапах.
Таким образом, инструмент сканирования безопасности (например, kubescape) действует как преграда, останавливая нежелательные артефакты в вашей продакшен-среде еще на ранних этапах разработки. Точно так же, конвейерные линии верхних сред используют kubescape
для разрешения или запрета артефактов приложения на вход в конечный продакшен-этап.
Реализация рабочего процесса GitHub Actions CI/CD
На этом этапе вы узнаете, как создать и протестировать образец конвейера непрерывной интеграции и поставки с интегрированным сканированием на предмет уязвимостей с использованием рабочих процессов GitHub. Чтобы изучить основы использования действий GitHub с Kubernetes DigitalOcean, обратитесь к этому учебному пособию.
Предоставленный в следующем разделе конвейер создает и разворачивает приложение game-2048-example из репозитория kubernetes-sample-apps DigitalOcean.
- На высоком уровне пример рабочего процесса CI/CD, предоставленный в репозитории Kubernetes-sample-apps, состоит из следующих этапов:
- Этап сборки и тестирования приложения – создает основные артефакты приложения и запускает автоматические тесты.
- Этап сканирования Kubescape – сканирует известные уязвимости в манифестах YAML Kubernetes, связанных с приложением. Он выступает в качестве ворот и завершающее состояние конвейера (пройдено/не пройдено) зависит от этого шага. В случае сбоя также отправляется уведомление в Slack.
- Этап сборки и публикации образа приложения – создает и помечает образ приложения с использованием последнего SHA коммита git. Затем образ отправляется в DOCR.
Этап развертывания приложения – развертывает приложение в Kubernetes (DOKS).
Ниже приведена диаграмма, иллюстрирующая каждую задачу из конвейера и связанные с ней действия (показана только соответствующая конфигурация):
- Примечание:
- В случае проектов, основанных на
kustomize
, лучше всего отображать окончательный манифест с помощью командыkubectl kustomize </путь/к/файлу/kustomization>
, чтобы захватить и отсканировать все (включая удаленные ресурсы). С другой стороны, может быть сложно определить, какой ресурс Kubernetes нужно патчить. Это связано с тем, что итоговый файл манифеста состоит из всех ресурсов, которые должны быть применены. Вот как работает Kustomize – он собирает все фрагменты конфигурации из каждого наложения и применяет их поверх базы для построения окончательного составного.
Вы также можете указать Kubescape
сканировать весь каталог, где хранятся ваши конфигурации kustomize
(текущее руководство полагается на этот подход). Таким образом, легче определить, какой ресурс нужно исправить в вашем репозитории. Удаленные ресурсы, используемые kustomize, должны быть исправлены в источнике. Кроме того, секреты Kubernetes и ConfigMaps, созданные с помощью kustomize
, не захватываются.
Как можно прервать конвейер, если определенный уровень соответствия безопасности не достигнут?
Клиентский интерфейс Kubescape предоставляет флаг с именем --fail-threshold
для этой цели. Этот флаг коррелирует с общим баллом риска, рассчитанным после каждого сканирования. Вы можете завершить или пропустить конвейер на основе значения порога и остановить развертывание приложения, если условия не выполнены.
Ниже приведена схема потока для примера CI/CD конвейера, использованного в этом руководстве:
- Пожалуйста, следуйте нижеприведенным шагам, чтобы создать и протестировать рабочий процесс GitHub CI/CD для
kubescape
, предоставленный в репозитории GitHub kubernetes-sample-apps: - 1. Сделайте форк репозитория GitHub kubernetes-sample-apps.
SLACK_WEBHOOK_URL
– содержит ваш URL веб-крючка для входящих Slack, используемый для уведомлений о сканировании kubescape.- Перейдите на вкладку Действия вашего форкнутого репозитория и выберите рабочий процесс Пример CI/CD Kubescape игры 2048:
A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:
Нажмите кнопку Запустить рабочий процесс и оставьте значения по умолчанию:
Пайплайн завершится с ошибкой, когда выполнится задача kubescape-nsa-security-check. Это ожидаемо, потому что значение порога по умолчанию 30
для общего риска ниже желаемого значения. Вы также должны получить уведомление в Slack с подробностями о запущенном рабочем процессе:
На следующем этапе вы узнаете, как исследовать отчет о сканировании kubescape
, чтобы исправить проблемы, снизить оценку риска и пройти конвейер.
Шаг 5 – Исследование результатов сканирования Kubescape и исправление сообщенных проблем
В случае недостижения порогового значения оценки риска, рабочий процесс GitHub game-2048 завершится с ошибкой, и будет отправлено уведомление в Slack с дополнительными подробностями.
Рабочий процесс game-2048 выполняет одну проверку безопасности (локальное сканирование образов не поддерживается) – проверки на неправильную конфигурацию манифестов Kubernetes. Для этой цели используется задание kubescape-nsa-security-check. Используемая эквивалентная команда kubescape
выглядит так – kubescape scan framework nsa /путь/к/проекту/kubernetes/манифесты
.
Ниже приведен фрагмент основной логики задания kubescape-nsa-security-check:
–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
Вышеприведенная конфигурация указывает CLI Kubescape начать новое сканирование всех манифестов Kubernetes, находящихся в каталоге kustomize/
, используя фреймворк NSA. Она также определяет уровень порога для использования с помощью флага -t и отправку окончательных результатов на портал облачного сервиса Armo (флаг –submit в сочетании с –acount).
Таким образом, снижение значения оценки риска и успешное завершение рабочего процесса состоит в исследовании и устранении проблем, сообщенных заданием kubescape-nsa-security-check. Далее вы узнаете, как решить проблемы безопасности, указанные в этом задании.
A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):
Для проверки отчета о статусе вы можете щелкнуть ссылку на результаты сканирования Kubescape из полученного уведомления в Slack. Затем нажмите на кнопку сканирования REPOSITORIES SCAN в левом меню на портале облачного сервиса Armo. Теперь выберите запись kubernetes-sample-apps из списка:
После сбора всей информации из отчета о сканировании вы можете приступить к редактированию файла deployment.yaml из вашего репозитория (находящегося в подкаталоге game-2048-example/kustomize/resources
). Исправления уже внесены, вам просто нужно раскомментировать последние строки в файле. Окончательный файл deployment.yaml
должен выглядеть следующим образом:
# Замените заполнители `<>` информацией о вашем реестре Docker
- Примечание:
Рекомендации C-0055 были опущены в этом примере для простоты. Вы можете узнать больше о безопасном режиме вычислений в Kubernetes здесь. - Что изменилось? Были применены следующие исправления безопасности:
readOnlyRootFilesystem
– запускает образ контейнера в режиме только для чтения (нельзя изменять файлы с помощьюkubectl exec
в контейнере).runAsNonRoot
– запускает как пользователь, отличный от root, определенный директивой USER из Dockerfile проекта game-2048 .
allowPrivilegeEscalation
– установка allowPrivilegeEscalation в false гарантирует, что ни один дочерний процесс контейнера не сможет получить больше привилегий, чем его родитель.
capabilities.drop
– Чтобы сделать контейнеры более безопасными, вы должны предоставить контейнерам наименьшее количество привилегий, необходимых для запуска. На практике вы отбрасываете всё по умолчанию, а затем пошагово добавляете требуемые возможности. Вы можете узнать больше о безопасности контейнеров в этой статье, написанной Armosec.
A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:
- Наконец, зафиксируйте изменения для файла deployment.yaml и отправьте их в основную ветку. После ручного запуска рабочего процесса он должен успешно завершиться на этот раз:
- Проверьте, имеет ли развертывание game-2048 файловую систему только для чтения (неизменяемую), записав файл приложения index.html файл:
Проверьте, работает ли контейнер от имени не-root пользователя (должно быть выведено целое число, отличное от нуля – например, 1000
):
Проверьте, работает ли контейнер от имени не-root пользователя (должно быть выведено целое число, отличное от нуля – например, 1000
):
Если все проверки пройдены успешно, то вы успешно применили необходимые рекомендации по безопасности.
Бывают ситуации, когда вы не хотите, чтобы окончательный оценочный балл был затронут некоторыми сообщенными проблемами, которые ваша команда считает безопасными для игнорирования. Kubescape предлагает встроенную функцию управления исключениями и преодоления этой ситуации.
A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.
Вы можете узнать больше об этой функции здесь.
- Kubescape для IDE
- Kubescape предлагает поддержку интеграции с IDE через следующие расширения:
Расширение для Visual Studio Code.
Вышеперечисленные плагины помогут вам обнаруживать и исправлять проблемы на ранних этапах разработки, тем самым устраняя разочарование, затраты и уязвимости в системах производства. Кроме того, это помогает сократить количество итераций и снизить человеческие усилия в долгосрочной перспективе. В качестве примера, для каждой сообщенной проблемы безопасности вашей автоматизации CI/CD вам нужно вернуться и исправить проблему в вашем коде, зафиксировать изменения, дождаться повторного выполнения автоматизации CI/CD, а затем повторить в случае сбоя.
Вы можете узнать больше о этих функциях, перейдя на страницу документации Kubescape, затем ищите в разделе ИНТЕГРАЦИИ.
Шаг 6 – Автоматическое запуск Цикла Рабочего Процесса Kubescape CI/CD
Вы можете настроить рабочий процесс для автоматического запуска при каждом фиксации или PR против основной ветки, раскомментировав следующие строки в начале файла game-2048-kubescape.yaml:
После редактирования файла сохраните изменения в вашу основную ветку, и вы будете готовы к работе.
Шаг 7 – Включение уведомлений в Slack для непрерывного мониторинга
Автоматизация сканирования уязвимостей, которую вы реализовали до сих пор, является хорошей отправной точкой, но не идеальной. Почему?
Одна из проблем текущего подхода заключается в том, что вы никогда не знаете, когда будут сообщены о новых проблемах для активов, которые вы уже развернули в ваших средах. Другими словами, вы оценили риски безопасности и приняли меры по устранению проблем в один конкретный момент времени – когда была выполнена ваша автоматизация CI/CD.
Но что, если в это время будут сообщены о новых проблемах, и ваше приложение снова будет уязвимым?
Функция мониторинга Kubescape помогает вам решать новые уязвимости, которые постоянно раскрываются. В сочетании с интеграцией в Slack, вы можете немедленно принимать меры по устранению недавно раскрытых проблем, которые могут повлиять на ваше приложение в производственной среде.
- Портал облачного решения Armo поддерживает интеграцию с Slack для отправки оперативных оповещений после каждого сканирования кластера. Для этой функции требуется установка Helm-чарта облачных компонентов Armo в вашем кластере DOKS, как это объясняется в Шаге 3 – Настройка автоматических сканирований Kubescape для DOKS.
- Включив уведомления в Slack, вы будете получать важные уведомления о выявленных уязвимостях в вашем кластере DOKS, таких как:
- Уязвимости рабочего узла (на уровне ОС).
Уязвимости образов контейнеров.
- Неправильные настройки Kubernetes для различных ресурсов, таких как развертывания, поды и т. д.
- Сначала вам нужно создать приложение Slack. Затем вам нужно предоставить следующие разрешения вашему Slack Bot на странице OAuth & Permissions:
channels:join
– Присоединиться к общедоступным каналам на рабочем пространстве.channels:read
– Просмотр основной информации об общедоступных каналах на рабочем пространстве.groups:read
– Просмотр основной информации о закрытых каналах, к которым было добавлено ваше приложение Slack.chat:write
– Отправлять сообщения от имени @< Имя вашего приложения Slack >.
im:read
– Просмотр основной информации о прямых сообщениях, к которым было добавлено ваше приложение Slack.
mpim:read
– Просмотр основной информации о групповых прямых сообщениях, к которым было добавлено ваше приложение Slack.
Затем перейдите на страницу настроек вашей учетной записи в облаке Armo (иконка шестеренки в правом верхнем углу). Оттуда выберите страницу Интеграции, а затем Slack.
Теперь вставьте ваш токен OAuth Slack Bot (можно найти на странице OAuth & Permissions на странице вашего приложения Slack) в поле ввода Вставить токен. Наконец, выберите способ уведомления и канал Slack, куда должны быть отправлены оповещения. Нажмите кнопку Установить уведомления, и вы готовы. На рисунке ниже показаны подробности:
После настройки интеграции с Slack вы должны получать периодические уведомления после каждого сканирования кластера на указанном канале:
Если вы получаете уведомления, аналогичные приведенным выше, значит, вы успешно настроили интеграцию Slack с Armosec Kubescape.
В этом руководстве вы узнали, как использовать один из самых популярных инструментов для сканирования уязвимостей Kubernetes – Kubescape. Вы также узнали, как выполнять сканирование кластера и репозитория (манифесты YAML) с помощью Kubescape CLI. Затем вы узнали, как интегрировать инструмент сканирования уязвимостей в традиционный конвейер CI/CD, реализованный с использованием рабочих процессов GitHub.
Наконец, вы узнали, как исследовать отчеты о сканировании уязвимостей, применять исправления для устранения проблемы и снизить оценку риска до минимума на практическом примере – приложение game-2048 из репозитория kubernetes-sample-apps.
- Узнайте больше
- Вы можете узнать больше, прочитав следующие дополнительные ресурсы:
- Использование инструмента сканирования уязвимостей Snyk
- Лучшие практики безопасности Kubernetes от Armo
- Обнаружение проблем безопасности заранее от Armosec
- Обеспечение безопасности ваших развертываний Kubernetes от Armosec
- Узнайте больше о сканерах хостов Armosec
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool