ConfiguraçãoSegurança

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: true
  • secure: true (em produção)
  • sameSite: lax

Esqueci a senha

Tela /forgot-password:

  1. Digite e-mail
  2. Recebe link com token de reset (válido por 1h)
  3. 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

FeatureStatus
2FA (TOTP)Em breve
SSO Google / MicrosoftEm breve
SAML / SCIMRoadmap
Recovery codesRoadmap

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:

StatusSignifica
pendingAguardando aprovação
approvedAprovado, aguardando execução
completedApagado
rejectedNegado

Ações por pedido:

  • Aprovar (apenas se canManage) → POST /api/compliance/erasure/[id]/approve
  • Executar → POST .../execute (apaga de fato)
  • Rejeitar → POST .../reject com 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: escalation

A 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 dadoRetenção padrão
Mensagens de WhatsApp12 meses
Áudios de ligação6 meses
Transcrições12 meses
Audit log24 meses (mínimo legal)
Erasure executadoApagamento 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).

Próximo passo

Auditoria
Compliance & LGPD