Pular para o conteúdo principal

ADR 0002 — RBAC multi-tenant em dois níveis

  • Status: aceito
  • Data: 2026-07

Contexto

O catálogo de permissões era global. Admin de White Label conseguia ver/atribuir flags de plataforma (IAM, todos os tenants, financeiro irrestrito). Filtro por white_label_id existia em telas, não como regra única de autorização.

Decisão

Dois níveis obrigatórios:

  1. Escopo de delegação do WL (white_label_permissao): o que aquele tenant pode distribuir.
  2. Permissões do usuário (permissao_usuario): o que a pessoa de fato tem.

A interseção é que vale. Super-admin bypassa. Módulos opcionais usam tenant_modules. Papéis (super-adminrepresentante) resolvem quem gerencia quem por rank, não o catálogo de flags.

Desenho completo: ../rbac-tenant-design.md.

Consequências

  • Impossível (em teoria) um WL escalar para flag GLOBAL não delegável.
  • Fail-closed se as tabelas de escopo não existirem.
  • Custo: toda feature nova precisa de flag + seed + matriz + teste de tenant.
  • Inconsistência residual: nem todo endpoint legado chama backend_permission_require() — a matriz em ../permissoes-matriz-endpoints.md é viva.