1.0 KiB
1.0 KiB
Isolamento multi-tenant
Invariantes:
- O workspace da operação é o do contexto resolvido no servidor.
- RLS com
app_useresconde linha de outro workspace e de outro usuário no mesmo workspace. - A flag do módulo é relida no banco em listagem, processamento e download.
- Download só lê chave
workspaces/{workspaceId}/tmp/. - Limpeza só apaga chave com o prefixo do workspace dono da linha.
- Auditoria não é atualizada pelo papel da aplicação.
- Texto de célula não entra em auditoria nem no payload enviado ao Sentry.
A suíte tests/security/isolation.test.ts e tests/integration/rls.test.ts cobre workspace A/B, admin com módulo desligado, agente sem o job de outro usuário, flag desligada depois do processamento, workspaceId de quem não é membro, lock concorrente e arquivo hostil.
URL assinada permanente não é emitida. O download é a rota autenticada. Reutilizar um id de outro workspace devolve NOT_FOUND ou FEATURE_DISABLED.
O que ainda depende do Postgres e do Storage reais está marcado no gate final.