Sto cercando di seguire il ruolo di base del modello di controllo dell'accesso per limitare ciò che gli utenti possono o non possono fare nel mio sistema.
Finora ho le seguenti entità:
utenti : persone che utilizzeranno il sistema. Qui ho username e password. ruoli - Raccolta di ruoli che gli utenti possono avere. Roba come manager, amministratore, ecc. risorse : elementi che gli utenti possono manipolare. Come i contratti, gli utenti, le 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:
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 di esso): ID: 1, operazione: crea, risorsa: contratto.
Che significa permesso 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 di contratti , gli utenti possono caricare file , ma questa operazione non è disponibile per la registrazione di un provider .
Quindi ora quando l'amministratore assegnerà le autorizzazioni a un ruolo , non disporrà di un elenco di risorse con ogni singola operazione registrata in il sistema.
Penso che ciascuna risorsa abbia una propria raccolta di operazioni che può essere eseguita su di lui.
Posso chiarire se qualcosa non è comprensibile.
È questo il modo corretto di implementare rbac?
Modifica
Ciò che intendo è che avendo una autorizzazione tabella che ha operazione e risorsa , ho DUE tabelle extra perché voglio associarla risorse con operazioni . Avrei anche potuto fare solo risorse avere permessi dove la tabella delle autorizzazioni memorizzerebbe le autorizzazioni.
Ma poi quello che sarebbe successo è che alcune autorizzazioni che non esistono nemmeno per alcune risorse sarebbero apparse quando l'amministratore le avrebbe assegnate.
Quindi voglio sapere da un punto di vista della progettazione del database se questa autorizzazione di tabella che ha un'operazione di una colonna e un'altra risorsa è corretta? Mi imbatterò in problemi se rimane così?