Олицетворение пользователя
Действуйте от имени любого пользователя для поддержки и отладки, не запрашивая его пароль. Ограничено 10 минутами, строго проверяется в журналах безопасности.
Что такое олицетворение?
Олицетворение пользователя позволяет администратору или инженеру службы поддержки создавать кратковременный токен носителя, который действует как конкретный пользователь. Это позволяет воспроизводить ошибки клиентов, проверять разрешения политики RLS или устранять проблемы с данными без запроса учетных данных.
Олицетворение в Aurabase гарантирует три фундаментальных принципа безопасности:
- Короткий срок действия: токены олицетворения действительны от 1 до 600 секунд (максимум 10 минут, по умолчанию 300 секунд). Они никогда не включают токен обновления.
- Явное присвоение субъекта: выданный токен доступа содержит стандартное утверждение RFC 8693
act, указывающее, кто инициировал сеанс. - Аудит перед выпуском: действие записывается в
auth_audit_logс указанием исполнителя, причины, продолжительности и целевого пользователя до того, как токен будет сгенерирован. Если вставка журнала не удалась, токен не выдается.
Структура утверждения закона RFC 8693
Токен олицетворения подписывается активным ключом ES256 проекта и соответствует стандартному формату токена доступа пользователя с дополнительным объектом act (актёр):
sub: Идентификатор олицетворяемого пользователя. Postgres RLS (auth.uid()) возвращает это значение.act.sub: идентификатор оператора, сгенерировавшего токен (например, идентификатор пользователя консоли илиservice_role).
Конечная точка администратора
Для олицетворения требуется авторизация администратора с помощью ключа service_role или оператора с ролью admin.
Тело запроса
| Поле | Тип | Необходимый | Описание |
|---|---|---|---|
reason | нить | Необязательный | Обоснование записывается в журналы безопасности. Требуется для привилегированных целевых учетных записей (admin/owner). |
ttl_seconds | число | Необязательный | Срок действия токена в секундах (от 1 до 600, по умолчанию 300). |
allow_privileged | логическое значение | Необязательный | Должно быть установлено значение true, если целевой пользователь имеет роль admin или owner. |
Ответ (200 OK)
TypeScript SDK
Используйте authAdmin.impersonate() с клиентом Aurabase, настроенным с помощью ключа service_role:
Привилегированные учетные записи и журналы аудита
Защита привилегированных учетных записей
Целевые учетные записи с административными ролями (например, role = 'admin', role = 'owner' или app_metadata.roles , содержащие 'admin'), представляют собой ценные цели. Чтобы предотвратить случайное повышение привилегий:
- Вы должны явно передать
allow_privileged: true. - Необходимо указать непустую строку
reason. - Если какая-либо проверка не пройдена, серверная часть отклоняет запрос с помощью
403 Forbidden.
Журнал аудита безопасности
Каждое событие олицетворения вставляется в таблицу auth_audit_log клиента:
- Действие:
admin_impersonation - Идентификатор пользователя: Идентификатор целевого пользователя
- Метаданные: объект JSON, содержащий
{ "actor": "...", "reason": "...", "ttl_seconds": 300, "privileged": false }
Этот след виден в Studio › Аутентификация › Журналы аудита и может быть перенаправлен в инструменты SIEM через стоки базы данных.