Обеспечение информационной безопасности
Предупреждение
Раздел в разработке
Обеспечение информационной безопасности
Мы серьезно относимся к обеспечению информационной безопасности при использовании нашего решения. Помимо регулярного обновления зависимостей, сканирования приложения сканерами уязвимости и устранение найденных уязвимостей, мы предоставляем важные настройки, которые позволяют существенно органичить возможности системы для неавторизованных пользователей.
Возможные настройки
В данном разделе перечислены общие настройки, которые могут быть связаны с обеспечением безопасности и удобства использования системы:
Переменные окружения
Настройки задаются с помощью ENV-переменных, переданных в контейнер:
- STORM_ALLOWED_ORIGINS - определяет источник запросов из браузера (CORS). Значение по-умолчанию - *.
- STORM_DISABLE_SIMPLE_AUTH - запрещает авторизацию в системе по внутреннему механизму. Значение по-умолчанию - false.
- STORM_DISABLE_ENV_IN_UI - запрещает просмотр ENV-переменных в интерфейсе администратора системы. Значение по-умолчанию - false.
- STORM_DISABLE_ANON_SHARING - запрещает возможность поделиться диаграммой для анонимных пользователей. Значение по-умолчанию - false.
- JWT_SECRET - соль для паролей в базе.
Административная панель
Переменные в административной панели:
- showRegistraton - отображать или нет возможность регистрации в системы. По-умолчанию - true.
- showBasicLogin - отображать поля для входа с логином и паролем. По-умолчанию - true.
- showCustomLoginButtonName - отображать уникальный текст на кнопке входа. По-умолчанию - false.
- CustomLoginButtonName- текст на кнопке входа. По-умолчанию -"Войти".
- enableAnonSearchPage - разрешить отображение страницы поиска для неавторизированных пользователей. По-умолчанию - false.
- enableCommonAssets - сделать элементы архитектуры общими для всего сервера. По-умолчанию - false.
- enableCommonRoles - сделать роли общими для всего сервера. По-умолчанию - false.
- enableCommonUsers - сделать всех сотрудников и оргструктуру общей для всего сервера. По-умолчанию - false.
- allDiagramsAnonAccess - разрешить анонимный доступ ко всех диаграммам. По-умолчанию - false..
Авторизация
Поддерживается 3 типа авторизации - keycloak, oauth2, ldap. Рекомендуем использовать ouath2.
Настройка keycloak
В данном разделе перечислены настройки, которые связаны с авторизацией с использованием keycloak:
Переменные окружения
Осуществляется путем задания ENV-переменных:
- KEYCLOAK_ENABLED - включение интеграции. Значение по-умолчанию - false.
- KEYCLOAK_URL - URL авторизационного сервера. Используется для формирования ссылки для endpoint-а userInfo.
- KEYCLOAK_REALM - название REALMa. Используется для формирования ссылки для endpoint-а userInfo.
- KEYCLOAK_FRONT_REALM - используется для отдачи на фронт и правильного формирования кнопки.
- KEYCLOAK_FRONT_CLIENT_ID - используется для отдачи на фронт и правильного формирования кнопки.
- KEYCLOAK_FRONT_URL - используется для отдачи на фронт и правильного формирования кнопки.
Административная панель
Осуществляется путем указания значения переменных на странице администрирования /app/admin:
- showCustomSSOLoginButtonName - отображать кнопку входа через Keycloak. По умолчанию - false.
- customSSOLoginButtonName - текст на кнопке входа через Keycloak. По умолчанию - "Войти"
- showSSOLogin - отображать кнопку входа keycloak. По умолчанию - нет.
Настройка LDAP
При использовании LDAP окно авторизации остается таким же как и при базовой авторизации, но полученные данные проходят проверку в LDAP-сервере.
Переменные окружения
- LDAP_ENABLE - включить LDAP. По-умолчанию - false.
- LDAP_PRINCIPAL - учетная запись, от которой можно делать проверку (userDn) Ожидаемое значение похоже на "cn=admin,dc=example, dc=org"
- LDAP_URL - адрес сервера LDAP. Ожидаемое значение похоже на "ldap://localhost:389", "ldaps://localhost:636"
- LDAP_BASE - местоположение в каталоге, с которого начинается поиск. Ожидаемое значение похоже на"ou=SUPERGROUP,dc=example,dc=org"
- LDAP_PASSWORD - пароль учетной записи LDAP_PRINCIPAL.
Active directory kerberos SSO не поддерживается, только simple bind.
Настройка Oauth2
Самый простой и продвинутый способ авторизации. Задачется через административную панель:
- OAuthIsEnabled - включение кастомного провайдера Oauth.
- OAuthClientId - clientId приложения, зарегистрированного в кастомном провайдере Oauth.
- OAuthClientSecret - clientSecret приложения, зарегистрированного в кастомном провайдере Oauth.
- OAuthAuthorizeUri - URL авторизации в кастомном провайдере.
- OAuthUserInfoUri - URL получения информации о пользователе.
- OAuthTokenUri - URL для запроса токена.
- OAuthButtonLabel - текст на кнопке авторизации.
- OAuthRedirectUri - URL для редиректа в приложение ( укажите ваш базовый URL + /app/sigin).
Регистрация событий безопасности и интеграции с SIEM\лог-коллекторами
Мы предоставляем возможность получать информацию о всех операциях, выполняемых авторизированными пользователями в отдельном хранилище. Сейчас поддерживается Syslog как транспорт, сообщите менеджерам, если вам требуется другой транспорт, например Kafka.
Особенности
- SIEM-логирование работает только для авторизованных методов
- Мы маскируем авторизационные заголовки и пароли, их невозможно найти в логах.
- Мы не сохраняем большие элементы запросов (body диаграмм).
Принцип работы
Каждый запрос-ответ от пользователя формирует следующий объект:
{
"timestamp": "2007-12-03T10:15:30:55.000000", // временная метка в таймзоне сервера
"sessionId": "ergjieor-ergjniuo-qjwer", // уникальная ID сессии пользователя.
"forwarder": null, // пустота
"source": "stormbpmn", // название нашего приложения. Может быть изменено
"subject": "kotov@bpmn2.ru", // почта пользователя, соверщающего запрос.
"subjectIP": "192.168.0.1", // ip-адрес пользователя. Получается от прокси-сервера из заголовка X-Forwarded-For. Если заголовок отсутствует, то значение будет отсутствовать.
"object": "uaerhgae-aerj3234-egerg", // ID объекта, надо который совершается операция.
"resourse": "diagram", // тип объекта, над который совершается операция.
"ctp": null, //служебное поле
"tags": [
"storm",
"users_audit",
"iia",
null,
null
], //служебные поля
"payload": {
"method": "POST", //вызванный метод
"url": "/api/v1/diagram", //вызванный URL
"request": { //присланный запрос, уникальный объект для каждого URL
...
},
"response": { //полученный ответ, уникальный объект для каждого URL
}
},
"result": "sucess" // success если код ответа 2ХХ, в противом случае "error"
}
Настройка Syslog
Для включения SIEM-логирования в syslog необходимо установить следующие ENV-переменные:
- TBD - включает SIEM-логирование. По-умолчанию - false.
- TBD - указывает сервера syslog. Можно указать несолько через запятую. Протокол передачи данных - TCP, без SSL.