Перейти к содержанию

Безопасность

Состав поставки

Платформа поставляется контейнерным образом neomsa-esb. В образе:

  • сервер на Quarkus, собранный в исполняемый *-runner.jar;
  • веб-интерфейс на React, встроенный в сервер при сборке;
  • справочник компонентов Camel и шаблонов интеграций.

Образ поставляется в двух вариантах: на базе RED OS и на базе Alpine. Платформа устанавливается Helm-чартом из комплекта поставки.

Контроль при выпуске

Каждый выпуск платформы проходит автоматические проверки:

Проверка Что проверяется
Состав ПО (SBOM) Спецификация зависимостей в формате CycloneDX
Анализ состава (SCA) Зависимости сервера и интерфейса по базам известных уязвимостей
Статический анализ (SAST) Исходный код сервера и интерфейса
Поиск секретов Исходный код и история изменений

Образ собирается без привилегированного режима. Тег образа связан с версией исходного кода, версии зависимостей зафиксированы. При учёте поставки записывайте и digest образа.

Устранение уязвимостей

Уязвимый компонент обновляется до минимальной версии, в которой уязвимость исправлена по бюллетеню (GHSA или CVE). Так в выпуск попадает как можно меньше посторонних изменений, но совместимость всё равно проверяется сборкой и запуском интеграций. Версии транзитивных зависимостей тоже фиксируются.

Модель доступа

  • Проверка ролей на сервере есть только у управления пользователями и ролями. Создавать, менять, собирать и удалять проекты может любой вошедший пользователь. Ограничивайте доступ к платформе на стороне провайдера учётных записей.
  • Сессионная cookie помечена Secure, платформа работает только по HTTPS (кроме localhost).
  • Платформа и сборщик работают под одной сервисной учётной записью. Её права ограничены namespace платформы: поды, сервисы, Deployment, Ingress, секреты и ConfigMap. Сборщик применяет манифесты интеграций с этими правами. Поэтому пользователь, который может собрать проект, через его манифесты может получить доступ к секретам namespace. Общий namespace не изолирует разработчиков друг от друга: пускайте в платформу только доверенных пользователей.
  • Уровень Pod Security privileged, нужный Filebeat из чарта, действует на все поды namespace, включая интеграции. Если это недопустимо, отключите Filebeat и собирайте логи внешним агентом.
  • Секреты интеграций (подключения к базам, брокерам) храните в секретах Kubernetes и подключайте через deployment.jkube.yaml, а не в application.properties. Файлы проекта попадают в git.

Рекомендации по установке

  • Задайте PLATFORM_PASSWORD до первого запуска или смените пароли admin и developer сразу после установки.
  • Не храните заполненные шаблоны секретов чарта в общем репозитории.
  • Публикуйте платформу только по HTTPS: через Ingress с TLS или через балансировщик, на котором завершается TLS.
  • Если вход идёт через провайдер, используйте режим sso: в нём локальные пароли не создаются и локальный вход закрыт.