Quando um sistema de denúncias é simplesmente implementado como um CRUD, pode parecer relativamente comum. No entanto, quando um funcionário denuncia seu próprio gestor, a necessidade de uma autorização mais complexa se torna evidente. RBAC (Role-Based Access Control) funciona bem quando as permissões acompanham funções estáveis, mas não quando a permissão para acessar casos sensíveis é necessária. Isso levanta questões sobre como definir permissões de caso específico, além de permissões de usuário.

Implementação de RBAC para Sistemas de Denúncias: Uma Abordagem Profunda

RBAC + Permissões por Caso

Para casos sensíveis, uma abordagem RBAC + permissões por caso + atribuições + exclusões + conflitos de interesse + overrides auditáveis é necessária. Permissões genéricas como can_view_case precisam ser refinadas para can_view_report, can_view_reporter_identity, can_view_evidence, can_view_internal_notes, can_add_evidence, can_assign_case, e can_close_case. Isso não apenas afeta a autorização, mas também o modelo de dados.

Granularidade de Permissões

A permissão can_view_case é uma permissão ampla demais. Permissões mais granulares como can_view_report, can_view_reporter_identity, can_view_evidence, can_view_internal_notes, can_add_evidence, can_assign_case, e can_close_case são necessárias para garantir que as informações sensíveis não sejam acessadas de forma desnecessária.

Anonimato e Identificação

Anonimato não é um booleano. É uma propriedade do sistema inteiro. Por exemplo, uma denúncia pode ser anônima, mas a infraestrutura pode ainda associar o envio de denúncia a uma pessoa. Isso pode ser resolvido gerando uma credencial opaca no momento da denúncia, como um report_id e um access_token. Essa credencial não representa uma identidade, mas apenas comprova que quem possui a credencial pode acessar o lado do denunciante.

Comunicação e Identificação

Comunicação em sistemas de denúncias sensíveis pode ser complexa. Como perguntar mais informações a um denunciante anônimo? Uma abordagem possível é gerar uma credencial opaca para cada denúncia, como um report_id e um access_token. Essa abordagem mantém o anonimato, mas também permite que o investigador verifique a identidade do denunciante.

Conclusão

Implementar RBAC para sistemas de denúncias sensíveis exige uma abordagem mais complexa que RBAC tradicional. Permissões de caso específico, permissões granulares, anonimato e identificação são necessários para garantir que as informações sensíveis não sejam acessadas de forma desnecessária. Isso também afeta o modelo de dados e a forma como o sistema armazena e comunica informações sensíveis.

Abordagem Denuncias Implementacao Rbac Sistemas