Обеспечение информационной безопасности
Предупреждение
Раздел в разработке
Обеспечение информационной безопасности
Мы серьезно относимся к обеспечению информационной безопасности при использовании нашего решения. Помимо регулярного обновления зависимостей, сканирования приложения сканерами уязвимости и устранение найденных уязвимостей, мы предоставляем важные настройки, которые позволяют существенно органичить возможности системы для неавторизованных пользователей.
Возможные настройки
В данном разделе перечислены общие настройки, которые могут быть связаны с обеспечением безопасности и удобства использования системы:
Переменные окружения
Настройки задаются с помощью 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..
Авторизация
Поддерживается 4 типа авторизации - 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", // Название нашего приложения. Может быть изменено в ENV переменной SYSLOG_SOURCE.
"subject": "kotov@bpmn2.ru", // Почта пользователя, соверщающего запрос
"subjectIP": "192.168.0.1", // IP-адрес пользователя. Проставляется при наличии заголовка X-Forwarded-For от прокси-сервера.
"object": "uaerhgae-aerj3234-egerg", // ID объекта, над которым совершается операция
"resourse": "diagram", // Тип объекта, над которым совершается операция. Список возможных значений: GET /api/v1/syslog/resources
"ctp": null, // Служебное поле
"action": "CHANGE" // Тип события. Возможные значения: [ GET, CREATE, CHANGE, DELETE ]
"tags": [
"storm",
"users_audit",
"iia",
null,
null
], // Служебные поля
"payload": {
"method": "POST", // Вызванный метод
"url": "/api/v1/diagram", // Вызванный URL
"request": { // Присланный запрос, уникальный объект для каждого URL
...
},
"response": { // Полученный ответ, уникальный объект для каждого URL
...
}
},
"result": "SUCCESSFUL" // Статус ответа. Возможные значения: [ SUCCESSFUL, CLIENT_ERROR, SERVER_ERROR ]
}
Настройка Syslog
Для включения SIEM-логирования в syslog необходимо установить следующие ENV-переменные:
Название | Описание | Значение |
---|---|---|
AUDIT_ENABLED | Флаг включения аудита запросов | true |
AUDIT_CHANNEL | Канал аудит логов | syslog |
SYSLOG_SERVERS | Список syslog серверов для стриминга (протокол TCP, формат сообщений RFC 3164) | localhost:514,192.168.78.53:601 (пример) |
SYSLOG_SOURCE | Название приложения (передается серверам и в поле source самого лога) | stormbpmn (по умолчанию) |