Segurança e privacidade

Quem vê o quê — e como protegemos os dados

Cada revenda opera em um “mundo” separado: só enxerga clientes, propostas, faturas e tráfego dela mesma. A VC1 tem painel próprio para operação e suporte, com regras claras de quem pode alterar o quê.

Isolamento entre revendas

O endereço da revenda ({slug}.vc1.com.br) define o tenant. Login, cookies e tokens ficam presos a esse endereço — não dá para usar credenciais de uma revenda em outra.

Na prática — Revenda A nunca lista, edita ou exporta dados da revenda B. Se alguém tentar adivinhar um link de outra revenda, o sistema responde como se o registro não existisse (sem “vazar” que o cliente existe).

No painel VC1, listagens com dados pessoais também respeitam o tenant escolhido; suporte vê CPF/CNPJ mascarados quando possível.

Matriz de permissões (ações principais)

Legenda: ✓ pode · — não pode · L só leitura (equivalente a ✓ para consulta, sem alterar).

Ação vc1_admin vc1_ops vc1_finance vc1_support reseller_owner reseller_admin reseller_seller reseller_finance customer_admin customer_user
Publicar base de preços VC1✓—————————
Onboarding revenda / STFC / DNS✓✓—L——————
Emitir NFCom / write-off fiscal✓—✓———————
Aprovar repasse / registrar TED✓—✓———————
Ver como revenda (impersonation)✓——✓——————
Bloquear / desbloquear linha (manual)✓✓————————
Editar planos e faixas da revendaLLLL✓✓—L——
Funil / propostas / kanbanLLLL✓✓✓———
Faturas e extratos da revendaLL✓L✓✓—✓——
Upload / validar outorga STFC✓✓—L✓✓————
Recarga pré-paga / ajuste carteiraL—✓L✓✓—✓✓*—
Exportar CDR / extrato em massa✓✓✓L✓✓—✓LL
Gerir usuários da org (cliente final)————✓✓——✓—
Portabilidade numérica✓✓—L✓✓——✓—
Ver senha SIP (uma vez)✓✓—L✓✓——✓✓ (própria)

* Recarga do cliente final via mePay só no modo VC1 fatura (épico E5).

Suporte VC1 — Leitura + “ver como revenda” com banner fixo. Não altera preço, emite NF, aprova repasse nem bloqueia/desbloqueia linha manualmente. Papel interno: vc1_support.

Referência de engenharia

Matriz completa e regras de negócio: 02-DOMAIN-RULES.md §3.4. Papéis canônicos: _BRIEF.md §3.

No código, cada área sensível usa políticas dedicadas (ResellerPolicy, CustomerPolicy, ProposalPolicy, InvoicePolicy, PayoutPolicy, StfcLicensePolicy, SipAccountPolicy, CdrPolicy).

Login, 2FA e “ver como revenda”

Obrigatório

Equipe VC1 (painel admin)

Senha + 2FA (app autenticador) antes de usar LAB com dado real e sempre em produção. Sessão expira após 8 horas de inatividade.

Recomendado

Usuários da revenda e do cliente

2FA opcional; o dono da revenda (reseller_owner) é incentivado a ativar.

Auditado

Ver como revenda

Só vc1_admin e vc1_support. Sessão dura 30 minutos, banner visível o tempo todo, tudo registrado em trilha de auditoria. Proibido trocar senha, emitir token de API ou baixar portabilidade em massa durante a sessão.

Link público da proposta (PIN)

Quem recebe a proposta por e-mail/SMS usa um PIN de 6 dígitos — nunca na URL. Após acertos errados, o link trava por 15 minutos; há limite de tentativas por hora por endereço IP.

Valores e totais da oferta vêm sempre do servidor (snapshot imutável depois de enviada); o navegador só exibe, não “negocia” o preço.

Webhooks assinados (pagamento e contrato)

Quando mePay ou meSign avisam que algo aconteceu (pagamento, contrato assinado), a plataforma só confia se a mensagem vier com assinatura criptográfica (HMAC). Tentativas repetidas ou fora da janela de tempo são ignoradas.

meSign — eventos de envelope concluído/arquivado; cada evento tem ID único para não processar duas vezes.

LGPD — dados pessoais

Quem é controladora do cliente final depende do modo de faturamento (não há mistura):

Contrato de tratamento (DPA) com cada revenda antes de ficar ativa.

O que guardamos (resumo)

Tipo de dadoPara quêQuanto tempo guardamos
Cadastro (nome, e-mail, CPF/CNPJ, endereço)Contrato, fatura, NF5 anos após encerramento (fiscal)
Registro de ligações (CDR)Tarifação 30/6, contestaçãoBruto 13 meses; tarifado 5 anos
Faturas, pagamentos, repassesCobrança e obrigação legal5 anos
Docs de portabilidadeProcesso Anatel24 meses após conclusão
Logs de acesso (IP, login)Segurança e abuso12 meses
Trilha financeira / adminAuditoria5 anos

Direitos de quem é titular

Acesso, correção, portabilidade (export JSON da organização), exclusão quando cabível — canal pelo controlador (VC1 ou revenda) e tela “meus dados” no app. Prazo legal de 15 dias (prorrogável). Dados ainda em guarda fiscal ou CDR não são apagados antes do prazo; a resposta explica o motivo legal.

Antes de abrir para clientes reais

Teste de invasão (pentest) externo — Obrigatório antes do go-live nas oito superfícies (admin, painéis, proposta, API, webhooks, conectores, LAB). Achados graves bloqueiam produção até corrigir.

Também rodamos testes automáticos (permissões, PIN, assinatura de webhook, isolamento entre revendas) e varredura de dependências no CI.

STRIDE — ameaças por superfície

Resumo do modelo de ameaças usado no desenho. Documento fonte: 08-SECURITY-LGPD.md.

Painel admin VC1

2FA TOTP; permissões por papel; trilha de auditoria imutável.

Painéis revenda e cliente

Isolamento pelo endereço do site; acesso cruzado retorna 404; proposta congelada no servidor.

Proposta pública

PIN com hash; bloqueio após tentativas; limite de tentativas por IP e revenda.

Tokens de API

Somente Bearer; hash no banco; escopo mínimo; validade 90 dias.

Webhooks

HMAC com comparação segura; janela anti-replay 5 min; idempotência por event_id.

Integração legado

TLS verificado; token do ERP nunca na URL; CDR somente leitura.

Ambiente LAB

Lista fechada de IDs no legado; escrita recusada fora da allowlist.

Decisões de segurança (amostra D-SEC)

IDAssuntoDefault
D-SEC-032FA equipe VC1TOTP obrigatório
D-SEC-05PIN da proposta6 dígitos; bloqueio progressivo
D-SEC-07Ver como revenda30 min; admin e suporte
D-SEC-08Replay de webhook5 min; event_id único
D-SEC-12Retenção CDRBruto 13 meses
D-SEC-18PentestObrigatório antes do go-live
D-SEC-20Cross-tenantSempre 404

Registro completo D-SEC-01…22 →