Segurança
Esta página resume o que o ConectAI faz por segurança, o que está disponível para você configurar, e o que está no roadmap.
Autenticação
Login com e-mail e senha
Hoje o ConectAI usa NextAuth (Auth.js) com credenciais (e-mail + senha). Senhas armazenadas com bcrypt (custo 12).
Sessões
Sessões são JWT, válidas por 30 dias com renovação automática a cada uso. Cookies marcados como:
httpOnly: truesecure: true(em produção)sameSite: lax
Esqueci a senha
Tela /forgot-password:
- Digite e-mail
- Recebe link com token de reset (válido por 1h)
- Tela
/reset-password?token=...permite definir nova senha (mín. 6 chars)
A mensagem é genérica para evitar enumeração: “Se o e-mail está cadastrado, você recebe o link.”
Roadmap de auth
| Feature | Status |
|---|---|
| 2FA (TOTP) | Em breve |
| SSO Google / Microsoft | Em breve |
| SAML / SCIM | Roadmap |
| Recovery codes | Roadmap |
Audit Log — /config/auditoria
Toda ação sensível é registrada. Permissão: auditoria:view.
O que vai pro audit log
- Login/logout
- Mudanças em users (criação, role, inativação)
- Mudanças em canais (conexão, edição, remoção)
- Mudanças em planos (upgrade, downgrade)
- Impersonação (super-admin)
- Erasure LGPD (pedido, aprovação, execução)
- Exports de dados sensíveis
Filtros disponíveis
A tela tem 4 filtros (form GET):
- Ação — ex.:
erasure.completed - Recurso — ex.:
erasure_request - Usuário — ID do usuário responsável
- De / Até — intervalo de datas
Paginação: 50 por página. Ordem por createdAt DESC.
Compliance LGPD — /config/compliance
Permissão: auditoria:view + auditoria:export para ações sensíveis.
Pedidos de erasure (apagamento)
Lista de pedidos LGPD com status:
| Status | Significa |
|---|---|
pending | Aguardando aprovação |
approved | Aprovado, aguardando execução |
completed | Apagado |
rejected | Negado |
Ações por pedido:
- Aprovar (apenas se
canManage) → POST/api/compliance/erasure/[id]/approve - Executar → POST
.../execute(apaga de fato) - Rejeitar → POST
.../rejectcom motivo
Registros de consentimento
Últimos 50 consentimentos (granted/revoked, type) — útil pra provar conformidade em auditoria.
Exportar dados de assinante
Input com ID do assinante → POST /api/compliance/export/[subscriberId] → download JSON com tudo do cliente (mensagens, ligações, dados pessoais).
Use quando o cliente solicitar portabilidade dos dados (direito da LGPD).
Impersonação (super-admin)
Quando um super-admin do ConectAI assume o contexto da sua org para suporte:
- Aparece um banner amarelo sticky no topo: “Operando como {sua org} · sua sessão real é {email} · expira em MM:SS”
- A impersonação expira sozinha (TTL configurado)
- Banner fica vermelho quando faltam <60s
- Botão “Sair da impersonação” sempre disponível
- A ação fica registrada no audit log com:
- Quem impersonou
- Quando
- Motivo (mín. 10 caracteres, obrigatório)
- Quando saiu
Você sempre é avisado. Não há impersonação silenciosa. Se vir o banner, alguém da equipe ConectAI está vendo o seu painel para ajudar.
Webhook signing
Quando o ConectAI manda webhook (escalonamento) para sua URL, ele inclui:
X-ConectAI-Signature: sha256=...
X-ConectAI-Timestamp: 1730000000
X-ConectAI-Event: escalationA signature é HMAC-SHA256 do {timestamp}.{body} usando o segredo compartilhado.
No seu lado, valide:
import crypto from 'crypto'
function verify(body, timestamp, signature, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${body}`)
.digest('hex')
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))
}Criptografia em repouso
- Banco de dados PostgreSQL com criptografia em repouso (provedor de nuvem)
- Credenciais sensíveis (Access Token, App Secret, senhas SIP) cifradas com chave gerenciada (KMS) na coluna
channels.credentials(JSON cifrado) - Áudios e mídias em storage com criptografia AES-256
Criptografia em trânsito
- HTTPS obrigatório em toda a aplicação
- TLS 1.2+ com cipher suites modernas
- HSTS habilitado
Política de retenção
| Tipo de dado | Retenção padrão |
|---|---|
| Mensagens de WhatsApp | 12 meses |
| Áudios de ligação | 6 meses |
| Transcrições | 12 meses |
| Audit log | 24 meses (mínimo legal) |
| Erasure executado | Apagamento físico |
(Retenção customizável por contrato Enterprise.)
Boas práticas para o seu time
Senhas fortes (≥12 caracteres, símbolos)
Não compartilhar conta — cada pessoa um login
Inativar usuário ao sair da empresa (não deletar — preserva audit trail)
Revisar permissões a cada 6 meses
Usar role específica em vez de Admin para todo mundo
Revogar tokens quando alguém sair (Access Token Meta, Token IXC)
Não compartilhar senha por mensagem
Não enviar Access Token em e-mail aberto
Não deixar sessão aberta em computador público
Reportar um problema de segurança
Se você encontrar uma vulnerabilidade, não publique. Mande para seguranca@conectaai.io com:
- Descrição
- Passos pra reproduzir
- Impacto estimado
- Sua identificação (responsable disclosure)
Tempo de resposta inicial: 48h. Recompensa em casos críticos (programa em construção).