

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tipi di controllo degli accessi
<a name="access-control-types"></a>

È possibile utilizzare due modelli ampiamente definiti per implementare il controllo degli accessi: controllo degli accessi basato sui ruoli (RBAC) e controllo degli accessi basato sugli attributi (ABAC). Ciascun modello presenta vantaggi e svantaggi, descritti brevemente in questa sezione. Il modello da utilizzare dipende dal caso d'uso specifico. L'architettura descritta in questa guida supporta entrambi i modelli.

## RBAC
<a name="rbac"></a>

Il controllo degli accessi basato sul ruolo (RBAC) determina l'accesso alle risorse in base a un ruolo che di solito è in linea con la logica aziendale. Le autorizzazioni sono associate al ruolo a seconda dei casi. Ad esempio, un ruolo *di marketing* autorizzerebbe un utente a svolgere attività di *marketing* all'interno di un sistema limitato. Si tratta di un modello di controllo degli accessi relativamente semplice da implementare perché si allinea bene a una logica aziendale facilmente riconoscibile. 

Il modello RBAC è meno efficace quando: 
+ Hai utenti unici le cui responsabilità comprendono diversi ruoli. 
+ Avete una logica aziendale complessa che rende difficile la definizione dei ruoli. 
+ Il passaggio a grandi dimensioni richiede un'amministrazione e una mappatura costanti delle autorizzazioni per ruoli nuovi ed esistenti. 
+ Le autorizzazioni si basano su parametri dinamici.

## ABAC
<a name="abac"></a>

Il controllo degli accessi basato sugli attributi (ABAC) determina l'accesso alle risorse in base agli attributi. Gli attributi possono essere associati a un utente, a una risorsa, a un ambiente o persino allo stato dell'applicazione. I criteri o le regole fanno riferimento agli attributi e possono utilizzare la logica booleana di base per determinare se un utente è autorizzato a eseguire un'azione. Ecco un esempio di base di autorizzazioni: 

*Nel sistema di pagamento, tutti gli utenti del reparto finanziario possono elaborare i pagamenti presso l'endpoint API `/payments` durante l'orario lavorativo.*

L'appartenenza al dipartimento finanziario è un attributo utente che determina l'accesso a`/payments`. Esiste anche un attributo di risorsa associato all'endpoint `/payments` API che consente l'accesso solo durante l'orario lavorativo. In ABAC, la capacità di un utente di elaborare o meno un pagamento è determinata da una politica che include l'appartenenza al dipartimento finanziario come attributo utente e l'ora come attributo di risorsa di. `/payments`

Il modello ABAC è molto flessibile nel consentire decisioni di autorizzazione dinamiche, contestuali e granulari. Tuttavia, il modello ABAC è difficile da implementare inizialmente. La definizione di regole e politiche, nonché l'enumerazione degli attributi per tutti i vettori di accesso pertinenti, richiedono un investimento iniziale significativo per l'implementazione.

## Approccio ibrido RBAC-ABAC
<a name="hybrid"></a>

La combinazione di RBAC e ABAC può offrire alcuni dei vantaggi di entrambi i modelli. RBAC, essendo così strettamente allineato alla logica aziendale, è più semplice da implementare rispetto all'ABAC. Per fornire un ulteriore livello di granularità quando si prendono decisioni di autorizzazione, è possibile combinare ABAC con RBAC. Questo approccio ibrido determina l'accesso combinando il ruolo dell'utente (e le autorizzazioni assegnate) con attributi aggiuntivi per prendere decisioni di accesso. L'utilizzo di entrambi i modelli consente una semplice amministrazione e assegnazione delle autorizzazioni, consentendo al contempo una maggiore flessibilità e granularità relative alle decisioni di autorizzazione.

## Confronto dei modelli di controllo degli accessi
<a name="comparison"></a>

La tabella seguente mette a confronto i tre modelli di controllo degli accessi discussi in precedenza. Questo confronto vuole essere informativo e di alto livello. L'utilizzo di un modello di accesso in una situazione specifica potrebbe non essere necessariamente correlato ai confronti effettuati in questa tabella.


|  |  |  |  | 
| --- |--- |--- |--- |
| **Fattore** | **RBAC** | **ABAC** | **Ibrido** | 
| **Flessibilità** | Media  | Elevata | Elevata | 
| **Semplicità** | Elevata | Bassa | Media | 
| **Granularity** (Granularità) | Bassa | Elevata | Media | 
| **Decisioni e regole dinamiche** | No | Sì | Sì | 
| **Consapevole al contesto** | No | Sì | Un po' | 
| **Sforzo di implementazione** | Bassa | Elevata | Media | 