Considerazioni su RBS, Ruoli e UserType

Credo che uno degli errori più diffusi e sia quello di confondere e/o unire il concetto di UserType con il concetto di ruolo. La Role Based Security (RBS) si basa sul concetto che un utente è associato a più ruoli e un ruolo identifica uno scope di azioni all’interno del applicazione/sistema.  Un utente quindi non ricopre un solo ruolo ma può ricoprire più ruoli. 

(E’ mia opinione che i ruoli costituiscano insiemi non sovrapponibilili di azioni anche se non ci sono vere e proprie contraddizioni a fare il contrario. A tal proposito è interessante notare che sebbene quando si crea un utente si possono associare più ruoli esiste il solo metodo IsInRole che controlla se un utente appartiene ad un determinato ruolo e non esiste il metodo IsInRoles per controllare se un utente appartiene a più ruoli. Anche se è ovvio che non è difficile implementare il metodo in una classe di utilità, la cosa dovrebbe farci pensare che forse non è/era nella filosofia della RBS dover fare un check sull’appartenenza a più ruoli. Ma su questa questione preferisco approfondire in un altro momento e continuare invece sull’argomento principale.)

Nella RBS un utente è associato a molti ruoli e i ruoli sono definiti ByDesign nell’applicazione e registrati poi nel sistema di gestione degli utenti per poter configurare le assocazione utente-ruoli. 

Cosa significa lavorare con lo UserType? Lavorare con il concetto di  UserType  significa che applicativamente sono definiti gli scope di azione di ogni singola tipologia di utente ed un utente è associato ad un solo tipo. Aggiungere una nuova tipologia di utente nell’applicazione potrebbe voler dire rivederla interamente per definire lo scope delle azioni di questo nuovo tipo di utente.

Come possono convivere UserType e RBS? Ha senso fare convirere le due metodologie? E' mia opinione che ha senso farle convivere e si modo di presentare la secuirty in modo più usabile/intuibile. Quando l’applicazione inizia a richiedere la gestione di sempre più ruoli, di conseguenza si ha una complicazione della parte amministrativa che si vede impegnata in una gestione troppo complessa per quanto riguarda le associazioni di un utente con i molti/troppi ruoli. L’impiegato/systemista che deve gestire le authorizzazioni ad un sistema è più facilitato se può dire che un utente è di un certo tipo senza perdersi in configurazioni troppo complesse con il rischio di impiegare troppo tempo e  sbagliare. 

(Qui si potrebbe aprire una parentesi per dire che è tendenza di un tecnico portare verso l’alto l’intero potenziale delle tecnologie/systema in uso invece di presentare il potenziale del sistema nel modo più semplice per l’utilizzatore finale.)

Nel far convivere UserType e RBS si ha che i ruoi non sono associati direttamente all’utente ma alla tipologia di utente. Un utente è associato ad un solo tipo e il tipo è associato a più ruoli e di conseguenza anche l’utente è indirittamente legato a più ruoli. Il sistema potrà continuare a godere delle potenzialità della RBS e la parte amministrativa sarà facilitata nel poter creare semplicemente utenti che saranno di una tipologia ben definita. 

L’associazione UserType-Role ovviamente rimane e qundi si potrebbe dire che si è solo spostato il problema. Ma ora il problema si è spostato in quelle che si potrebbero chiamare configurazione avanzate  (manuale o gestita da interfaccia) o addirittura in fase di setup del sistema  (manuale o automatico). La definizione di nuovo UserType è quindi qualcosa che ha impatto solo a livello di configurazione e non ha impatto sull'applicazione perchè NON è incluso ByDesign perchè NON è parte applicativa.

posted @ giovedì 20 luglio 2006 9.43

Print

Comments on this entry:

# re: Considerazioni su RBS, Ruoli e UserType

Left by Andrea Raimondi at 20/07/2006 10.52
Gravatar
Ciao.

Non sono completamente d'accordo, architetturalmente parlando.

Quando mi trovai a fare ricerca per un sistema di gestione documentale, prevedemmo dei gruppi di ruoli, un pò come i tuoi UserType, solo che i nostri gruppi erano associabili ad un singolo utente.

L'idea di base, insomma, è che un utente poteva essere autore, revisore, ecc, solo non dei documenti in cui ha altri ruoli.

Questo ci liberava, da una parte, dai problemi dei ruoli, dandoci maggiore libertà anche di configurazione.

L'idea di base, insomma, è che il sistema dev'essere adattabile anche al cambio di situazione, quindi FORSE, più UserType dovrebbero essere associabili ad un singolo utente.

Questo porta ad una enorme semplificazione della configurazione, perché non devi più prevedere dei "mega UserType", ma ti basta associarne più di uno al singolo utente per dargli modo di svolgere più funzioni a seconda del contesto in cui si trova, e contemporaneamente fa perdere molto meno tempo all'admin, che non si trova più a dover gestire molti tipi diversi di cose, magari dovendo aggiornare uno UserType perché è cambiato il contesto.

Ultima cosa: gli UserType dovrebbero essere configurabili singolarmente anche nei defaults, così da semplificare ancora le cose.

Che ne pensi?

Ciao,

Andrea

# re: Considerazioni su RBS, Ruoli e UserType

Left by M.rkino at 20/07/2006 11.21
Gravatar
Ciao andrea, penso che nel momento in cui dici che un utente può essere associato a più usertype allora stai chiamando usertype quello che poi è il ruolo.... cose che fa - IMHO - cadere in una serie infinita di problemi perchè vengono mischiati concetti diversi e portata compessità verso l'alto.

Nel momento in cui poi si vogliono creare delle associazioni/permessi a livello di dato si esce dalla RBS e non si deve più parlare ne di ruoli e ne di tipologia di utente. Quando si deve definire la paternità dei dati e i permessi sui dati viene comodo l'uso dell'accountability di MArtin Fowler, http://www.martinfowler.com/apsupp/accountability.pdf. Non solo utile per la gestione delle organizzazioni a sruttura complessa ma anche per definire le relazioni tra party che non sono necessariamente persone fisiche e/o guiridiche ma anche documenti e oggetti...

# re: [Daily Issue] Comprendere la sezione

Left by NeatCoding at 25/06/2007 15.35
Gravatar

Your comment:



 (will not be displayed)


 
 
 
Please add 2 and 7 and type the answer here:
 

Live Comment Preview:

 
«febbraio»
domlunmarmergiovensab
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910