Как проверить права доступа через матрицу ролей и объектов

Проверка серверной авторизации по ролям, владельцам объектов и операциям, включая отрицательные сценарии.

Практическое решение · 3 мин чтения
Как проверить права доступа через матрицу ролей и объектов — tarasovcode
ТестированиеКак проверить права доступа через матрицу ролей и объектов

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

Что подготовить

  • Роли, операции и правила принадлежности объектов пользователям или организациям.
  • Тестовые учетные записи минимум двух независимых организаций и объекты с известными владельцами.
  • Описание публичных ресурсов, административных исключений и поведения при отсутствии сессии.

Порядок работы

  1. Составьте таблицу разрешенных и запрещенных сочетаний роли, операции и объекта. Отдельно отметьте неуточненные правила.
  2. Для каждого разрешения создайте соседний запрет: чужой объект, неподходящая роль, отозванное членство или отсутствующая сессия.
  3. Проверяйте сервер напрямую в разрешенной тестовой среде. Наличие или отсутствие кнопки проверяйте отдельно как поведение интерфейса.
  4. Добавьте вложенные ресурсы, массовые операции, выгрузки и фоновые задания. Права на родительский объект не должны теряться на другом маршруте.
  5. Сверьте ответы и фактическое состояние базы: запрещенный запрос не должен успеть изменить данные до возврата ошибки.

Разобранный пример

Редактор организации А может обновить документ А, но не документ Б. В тесте используется существующий идентификатор документа Б и тот же запрос обновления. Ожидаются отказ и неизменность документа Б. Замена на несуществующий идентификатор не проверяет межорганизационную изоляцию.

Как проверить результат

  • Запрещены чтение и изменение объектов другой организации во всех проверенных маршрутах.
  • Отзыв прав вступает в силу согласно установленной политике сессий и кеша.
  • Журналы фиксируют отказ без раскрытия содержимого закрытого объекта.

Если что-то пошло не так

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

Промпт для разбора ваших материалов

По правилам доступа составь матрицу ролей, операций и владельцев объектов. Для каждой разрешенной операции предложи отрицательные проверки. Укажи ожидаемый ответ и проверку отсутствия побочного эффекта. Работай только с описанной тестовой средой.

Частые вопросы

Достаточно ли проверить роль администратора?

Нет. Большинство ошибок проявляется на границах обычных ролей и между владельцами объектов.

Нужно ли различать отсутствие объекта и запрет?

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

Материал библиотеки решений Ильи Тарасова / TarasovWeb.

Какие оси включить в матрицу

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

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

Для каждого запрещённого действия заранее определите ожидаемый результат и отсутствие побочного эффекта. После отказа проверьте, что запись не изменилась, задача не попала в очередь и уведомление не отправилось. Используйте тестовые учётные записи и объекты с понятной принадлежностью, чтобы отказ из-за отсутствия объекта не скрывал отсутствие проверки прав.

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

О проекте

Практическая библиотека Ильи Тарасова и TarasovWeb. Telegram-канал · Личная страница · ВКонтакте.

#tarasovweb #ИльяТарасов