J'essaie de suivre le modèle de contrôle d'accès des bases de rôles pour restreindre ce que les utilisateurs peuvent ou ne peuvent pas faire dans mon système.
Jusqu'à présent, j'ai les entités suivantes:
utilisateurs - Personnes qui utiliseront le système. Ici, j'ai des noms d'utilisateur et des mots de passe. rôles - Collection de rôles que les utilisateurs peuvent avoir. Des trucs comme des ressources de gestionnaire, d'administration, etc. - Les choses que les utilisateurs peuvent manipuler. Comme les contrats, les utilisateurs, les ébauches de contrats, etc. opérations - Les choses que les utilisateurs peuvent faire avec les ressources. Comme créer, lire, mettre à jour ou supprimer.
Maintenant, mon doute monte ici dans le diagramme où j'ai une relation comme celle-ci:
les opérations (0 .. *) sont exécutées sur les ressources (0 .. *) qui génère une table que j'ai appelée permissions et qui stockera l' opération et la ressource .
La table des autorisations ressemblera à ceci (une ligne): ID: 1, opération: créer, ressource: contrat.
Ce qui signifie une autorisation de créer un contrat .
Je l'ai fait de cette façon parce que je pense que certaines ressources peuvent ne pas avoir toutes sortes d'opérations. Par exemple, pour enregistrer des contrats , les utilisateurs peuvent télécharger des fichiers , mais cette opération n'est pas disponible pour enregistrer un fournisseur .
Alors maintenant, lorsque l' administrateur accordera des autorisations à un rôle , il n'aura pas de liste de ressources à chaque opération enregistrée dans le système.
Je pense que chaque ressource a sa propre collection d' opérations qui peuvent être exécutées sur lui.
Je peux préciser si quelque chose n'est pas compréhensible.
Est-ce la bonne façon d'implémenter le rbac?
ÉDITER
Ce que je veux dire, c'est qu'en ayant une table d' autorisations qui a des opérations et des ressources , j'ai DEUX tables supplémentaires parce que je veux associer des ressources aux opérations . J'aurais pu aussi juste faire que les ressources aient des permissions où la table des permissions stockerait les permissions.
Mais ce qui se serait passé, c'est que certaines autorisations qui n'existent même pas pour certaines ressources seraient apparues lorsque l'administrateur les aurait attribuées.
Donc, je veux savoir du point de vue de la conception de la base de données si cette autorisation de table qui a une opération de colonne et une autre ressource est correcte? Vais-je rencontrer des problèmes s'il reste comme ça?