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:
- Escopo de delegação do WL (
white_label_permissao): o que aquele tenant pode distribuir. - 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-admin … representante) 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
GLOBALnã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.