Ich versuche, dem Zugriffssteuerungsmodell der Rollenbasis zu folgen, um einzuschränken, was Benutzer in meinem System tun können oder nicht.
Bisher habe ich folgende Entitäten:
Benutzer - Personen, die das System verwenden. Hier habe ich Benutzernamen und Passwörter. Rollen - Sammlung von Rollen, die Benutzer haben können. Dinge wie Manager, Administrator usw. Ressourcen - Dinge, die Benutzer manipulieren können. Wie Verträge, Benutzer, Vertragsentwürfe usw. Operationen - Dinge, die Benutzer mit den Ressourcen tun können. Wie erstellen, lesen, aktualisieren oder löschen.
In dem Diagramm, in dem ich eine Beziehung wie diese habe, tauchen hier meine Zweifel auf:
Operationen (0 .. *) werden für Ressourcen (0 .. *) ausgeführt, die eine von mir als Berechtigungen bezeichnete Tabelle generieren , in der die Operation und die Ressource gespeichert werden .
Die Berechtigungstabelle sieht folgendermaßen aus (eine Zeile davon): ID: 1, Vorgang: Erstellen, Ressource: Vertrag.
Das bedeutet eine Erlaubnis , einen Vertrag zu erstellen .
Ich habe es so gemacht, weil ich der Meinung bin, dass manche Ressourcen nicht alle Arten von Operationen haben. Zum Registrieren von Verträgen können Benutzer beispielsweise Dateien hochladen , aber dieser Vorgang steht für die Registrierung eines Anbieters nicht zur Verfügung .
Wenn der Administrator nun Berechtigungen für eine Rolle erteilt , verfügt er nicht über eine Ressourcenliste für jeden einzelnen im System registrierten Vorgang.
Ich denke, jede Ressource hat ihre eigene Sammlung von Operationen , die auf ihn angewendet werden können.
Ich kann klären, ob etwas nicht verständlich ist.
Ist dies der richtige Weg, um den RBAC zu implementieren?
BEARBEITEN
Was ich damit meine, ist, dass ich mit einer Berechtigungstabelle , die Operation und Ressource enthält , ZWEI zusätzliche Tabellen habe, weil ich Ressourcen mit Operationen verknüpfen möchte . Ich hätte auch gerade getan, dass Ressourcen Berechtigungen haben , in denen die Berechtigungstabelle die Berechtigungen speichern würde.
Was dann aber passiert wäre, wäre, dass einige Berechtigungen, die nicht einmal für einige Ressourcen existieren, erschienen wären, wenn der Administrator sie zuweisen würde.
Ich möchte also aus Sicht des Datenbankdesigns wissen, ob diese Tabellenberechtigung, die eine Spaltenoperation und eine andere Ressource enthält, korrekt ist. Werde ich Probleme bekommen, wenn es so bleibt?