Безопасность¶
Состав поставки¶
Платформа поставляется контейнерным образом 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: в нём локальные пароли не создаются и локальный вход закрыт.