BMSA
Безопасность — приоритет проекта

Простой интерфейс снаружи. Серьёзная защита внутри

Мы строим реальный продукт, поэтому обещаем только то, что держим. Ниже — как устроена защита и чем она честно лучше «тяжёлых» и самописных систем.

Три обещания, которые мы держим

Спокойствие и контроль, а не список алгоритмов

🏢

Изоляция по дизайну

Данные вашего бизнеса — в отдельном сейфе. Другой клиент BMSA физически не может их запросить. Это свойство архитектуры, а не «мы обещаем».

✉️

Мы не читаем данные в транзите

Между сервисами запрос идёт запечатанным конвертом — наши маршрутизаторы не видят содержимое. Инженер не «подсмотрит» ваши продажи.

⚡

Мгновенный отзыв доступа

Уволили сотрудника или потеряли телефон — нажали кнопку, доступ закрылся сразу, со всех устройств. Не «забыли отозвать пароль».

Чего мы не обещаем: «мы вообще не можем прочитать ваши данные» — это была бы неправда (аналитика и поиск работают с данными на сервере). И не пишем «мы ISO/SOC сертифицированы», пока нет сертификата. Честность — часть продукта.

Как это работает

Три рубежа изоляции (defense in depth)

Чтобы «запрос от имени чужого бизнеса» был технически невозможен, изоляция проверяется на трёх уровнях сразу.

A
Контекст из подписанного токена, а не из запроса
Какое пространство активно — решает серверно-подписанный токен сессии, а не то, что прислал браузер. Подставить чужой идентификатор бизнеса в запрос бесполезно — источник истины в токене.
B
Источник берётся из проверенной подписи сервиса
Внутренний шлюз определяет отправителя по криптографической подписи сервиса и игнорирует заголовки клиента. Вектор подмены источника закрыт на уровне протокола.
C
База данных сама отрезает чужие строки (RLS)
Даже если в коде кто-то забудет фильтр «только мой бизнес», PostgreSQL Row-Level Security не отдаст чужие данные. Это ремень безопасности поверх подушки.
Чтобы пробить изоляцию, атакующему нужно одновременно подделать подпись сервера и обойти защиту базы данных — два независимых замка. Подделка на стороне браузера бессмысленна: там только непрозрачный токен.
Права и доступ

Каждый видит ровно то, что ему положено

Роли с гибкими правами на трёх уровнях + принцип наименьших привилегий по умолчанию.

🧩
Уровень инструмента

Кассир не видит «Аналитику» — её просто нет в его интерфейсе.

📄
Уровень записи

«Только свои» / «назначенные мне» / «мой филиал» / «всё».

🔒
Уровень поля

Ставки и реквизиты коллег не показываются — и даже не уходят с сервера.

Для владельца

Центр безопасности — всё одним взглядом

Отдельный раздел, где видно состояние бизнеса: кто сейчас в системе, с каких устройств, кто что делал, когда был бэкап, у всех ли включён второй фактор.

  • ✓Журнал аудита с защитой от подчистки (спор с сотрудником решается записью)
  • ✓Устройства и активные сессии — принудительный выход в один клик
  • ✓Политики: требовать 2FA, тайм-аут сессии, кто может экспортировать
  • ✓Бэкапы, корзина и удаление пространства с grace-периодом
Для работника

«Моя безопасность» — только личное

Скромный личный раздел: мои сессии и устройства, двухфакторная аутентификация, смена пароля с проверкой на утечки, мои входы.

Работник не видит чужие устройства, чужой аудит, права других, бэкапы и экспорт — это владельческое.
Честно про угрозы

Что может пойти не так — и как мы это закрываем

Доступ к чужому бизнесу (IDOR)
Контур из подписанного токена + RLS в базе; идентификатор бизнеса никогда не берётся из запроса клиента.
Повышение прав внутри бизнеса
Роли с запретом по умолчанию, иерархия ролей, опасные операции — только у владельца, со свежим 2FA.
Кража сессии / уволенный сохранил доступ
Короткие токены, список устройств, мгновенный отзыв, сброс доверенных устройств при увольнении.
Перехват трафика
TLS 1.3 и одноразовые ключи на каждое соединение — записанный трафик не расшифровать задним числом.
Инсайдер читает ваши данные
Данные в транзите мы не видим; доступ к базе — только через аудируемый шлюз; ключи изолированы в хранилище.
Утечка данных через экспорт
Экспорт — только у владельца со вторым фактором; массовый экспорт сотрудником поднимает алерт.
Слабый или утёкший пароль
Двухфакторная аутентификация, проверка пароля на утечки, блокировка перебора, письмо о новом входе.
Потеря данных (сбой / ошибка)
Регулярные резервные копии с проверкой восстановления, корзина, grace-период на удаление.