Segurança e PBAC
A QuettaCode utiliza um modelo de segurança que evolui do tradicional RBAC (Role-Based Access Control) para o PBAC (Policy-Based Access Control), oferecendo granularidade fina nas permissões.
Conceitos Básicos
- User (Usuário): A entidade que realiza a ação.
- Role (Papel): Um conjunto pré-definido de permissões (ex: ADMIN, USER).
- Permission (Permissão): Uma autorização atômica para realizar uma ação (ex:
message:send,user:create). - Policy (Política): Regras condicionais (ex: "Pode ver relatórios SE o relatório for do departamento Vendas").
Roles Padrão
| Role | Descrição |
|---|---|
| OWNER | O "dono" da conta. Tem acesso irrestrito e pode gerenciar faturamento. Não pode ser removido por outros admins. |
| ADMIN | Administrador do sistema. Pode criar usuários, canais e ver tudo, exceto dados sensíveis de faturamento do Owner. |
| EDITOR | Pode criar e editar recursos (contatos, templates), mas não pode gerenciar usuários ou configurações globais. |
| VIEWER | Acesso somente leitura. Ideal para auditores ou estagiários. |
Como funciona a Verificação
Ao receber uma requisição, o sistema verifica:
- Autenticação: O token é válido?
- Contexto: O usuário pertence ao Tenant ativo?
- Autorização:
- O endpoint exige uma Role específica? (Ex:
@PreAuthorize("hasRole('ADMIN')")) - O recurso acessado pertence ao mesmo Tenant? (Verificação de propriedade)
- O endpoint exige uma Role específica? (Ex:
Boas Práticas
- Princípio do Menor Privilégio: Sempre atribua a role mais baixa necessária para a função do usuário.
- Auditoria: Todas as ações críticas (login, alterações de configuração, deleção em massa) são registradas em logs de auditoria disponíveis para o Owner.