Sto progettando un modello di sicurezza per un'applicazione web che limita l'accesso a determinate parti dell'app a seconda dei diritti e delle autorizzazioni dell'utente. Questi diritti e permessi sono raggruppati in ruoli a cui ogni utente può essere assegnato.
Tuttavia, ho bisogno di creare un ruolo di amministratore di sistema che dia ad un utente speciale pieno accesso a tutto. Per affrontarlo, posso affrontarlo in due modi:
- Crea un ruolo di amministratore di sistema e dargli ogni singolo permesso / diritto nel sistema (in pratica tutti i diritti sono memorizzati in una tabella DB). Mentre l'applicazione si evolve e diventa più grande, il Anche il ruolo di amministratore deve essere aggiornato in modo che possa accedere a cose nuove.
- All'interno dell'applicazione stessa, autorizzo il sistema Ruolo dell'amministratore per aggirare le restrizioni di sicurezza. Quindi essenzialmente controllerà se l'utente ha una certa autorizzazione, o se è a Amministratore di sistema, li lascerà passare.
L'opzione 1 presenta alcuni problemi: potrebbe essere noioso e soggetto a supervisione perché ogni area dell'applicazione ha Crea, Leggi, Aggiorna, Scrivi e molte altre autorizzazioni. Devo includere tutte le possibili combinazioni di aree applicative in permessi in una tabella per consentire al ruolo di avere accesso completo.
L'opzione 2 presenta i propri problemi: il bypass dell'amministratore di sistema è codificato in ogni singola area in cui è necessaria una restrizione. Se il nome del ruolo di amministratore di sistema dovesse cambiare (ad esempio Utente principale), dovrei aggiornare il codice ovunque. Tuttavia, questa opzione significa che non devo preoccuparmi di aggiornare costantemente la tabella dei ruoli in modo che l'amministratore di sistema ottenga l'autorizzazione ad accedere a nuovi elementi.
Sto costruendo un software di classe enterprise, quindi deve essere scalabile a prescindere dall'opzione che scelgo.
Sì, lo so che è molto soggettivo se viene trattato allo stesso modo. Ma credo che ci sia un modello di progettazione di sicurezza di buona pratica in cui un modo è consigliato rispetto all'altro. Ci sono cose che non posso prevedere in questo momento che altri potrebbero aver incontrato. Potrei anche apprezzare alcuni link a pensieri su questo e buon modo per andare avanti.