Pular para o conteúdo principal

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

RoleDescrição
OWNERO "dono" da conta. Tem acesso irrestrito e pode gerenciar faturamento. Não pode ser removido por outros admins.
ADMINAdministrador do sistema. Pode criar usuários, canais e ver tudo, exceto dados sensíveis de faturamento do Owner.
EDITORPode criar e editar recursos (contatos, templates), mas não pode gerenciar usuários ou configurações globais.
VIEWERAcesso somente leitura. Ideal para auditores ou estagiários.

Como funciona a Verificação

Ao receber uma requisição, o sistema verifica:

  1. Autenticação: O token é válido?
  2. Contexto: O usuário pertence ao Tenant ativo?
  3. Autorização:
    • O endpoint exige uma Role específica? (Ex: @PreAuthorize("hasRole('ADMIN')"))
    • O recurso acessado pertence ao mesmo Tenant? (Verificação de propriedade)

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.