Isolamento multiempresa: o susto que eu tomei numa demonstração
Em grupo com várias empresas, número errado é problema. Dado de uma empresa aparecendo na outra é problema de outra categoria.

Eu estava demonstrando um relatório para o sócio de uma das empresas do grupo quando ele apontou para um total e disse: "esse valor está alto demais para a gente". Estava mesmo. Levei um susto que durou uns dez segundos, até confirmar que o filtro estava certo e o número também. Mas naqueles dez segundos eu entendi por que isolamento multiempresa não é assunto que se resolve com confiança.
Em ambiente com uma empresa só, o pior erro de análise é um número torto. Em grupo, existe um erro de outra categoria: dado de uma empresa aparecendo para quem é de outra. Isso não se corrige com pedido de desculpas na reunião seguinte.
Vou mostrar onde o escopo é aplicado, o que continua sendo responsabilidade de quem configura e o roteiro de teste que eu rodo antes de liberar qualquer coisa para um grupo. As travas de execução estão detalhadas em text-to-SQL seguro.
Onde o isolamento multiempresa é aplicado
| Recurso | Como o escopo funciona | O que testar |
|---|---|---|
| Chat com dados | Escopo obrigatório por empresa na execução, acesso externo bloqueado | Pedir dado de outra empresa e confirmar a recusa |
| Reports IDE | Fontes limitadas à empresa da sessão | Montar relatório numa empresa e conferir os totais |
| Relatório publicado | Rota exige sessão e empresa | Abrir o código publicado logado em outra empresa |
| Painel de relacionamento | Visão consolidada por empresa | Comparar o total do painel com a base de cada unidade |
| API do CRM | Isolamento aplicado no filtro de autenticação | Usar token de uma empresa contra dado de outra |
O que a plataforma garante
Na execução das consultas em linguagem natural, o escopo por empresa é obrigatório e o acesso a dados fora da empresa da sessão fica bloqueado. No editor de relatórios, as fontes são limitadas à empresa da sessão, e a rota publicada exige sessão e empresa. Na integração, o filtro aplica o isolamento junto com escopo, expiração e limite, quando as estruturas exigidas estão disponíveis no ambiente.
Esse último trecho merece leitura devagar. Parte dos controles depende de estruturas que precisam estar aplicadas no banco. Se elas não estiverem, a tela continua mostrando as opções e você acredita estar protegido. Rodar a checagem de estrutura descrita em comandos CLI é passo de implantação, não de manutenção.
O que continua na sua mão
A plataforma impede que a consulta atravesse a fronteira. Ela não decide quem, dentro da sua empresa, deveria ter acesso a qual unidade do grupo. Usuário com acesso a três empresas vai enxergar as três, e isso é configuração, não falha. Já vi confusão nascer daí: alguém trocou de empresa na sessão, esqueceu, montou um relatório e mandou para o time errado.
O roteiro de teste que eu rodo
- Crie um usuário de teste com uma empresa sóNão teste com o seu usuário de administrador. Ele enxerga tudo e vai aprovar qualquer coisa.
- Peça dado da outra empresa no chatFormule a pergunta citando a outra unidade pelo nome. O resultado precisa ser recusa ou vazio, nunca dado.
- Compare totais com a base de cada unidadeSome o faturamento de cada empresa separadamente e confira contra o relatório consolidado. Diferença exige explicação antes de liberar.
- Abra um relatório publicado logado na outra empresaA rota exige sessão e empresa. Confirme na prateleira, não no manual.
- Teste o token de integração cruzando empresaGere numa unidade e tente consultar dado de outra. Precisa falhar.
- Refaça depois de cada atualizaçãoTeste de isolamento não é rito de implantação, é rotina de manutenção. Coloque na agenda.
Eventos externos e empresa não resolvida
Existe um caso que costuma passar despercebido. Quando chega um evento externo e há várias contas do mesmo canal, o sistema não associa a empresa por suposição: registra e deixa a sincronização autenticada resolver. Consequência prática: registros sem empresa resolvida precisam de revisão de isolamento antes de qualquer exposição do painel. Vale reler webhooks do CRM com esse olhar.
- Nenhuma associação de empresa é feita por adivinhação em evento ambíguo.
- Registros sem empresa resolvida ficam pendentes de revisão.
- A sincronização autenticada agendada cobre o que o evento não resolveu.
- Exposição do painel só depois de tratar esses pendentes.
- Alguém precisa olhar essa lista de tempos em tempos, ou ela cresce em silêncio.
Consolidar sem misturar
A diretoria de um grupo quer, legitimamente, ver o consolidado. O caminho seguro é montar a visão de grupo com números agregados, sem detalhe nominal cruzado entre unidades. Assim o holding enxerga o todo e cada empresa continua com a própria fronteira. As regras de quem vê o quê estão em governança de dados, e a organização geral do ambiente aparece em ERP e gestão.
Por onde eu começaria
Crie hoje um usuário de teste com acesso a uma empresa só e passe vinte minutos tentando enxergar dado de outra. É desconfortável fazer isso e é a coisa mais útil que você vai fazer na semana. Se tudo recusar, você ganhou tranquilidade documentada. Se algo passar, você achou antes que o cliente achasse.