Diciamo che ho utenti, gruppi (o "ruoli") e risorse, e voglio gestire varie autorizzazioni su quelle risorse. Per quanto posso vedere, ci sono due "filosofie" principali quando si tratta di autorizzazioni.
Per mancanza di una parola migliore, chiamerò il primo " basato sulla precedenza " e verrà utilizzato, ad esempio, da NTFS o SQL Server :
* All Resources: DENY Group G1
* All Resources: ALLOW Group G2
* Resource R1: ALLOW Group G1
* Resource R1: ALLOW User U
Hai un insieme (configurabile) non ordinato di autorizzazioni e un elenco (incorporato) di regole di precedere (ad es. "permessi utente sovrascrivono le autorizzazioni di gruppo", "Le autorizzazioni DENY sovrascrivono CONSENTONO le autorizzazioni" , ecc.) che determinano quale regola si applica.
L'altro sistema, che chiamerò " basato sull'ordine ", viene utilizzato, ad esempio, da iptables :
1. Resource R1: ALLOW User U
2. All Resources: DENY Group G1
3. Resource R1: ALLOW Group G1
4. All Resources: ALLOW Group G2
(5. DENY)
Abbiamo un elenco di regole (configurabili) ordinate (con una regola DENY o ALLOW implicita finale). Vengono elaborati in sequenza e viene applicata la prima regola di corrispondenza.
Sono tentato di scegliere il secondo sistema, perché sembra (a) molto più semplice da capire (senza regole di precedenza complesse) e (b) più potente (solo un sentimento istintivo).
Tuttavia, anche il primo sistema è ampiamente utilizzato, quindi sicuramente deve avere alcuni vantaggi. Cosa sono?