Oggi voglio parlare di un modello di progettazione utilizzato da moltissime aziende su come organizzare logicamente la sicurezza nei propri applicativi: Il Paradigma UGL.
La definizione
Un Paradigma è un modello a cui fare riferimento per realizzare un qualcosa; UGL è l'acronimo di Users (utenti) Groups (gruppi) e Livelli (levels). Quindi il Paradigma UGL è un modello di riferimento per progettare la sicurezza informatica delle applicazioni sviluppate. Esistono progettisti che alla parola Livelli sostituisce la parola Funzioni, ma il concetto rimane inalterato.
Questo paradigma è applicabile a qualunque struttura dati venga adottata dal progettista. A prescindere dal fatto che un utente abbia un attributo o mille attributi è possibile applicare UGL in quanto esso definisce come le entità sono legate fra loro.
Le categorie
Esistono molte varianti del Paradigma UGL standard ma fondamentalmente se ne possono riconoscere 2 macro-categorie:
- UGL fortemente interconnesso (interconnected)
- UGL gerarchicamente interconnesso (hierarchy based)
Tuttavia è abitudine comune chiamare il primo "interconnesso" ed il secondo "gerarchico". Il termine "fortemente interconnesso" risulterà familiare a coloro che hanno studiato progettazione di basi relazionali, ed indica il fatto che le relazioni fra le tre entità sono di tipo "molti-a-molti".
UGL (Fortemente) Interconnesso
Un utente può appartenere ad uno o più gruppi e può possedere (in più) uno o più livelli di sicurezza in aggiunta a quelli garantiti dall'appartenenza ad un gruppo. Se, ad esempio, esistono due utenti del gruppo Amministratore, è possibile assegnare ad uno dei due uno o più permessi specifici per ampliare la sua sfera di funzionalità.
Questa tipologia di UGL permette una maggiore flessibilità nell'assegnazione di diritti ad un determinato utente, tuttavia dopo svariati anni di funzionamento c'è il rischio di perdere l'ordine delle cose e trovare utenti che possiedono diritti non tanto per il gruppo di appartenenza ma quanto per l'assegnazione di specifici diritti.
La sua rappresentazione in un database relazionale è realizzata con tre tabelle per entità e tre tabelle di relazione fra le entità:
UGL Gerarchicamente Interconnesso o Gerarchico
Questa tipologia prevede che un utente possa appartenere ad uno o più gruppi ma che non possa avere diritti speciali per effettuare determinate operazioni.
I vantaggi nell'adottare questa tipologia è che permette una semplificazione della rappresentazione fisica e dell'interrogazione su database (perchè per interrogare un UGL Interconnesso serve delle select in union, per interrogare un UGL Gerarchico è sufficiente una sola query). Utile quindi nelle basi dati limitate o con basse prestazioni.
La sua rappresentazione in un database relazionale è la medesima dell'UGL Interconnesso, tuttavia la relazione fra utenti e livelli viene rimossa:
Altri tipi di UGL
Una estenzione dell'UGL Gerarchico è quello Piramidale(Pyramidal) in cui ogni gruppo è valorizzato da un numero intero e chi appartiene al gruppo con numero più alto appartiene implicitamente anche a quelli con numero più basso.
Esiste anche l'UGL Contestualizzato (context based) in cui l'abilitazione di un utente ad effettuare una determinata operazione è interbloccata dal contesto in cui si trova l'utente. Ad esempio: L'Amministratore possiede tutti i livelli, ma non gli è possibile accendere una centrale nucleare dalla web app del suo smartphone, deve recarsi fisicamente al pannello di controllo.
Nessun commento:
Posta un commento