Skip to Content
Plataforma AdminMulti-tenancy

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 = X

AsyncLocalStorage

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:

  1. O middleware de autenticacao identifica o tenant do usuario
  2. O tenantId e armazenado no contexto assincrono
  3. Todas as camadas (service, repository, etc.) acessam o tenantId sem precisar recebe-lo como parametro
  4. 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 GlobalDescricao
BancosLista de bancos brasileiros e internacionais (codigo, nome, ISPB)
MoedasTabela de moedas (BRL, USD, EUR, etc.) com taxas de referencia
Catalogo de ProdutosItens padrao da Loja Opero (add-ons disponiveis para compra)
Templates de SiteTemplates visuais para o Guest Booking Portal
Plano de Contas USALIEstrutura padrao do plano de contas hoteleiro
NCM / HS CodesCodigos 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:

NivelAcessoUso
Superuser N1Leitura e escrita em qualquer tenantAdministracao da plataforma, suporte avancado, concessao de entitlements
Superuser N2Somente leitura, apenas em tenants que aprovaram acesso de suporteInvestigacao 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:

EscopoSignificadoExemplo
TenantAcesso a tudo dentro do tenantGerente geral da rede
OwnerAcesso apenas as propriedades de um dono especificoSocio que possui 2 de 5 hoteis
PropertyAcesso apenas a uma propriedade especificaRecepcionista do Hotel Solar Copacabana
UnitAcesso apenas a unidades especificasGovernanca 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

  1. Seguranca — Dados completamente isolados por design, nao por convencao
  2. Custo — Infraestrutura compartilhada reduz custo operacional para todos
  3. Atualizacoes — Novas funcionalidades sao liberadas para todos simultaneamente
  4. Escalabilidade — O sistema escala horizontalmente conforme novos tenants sao adicionados
  5. 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.

Last updated on