Estou tentando seguir o modelo de controle de acesso às bases de função para restringir o que os usuários podem ou não fazer no meu sistema.
Até o momento, tenho as seguintes entidades:
usuários - Pessoas que usarão o sistema. Aqui eu tenho nomes de usuário e senhas. Papéis - conjunto de papéis que os usuários podem ter. Recursos como gerente, administrador, etc. recursos - coisas que os usuários podem manipular. Como contratos, usuários, rascunhos de contrato, etc. operações - coisas que os usuários podem fazer com os recursos. Como criar, ler, atualizar ou excluir.
Agora, minha dúvida surge aqui no diagrama em que tenho uma relação como esta:
As operações (0 .. *) são executadas nos recursos (0 .. *) que geram uma tabela que chamei de permissões e que armazenará a operação e o recurso .
A tabela de permissões terá esta aparência (uma linha): ID: 1, operação: create, recurso: contrato.
O que significa uma permissão para criar um contrato .
Fiz dessa maneira porque sinto que alguns recursos podem não ter todos os tipos de operações. Por exemplo, para registrar contratos , os usuários podem fazer upload de arquivos , mas esta operação não está disponível para registrar um provedor .
Portanto, agora, quando o administrador conceder permissões para uma função , ele não terá uma lista de recursos com todas as operações registradas no sistema.
Eu acho que cada recurso tem sua própria coleção de operações que podem ser executadas nele.
Posso esclarecer se algo não é compreensível.
Essa é a maneira correta de implementar o rbac?
EDITAR
O que quero dizer é que, por ter uma tabela de permissões que possui operação e recurso , tenho DUAS tabelas extras porque quero associar recursos a operações . Eu também poderia ter acabado de fazer os recursos terem permissões onde a tabela de permissões armazenaria as permissões.
Mas o que teria acontecido é que algumas permissões que nem sequer existem para alguns recursos apareceriam quando o administrador as atribuiria.
Então, eu quero saber do ponto de vista do design do banco de dados se esta permissão de tabela que possui uma operação de coluna e outro recurso está correta? Terei problemas se continuar assim?