Sto cercando di seguire il modello di controllo dell'accesso basato sui ruoli per limitare ciò che gli utenti possono o non possono fare nel mio sistema.
Finora ho le seguenti entità:
utenti : persone che useranno il sistema. Qui ho nomi utente e password. ruoli : raccolta di ruoli che gli utenti possono avere. Oggetti come risorse manager, admin, ecc. - Cose che gli utenti possono manipolare. Come contratti, utenti, bozze di contratto, ecc. Operazioni : cose che gli utenti possono fare con le risorse. Come creare, leggere, aggiornare o eliminare.
Ora, il mio dubbio sorge qui nel diagramma in cui ho una relazione come questa:
le operazioni (0 .. *) vengono eseguite su risorse (0 .. *) che genera una tabella che ho chiamato permessi e che memorizzerà l' operazione e la risorsa .
La tabella delle autorizzazioni sarà simile a questa (una riga): ID: 1, operazione: crea, risorsa: contratto.
Il che significa un'autorizzazione per creare un contratto .
L'ho fatto in questo modo perché ritengo che alcune risorse potrebbero non avere tutti i tipi di operazioni. Ad esempio, per la registrazione dei contratti , gli utenti possono caricare file , ma questa operazione non è disponibile per la registrazione di un provider .
Quindi ora quando l' amministratore darà le autorizzazioni a un ruolo , non avrà un elenco di risorse con ogni singola operazione registrata nel sistema.
Penso che ogni risorsa abbia una propria raccolta di operazioni che possono essere eseguite su di lui.
Posso chiarire se qualcosa non è comprensibile.
È questo il modo corretto di implementare l'rbac?
MODIFICARE
Quello che voglio dire è che avendo una tabella delle autorizzazioni che ha operazioni e risorse , ho DUE tabelle extra perché voglio associare risorse alle operazioni . Avrei potuto anche semplicemente fare delle risorse con autorizzazioni in cui la tabella delle autorizzazioni avrebbe memorizzato le autorizzazioni.
Ma ciò che sarebbe accaduto è che alcune autorizzazioni che non esistono nemmeno per alcune risorse sarebbero apparse quando l'amministratore le avrebbe assegnate.
Quindi voglio sapere dal punto di vista della progettazione del database se questa autorizzazione della tabella che ha un'operazione di colonna e un'altra risorsa è corretta? Incontrerò problemi se rimane così?