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

Обеспечение информационной безопасности

Около 3 мин

Предупреждение

Раздел в разработке

Обеспечение информационной безопасности

Мы серьезно относимся к обеспечению информационной безопасности при использовании нашего решения. Помимо регулярного обновления зависимостей, сканирования приложения сканерами уязвимости и устранение найденных уязвимостей, мы предоставляем важные настройки, которые позволяют существенно органичить возможности системы для неавторизованных пользователей.

Возможные настройки

В данном разделе перечислены общие настройки, которые могут быть связаны с обеспечением безопасности и удобства использования системы:

Переменные окружения

Настройки задаются с помощью 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.