Multi-Tenancy
O Opero opera em um modelo multi-tenant, onde cada organização (hotel, hostel, rede hoteleira) possui um tenant completamente isolado. Esta arquitetura garante que os dados de uma organização nunca sejam acessados por outra, mesmo compartilhando a mesma infraestrutura.
O que e um Tenant?
Um tenant representa uma conta de organizacao no Opero. Quando voce cria sua conta, um tenant e provisionado automaticamente com:
- Um identificador unico (UUID) chamado
tenantId - Isolamento completo de dados no banco de dados
- Configuracoes independentes (idioma, fuso horario, moeda, branding)
- Usuarios, propriedades e registros financeiros proprios
Exemplo pratico: A rede “Hotel Solar” tem um tenant. Dentro dele existem 3 propriedades (Solar Copacabana, Solar Ipanema, Solar Buzios), cada uma com seus quartos, reservas e financeiro. Tudo pertence ao mesmo tenant.
Como o Isolamento Funciona
Filtragem por tenantId
Toda tabela no banco de dados que armazena dados de organizacao possui uma coluna tenant_id. Toda consulta ao banco inclui automaticamente esse filtro, garantindo que um tenant so veja seus proprios dados.
Requisicao HTTP → Autenticacao → Extrai tenantId do token
↓
AsyncLocalStorage propaga o tenantId
↓
Toda query no banco filtra por tenant_id = XAsyncLocalStorage
O Opero usa AsyncLocalStorage (mecanismo nativo do Node.js) para propagar o contexto do tenant ao longo de toda a cadeia de processamento de uma requisicao. Isso significa que:
- O middleware de autenticacao identifica o tenant do usuario
- O
tenantIde armazenado no contexto assincrono - Todas as camadas (service, repository, etc.) acessam o
tenantIdsem precisar recebe-lo como parametro - Nenhuma query escapa do filtro de tenant
Violacao Cross-Tenant
Qualquer tentativa de acessar dados de outro tenant e tratada como violacao de seguranca. O sistema:
- Retorna erro 403 (Forbidden) imediatamente
- Registra o evento na trilha de auditoria
- Nao revela que o recurso existe em outro tenant (retorna 404, nao 403, para o cliente)
Dados de Sistema (Compartilhados)
Nem todos os dados pertencem a um tenant. Alguns sao globais e compartilhados entre todas as organizacoes:
| Dado Global | Descricao |
|---|---|
| Bancos | Lista de bancos brasileiros e internacionais (codigo, nome, ISPB) |
| Moedas | Tabela de moedas (BRL, USD, EUR, etc.) com taxas de referencia |
| Catalogo de Produtos | Itens padrao da Loja Opero (add-ons disponiveis para compra) |
| Templates de Site | Templates visuais para o Guest Booking Portal |
| Plano de Contas USALI | Estrutura padrao do plano de contas hoteleiro |
| NCM / HS Codes | Codigos fiscais para inventario e NF-e |
Esses dados sao gerenciados pela equipe Opero e ficam disponiveis para todos os tenants sem duplicacao.
Superusuarios
Superusuarios sao membros da equipe Opero com acesso especial:
| Nivel | Acesso | Uso |
|---|---|---|
| Superuser N1 | Leitura e escrita em qualquer tenant | Administracao da plataforma, suporte avancado, concessao de entitlements |
| Superuser N2 | Somente leitura, apenas em tenants que aprovaram acesso de suporte | Investigacao de problemas relatados pelo cliente |
Importante: O acesso N2 so funciona quando o tenant ativa explicitamente a opcao “Permitir acesso de suporte” nas configuracoes. Sem essa aprovacao, o N2 nao consegue ler nenhum dado.
Escopos Dentro do Tenant
Alem do isolamento entre tenants, o sistema oferece escopos para restringir o acesso dentro de um mesmo tenant:
| Escopo | Significado | Exemplo |
|---|---|---|
| Tenant | Acesso a tudo dentro do tenant | Gerente geral da rede |
| Owner | Acesso apenas as propriedades de um dono especifico | Socio que possui 2 de 5 hoteis |
| Property | Acesso apenas a uma propriedade especifica | Recepcionista do Hotel Solar Copacabana |
| Unit | Acesso apenas a unidades especificas | Governanca responsavel por um andar |
Esses escopos sao combinados com os papeis (roles) para criar permissoes granulares. Veja Papeis e Permissoes para detalhes.
Beneficios do Modelo Multi-Tenant
- Seguranca — Dados completamente isolados por design, nao por convencao
- Custo — Infraestrutura compartilhada reduz custo operacional para todos
- Atualizacoes — Novas funcionalidades sao liberadas para todos simultaneamente
- Escalabilidade — O sistema escala horizontalmente conforme novos tenants sao adicionados
- Conformidade — Isolamento facilita atendimento a LGPD/GDPR (dados de cada organizacao sao claramente delimitados)
Perguntas Frequentes
Posso ter mais de um tenant? Sim, se voce gerencia organizacoes independentes (ex: duas redes hoteleiras distintas), cada uma tera seu proprio tenant.
Meus dados podem ser acessados por outro cliente?
Nao. O isolamento e aplicado em nivel de banco de dados. Mesmo em caso de bug no codigo, o filtro por tenantId impede vazamento de dados entre organizacoes.
O suporte Opero pode ver meus dados? Apenas se voce ativar a opcao “Permitir acesso de suporte”. Nesse caso, a equipe N2 tera acesso somente-leitura para investigar problemas. Voce pode desativar a qualquer momento.
O que acontece se eu cancelar minha conta? Todos os dados do tenant sao marcados para exclusao. Apos o periodo de retencao legal (conforme LGPD), sao removidos permanentemente.