Representação do usuário
Aja em nome de qualquer usuário para suporte e depuração sem solicitar sua senha. Limitado a 10 minutos, rigorosamente auditado nos logs de segurança.
O que é personificação?
A personificação do usuário permite que um administrador ou engenheiro de suporte gere um token de portador de curta duração que atue como um usuário específico. Isso permite reproduzir bugs do cliente, verificar permissões de política RLS ou solucionar problemas de dados sem solicitar credenciais.
A representação em Aurabase garante três princípios fundamentais de segurança:
- Vida útil curta: Os tokens de representação são válidos entre 1 e 600 segundos (10 minutos no máximo, padrão 300 segundos). Eles nunca incluem um token de atualização.
- Atribuição explícita de ator: O token de acesso emitido carrega a declaração padrão RFC 8693
actindicando quem iniciou a sessão. - Auditoria antes da emissão: a ação é registrada em
auth_audit_logcom o ator, motivo, duração e usuário de destino antes de o token ser gerado. Se a inserção do log falhar, nenhum token será emitido.
Estrutura de reivindicação da lei RFC 8693
Um token de representação é assinado com a chave ES256 ativa do projeto e está em conformidade com o formato padrão do token de acesso do usuário, com um objeto act (ator) adicional:
sub: a identidade do usuário que está sendo representado. Postgres RLS (auth.uid()) avalia este valor.act.sub: A identidade do operador que gerou o token (por exemplo, ID do usuário do console ouservice_role).
Endpoint administrativo
A representação requer autorização do administrador por meio de uma chave service_role ou de um operador com a função admin.
Solicitar corpo
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
reason | corda | Opcional | Justificativa registrada em logs de segurança. Obrigatório para contas de destino privilegiadas (admin/owner). |
ttl_seconds | número | Opcional | Vida útil do token em segundos (1 a 600, padrão 300). |
allow_privileged | booleano | Opcional | Deve ser definido como true se o usuário de destino tiver uma função admin ou owner. |
Resposta (200 OK)
TypeScript SDK
Use authAdmin.impersonate() com um cliente Aurabase configurado com a chave service_role:
Contas privilegiadas e registros de auditoria
Protegendo contas privilegiadas
As contas de destino que possuem funções administrativas (como role = 'admin', role = 'owner' ou app_metadata.roles contendo 'admin') representam destinos de alto valor. Para evitar a elevação acidental de privilégios:
- Você deve passar explicitamente
allow_privileged: true. - Uma string
reasonnão vazia deve ser fornecida. - Se alguma das verificações falhar, o back-end rejeitará a solicitação com
403 Forbidden.
Registro de auditoria de segurança
Cada evento de representação é inserido na tabela auth_audit_log do locatário:
- Ação:
admin_impersonation - ID do usuário: ID do usuário alvo
- Metadados: objeto JSON contendo
{ "actor": "...", "reason": "...", "ttl_seconds": 300, "privileged": false }
Essa trilha é visível em Studio › Autenticação › Logs de auditoria e pode ser encaminhada para ferramentas SIEM por meio de drenagem de banco de dados.