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

Перевоплощение

Перевоплощение — механизм, позволяющий администратору (или пользователю с соответствующими правами) работать в системе от имени другого пользователя. Перевоплотившийся видит то же, что видит целевой пользователь; используется для отладки прав, настройки интерфейса и поддержки. Не путать с замещением: замещение передаёт права, а перевоплощение создаёт новую сессию от имени целевого пользователя. Документ описывает права и порядок их проверки, REST API начала и завершения, механику JWT-сессии, аудит, влияние конфиденциальности и шифрования, интерфейс и действующие ограничения.

Права на перевоплощение и порядок их проверки

Право перевоплощаться можно получить тремя способами:

# Способ Условие
1 Системная группа «Администраторы» Пользователь в группе Administrators, и группе не выдано спецправо DENYIMPERSONATION
2 Право группы на группу Право «Перевоплощаться в членов группы». Не-админ не может перевоплощаться в администратора
3 EWS (Exchange) Для синхронизации календаря. Настройка CalendarExchangeUseImpersonate или общая настройка «Использовать перевоплощение»

Возможность перевоплощения система проверяет по шагам:

  1. Если у пользователя есть спецправо DENYIMPERSONATION — перевоплощение запрещено.
  2. Если пользователь — администратор — перевоплощение разрешено (в любого пользователя).
  3. Если целевой пользователь — администратор, а инициатор — нет — запрещено.
  4. Иначе проверяется право группы на группу «Перевоплощаться в членов группы».

Спецправо DENYIMPERSONATION назначается группе. Если пользователь входит хотя бы в одну группу с этим правом — перевоплощение для него запрещено (даже если он администратор). Ограничение: нельзя назначить DENYIMPERSONATION группе «Администраторы». Право хранится в таблице GroupPermissionsToSpecialActions.

API перевоплощения: начало и завершение

Перевоплощением можно управлять через REST API. Для начала перевоплощения используется запрос:

POST /api/auth/{userId}/impersonate

Ответы:

  • 204 No Content — успешно, последующие запросы идут от имени целевого пользователя;
  • 403 Forbidden — нет прав или попытка вложенного перевоплощения.

Ограничение: вложенное перевоплощение запрещено — при попытке перевоплотиться, уже будучи перевоплощённым, возвращается 403.

Завершение перевоплощения делается запросом:

POST /api/auth/undotransformation

Ответ: 204 No Content — сессия возвращается к реальному пользователю.

Механика сессии (JWT) при перевоплощении

Что происходит на уровне сессии при перевоплощении (полезно для диагностики):

  1. Система создаёт новый JWT-токен.
  2. В новом токене SessionUserId — целевой пользователь, OldUserId — инициатор.
  3. Поле ImpersonatedUserId доступно всем сервисам для проверки, кто инициатор.
  4. Все действия выполняются от имени целевого пользователя.
  5. При завершении перевоплощения токен возвращается к исходному пользователю.
  6. Проверяется наличие действующей лицензии у целевого пользователя. Если лицензии нет — перевоплощение не выполняется.
  7. Токен перевыпускается только после успешной проверки лицензии.

Аудит перевоплощений (таблица TransformationLog)

Каждое перевоплощение логируется в таблицу TransformationLog.

Колонка Тип Описание
TransformationLogID int, PK, Identity ID записи
OldUserID int, FK → Users Инициатор перевоплощения
NewUserID int, FK → Users Целевой пользователь
TransformationTime datetime Время события
UserComputerName varchar(300) Имя компьютера / IP инициатора
IsReturn bit 0 = перевоплощение, 1 = возврат
UserAgent varchar(512), NULL User-Agent браузера

Запись создаётся при: перевоплощении (IsReturn = 0) и возврате (IsReturn = 1).

Просмотр: вкладка «Журнал» в профиле пользователя. Видят: администраторы (журналы всех пользователей), пользователь (свой журнал).

Защита данных при перевоплощении: конфиденциальность, шифрование, матрица

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

Что скрывается:

  • Текст задачи → (Текст задачи скрыт)
  • Текст комментариев → (Комментарий скрыт)
  • Файлы — недоступны (проверка доступа учитывает обоих пользователей)
  • Попытка добавить или переслать комментарий к конфиденциальной задаче — отклоняется

Что фильтруется (задача исчезает из списков):

  • Ленты задач, комментариев и обсуждений
  • История просмотров
  • Глобальный поиск

Что остаётся видимым (известные ограничения текущей версии):

  • Избранное — задача остаётся в списке, заголовок заменяется на (Текст задачи скрыт)
  • Счётчики непрочитанных и сигнальные события — продолжают учитывать конфиденциальные чаты
  • Push-уведомления, всплывающие уведомления и события о новом сообщении — не блокируются
  • Журнал попыток доступа из-под перевоплощения — пока не ведётся

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

Что скрыто при отсутствии права хотя бы у одного из двух:

  • Зашифрованные ДП — пустые или скрытые
  • Текст задачи — не отображается
  • Файлы — недоступны для скачивания
  • Комментарии — текст скрыт

Сводно по двум механизмам разграничения доступа:

Защитный механизм Замещение Перевоплощение
Конфиденциальность Заблокировано Заблокировано (с 2.268.326)
Шифрование Заблокировано Заблокировано (оба должны иметь право)
Конфиденциальность + шифрование Заблокировано Заблокировано

Интерфейс перевоплощения: веб и мобильное приложение

В веб-интерфейсе перевоплощение управляется так:

  • Кнопка перевоплощения — в профиле пользователя (панель инструментов) и в справочнике «Сотрудники» (при наведении).
  • Индикатор перевоплощения — зелёная полоса в верхней панели с именем целевого пользователя.
  • Выход — крестик на индикаторе.

Пункт «Перевоплощение» в меню профиля пользователя

Зелёный индикатор перевоплощения с именем пользователя и крестиком выхода

В мобильном приложении перевоплощение также доступно.

Ограничения и связанные материалы

Перевоплощение работает с рядом ограничений:

Ограничение Описание
Вложенное перевоплощение Запрещено. Нельзя перевоплощаться, будучи перевоплощённым
Лицензия У целевого пользователя должна быть действующая лицензия (не-конкурентная). Проверка выполняется при начале перевоплощения; если лицензии нет — перевоплощение блокируется
Не-админ → админ Пользователь без прав администратора не может перевоплотиться в администратора
DENYIMPERSONATION Блокирует перевоплощение даже для администратора
Нельзя применить DENYIMPERSONATION к группе «Администраторы» Защита от самоблокировки

Связанные материалы: