Безопасность
Информационная безопасность
StormBPMN Enterprise обеспечивает высокий уровень информационной безопасности через многоуровневую систему защиты, включающую регулярное обновление зависимостей, сканирование уязвимостей и гибкие настройки доступа.
Принципы безопасности
- Минимальные привилегии - только необходимые права
- Глубокая защита - многоуровневая система безопасности
- Аудит всех действий - полное логирование операций
- Шифрование данных - защита паролей и конфиденциальной информации
Переменные окружения безопасности
Базовые настройки безопасности задаются через ENV переменные:
| Переменная | Описание | Пример значения | По умолчанию |
|---|---|---|---|
| STORM_ALLOWED_ORIGINS | Разрешенные источники запросов (CORS) | https://stormbpmn.company.com | * |
| STORM_DISABLE_SIMPLE_AUTH | Отключить встроенную авторизацию | true | false |
| STORM_DISABLE_ENV_IN_UI | Скрыть ENV переменные в админке | true | false |
| STORM_DISABLE_ANON_SHARING | Запретить анонимный доступ к диаграммам | true | false |
| JWTSECRET | Соль для шифрования паролей | Минимум 64 случайных символов | - |
| SESSION_EXPIRATION | Срок жизни сессии | 86400000 | 86400000 |
Рекомендации по безопасности
- STORM_ALLOWED_ORIGINS: Обязательно укажите конкретные домены вместо
*в production - JWTSECRET: Используйте криптографически стойкую случайную строку длиной не менее 64 символов — токены подписываются алгоритмом HS512, которому нужен ключ ≥512 бит. С коротким ключом вход пользователей упадёт с
WeakKeyException - STORM_DISABLE_ENV_IN_UI: Включите в production для скрытия конфиденциальных данных
Настройки в административной панели
Управление пользователями
| Параметр | Описание | Рекомендация для production |
|---|---|---|
| showRegistration | Показать форму регистрации | ❌ Отключить |
| showBasicLogin | Показать поля логин/пароль | ❌ При использовании OAuth2 |
| showCustomLoginButtonName | Кастомный текст кнопки входа | По требованию |
| customLoginButtonName | Текст на кнопке входа | "Войти через корпоративный аккаунт" |
Публичный доступ
| Параметр | Описание | Рекомендация для production |
|---|---|---|
| enableAnonSearchPage | Поиск для неавторизованных | ❌ Отключить |
| allDiagramsAnonAccess | Анонимный доступ ко всем диаграммам | ❌ Отключить |
Корпоративные настройки
| Параметр | Описание | Рекомендация |
|---|---|---|
| enableCommonAssets | Общие элементы архитектуры для всех команд | ✅ Включить для больших компаний |
| enableCommonRoles | Общие роли для всех команд | ✅ Включить для унификации |
| enableCommonUsers | Общая оргструктура для всех команд | ✅ Включить для централизации |
Аудит-логирование
Полное логирование всех действий пользователей — в консоль, в SIEM по Syslog или в выделенную базу TimescaleDB: Аудит-логирование.
Система авторизации
Корпоративная авторизация (OAuth2, Keycloak, Microsoft ADFS), проверка claims и встроенный вход вынесены в отдельную статью — Система авторизации.
Добавление собственных SSL-сертификатов
Проблема
Если вы используете свой MinIO, S3 или другой HTTPS-сервис с самоподписанным сертификатом, Java внутри контейнера может не доверять ему. Это приведёт к ошибке:
javax.net.ssl.SSLHandshakeException: PKIX path building failed
Решение
Необходимо смонтировать свой truststore.jks, заменив стандартный truststore Java.
Шаг 1. Создание truststore.jks
Если у вас есть файл сертификата (например, minio-ca.crt), выполните:
keytool -importcert \
-file minio-ca.crt \
-alias my-root-ca \
-keystore truststore.jks \
-storepass changeit \
-noprompt
Пароль truststore
Пароль changeit — стандартный для Java truststore. Можно использовать другой, но он должен совпадать в команде и при запуске.
Шаг 2. Путь к truststore в контейнере
Контейнер StormBPMN использует образ eclipse-temurin:11-jre-alpine. Путь к стандартному truststore:
/opt/java/openjdk/lib/security/cacerts
Проверка пути
Если монтирование не работает, проверьте актуальный путь командой:
docker run --rm eclipse-temurin:11-jre-alpine find /opt -name "cacerts" 2>/dev/null
Шаг 3. Запуск с заменой truststore
В docker-compose.yml:
services:
stormbpmn:
image: _ваш_образ_
volumes:
- ./truststore.jks:/opt/java/openjdk/lib/security/cacerts:ro
Или в командной строке:
docker run \
-v $(pwd)/truststore.jks:/opt/java/openjdk/lib/security/cacerts:ro \
_ваш_образ_
Результат
Java в контейнере будет использовать ваш truststore и доверять указанным сертификатам. Никаких изменений в переменных окружения не требуется.
Чек-лист безопасности
Обязательные настройки
Дополнительные меры
Связанная документация
- Конфигурация - полный справочник настроек
- Production-Ready - настройка для продакшена
- Мониторинг - метрики и алерты
Нужна помощь?
По вопросам безопасности обращайтесь к help@stormbpmn.com или вашему менеджеру.