Вход и восстановление доступа
Проверяются регистрация, подтверждение контакта, вход, смена и восстановление пароля. Сценарий восстановления должен подтверждать пользователя и завершать старые активные сессии, если есть риск компрометации. Массовый подбор по утёкшим парам логин-пароль называют credential stuffing; защита учитывает частоту попыток, историю утёкших паролей, подозрительные устройства и оповещения владельца аккаунта.
Второй фактор усиливает вход. TOTP использует приложение-аутентификатор и резервные коды, Passkey — криптографический ключ устройства через WebAuthn. Выбор зависит от аудитории, поддерживаемых устройств и требований к восстановлению доступа.
- регистрация и подтверждение контакта
- вход и ограничение массовых попыток
- смена и восстановление пароля
- TOTP, Passkey и резервные коды
- оповещения о значимых действиях
Пользовательские сессии
После входа браузер получает сессионный идентификатор или токен. Проверяются его генерация, хранение, атрибуты cookie, срок жизни и завершение при выходе, смене пароля или роли. Для чувствительных действий может потребоваться повторное подтверждение пользователя.
Журнал помогает связать создание и завершение сессии с пользователем, устройством и событием, сохраняя полезные признаки без записи самого секретного токена. Так команда может разбирать подозрительные входы и принудительно завершать конкретные сессии.
Роли и доступ к объектам
Интерфейс может скрыть кнопку, но решение о доступе принимает сервер. Проверка проходит по матрице ролей и операций: просмотр, изменение, скачивание, экспорт, согласование и администрирование. Идентификаторы заказов, файлов и договоров проверяются от имени разных пользователей, а чужие данные остаются закрытыми.
Для сотрудников полезна периодическая рецертификация прав: руководитель или владелец системы подтверждает актуальные доступы. В 1С и SAP разделение полномочий помогает выявить сочетания ролей, при которых один сотрудник создаёт и сам подтверждает критичную операцию.
Изоляция организаций в SaaS
В B2B-сервисе один пользователь относится к компании, проекту или рабочему пространству. Идентификатор организации должен учитываться в запросах, фоновых заданиях, экспортах, поиске и кешировании. Проверка охватывает прямые ссылки, API, документы и административные функции.
Для PostgreSQL изоляцию можно дополнить Row-Level Security, когда правила доступа применяются на уровне строк базы. Этот механизм требует согласованной передачи контекста пользователя и тестов для каждой роли.
Журнал и проверка результата
Журнал действий фиксирует входы, изменения ролей, операции с документами и административные настройки. Полезная запись содержит время, пользователя, действие, объект и результат. Для секретов и токенов журнал сохраняет безопасную маску или хеш.
Приёмка выполняется контрольными сценариями для нескольких ролей: разрешённое действие проходит, запрещённое получает корректный отказ, старая сессия завершается, а событие появляется в журнале. Конкретные сценарии и фиксированная цена указаны на странице выбранной услуги.
Как подготовить роли и сценарии
Для начала нужен список реальных ролей: покупатель, партнёр, оператор, руководитель, администратор или сотрудник поддержки. Для каждой роли выбираются несколько объектов и действий, которые должны быть доступны, и действия, которые сервер обязан отклонить. Особенно полезны скачивание документа, экспорт, смена реквизитов и операция с чужим идентификатором.
Тестовые учётные записи лучше создавать отдельно для проверки. Так результаты легко повторить после исправления, а журнал показывает полный путь каждого сценария: вход, запрос, решение о доступе и итоговое действие.
Отдельно описываются переходы между ролями: назначение администратора, увольнение сотрудника, перенос пользователя в другую организацию и временный доступ поддержки. Для каждого перехода проверяются активные сессии, кеш прав, фоновые задания и ранее выданные ссылки на документы. Итоговый набор сценариев остаётся у команды для следующих релизов, приёмки доработок и периодической проверки прав сотрудников по заранее согласованному внутреннему расписанию.