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

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

Около 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..

Авторизация

Поддерживается 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 3164open in new window)
localhost:514,192.168.78.53:601
(пример)
SYSLOG_SOURCEНазвание приложения
(передается серверам и в поле source самого лога)
stormbpmn
(по умолчанию)