Confronto tra modelli di implementazione centralizzati e distribuiti - AWS Guida prescrittiva

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à.

Confronto tra modelli di implementazione centralizzati e distribuiti

È possibile implementare OPA secondo uno schema di distribuzione centralizzato o distribuito e il metodo ideale per un'applicazione multi-tenant dipende dal caso d'uso. Per esempi di questi modelli, vedere le sezioni Utilizzo di un PDP centralizzato con PEP sulle API e Utilizzo di un PDP distribuito e PEP sulle API più avanti di questa guida. Poiché OPA può essere distribuito come demone in un sistema operativo o contenitore, può essere implementato in diversi modi per supportare un'applicazione multi-tenant.

In uno schema di distribuzione centralizzato, OPA viene distribuito come contenitore o daemon con la sua API RESTful disponibile per altri servizi dell'applicazione. Quando un servizio richiede una decisione da parte dell'OPA, viene chiamata l'API OPA RESTful centrale per produrre tale decisione. Questo approccio è semplice da implementare e gestire, poiché esiste una sola implementazione di OPA. L'aspetto negativo di questo approccio è che non fornisce alcun meccanismo per mantenere la separazione dei dati degli inquilini. Poiché esiste una sola implementazione dell'OPA, tutti i dati dei tenant utilizzati in una decisione OPA, inclusi i dati esterni a cui fa riferimento l'OPA, devono essere disponibili per OPA. È possibile mantenere l'isolamento dei dati dei tenant con questo approccio, ma deve essere applicato dalla politica e dalla struttura dei documenti dell'OPA o dall'accesso ai dati esterni. Un modello di distribuzione centralizzato richiede anche una latenza più elevata, poiché ogni decisione di autorizzazione deve effettuare una chiamata API RESTful a un altro servizio.

In un modello di distribuzione distribuito, l'OPA viene distribuito come contenitore o daemon insieme ai servizi dell'applicazione multi-tenant. Potrebbe essere distribuito come contenitore secondario o come daemon che viene eseguito localmente sul sistema operativo. Per recuperare una decisione dall'OPA, il servizio effettua una chiamata API RESTful alla distribuzione OPA locale. (Poiché OPA può essere distribuito come pacchetto Go, puoi utilizzare Go in modo nativo per recuperare una decisione invece di utilizzare una chiamata API RESTful.) A differenza del modello di distribuzione centralizzato, il modello distribuito richiede uno sforzo molto più consistente per l'implementazione, la manutenzione e l'aggiornamento perché è presente in più aree dell'applicazione. Un vantaggio del modello di distribuzione distribuito è la capacità di mantenere l'isolamento dei dati dei tenant, in particolare per le applicazioni che utilizzano un modello SaaS in silos. I dati specifici del tenant possono essere isolati nelle distribuzioni OPA specifiche per quel tenant, poiché l'OPA in un modello distribuito viene distribuito insieme al tenant. Inoltre, un modello di distribuzione distribuito ha una latenza molto inferiore rispetto a un modello di distribuzione centralizzato, poiché ogni decisione di autorizzazione può essere presa localmente.

Quando scegliete un modello di distribuzione OPA nella vostra applicazione multi-tenant, assicuratevi di valutare i criteri più critici per la vostra applicazione. Se l'applicazione multi-tenant è sensibile alla latenza, un modello di distribuzione distribuito offre prestazioni migliori a scapito di implementazioni e manutenzioni più complesse. Sebbene sia possibile gestire parte di questa complessità tramite DevOps l'automazione, richiede comunque uno sforzo aggiuntivo rispetto a un modello di implementazione centralizzato.

Se la tua applicazione multi-tenant utilizza un modello SaaS in silos, puoi utilizzare un modello di distribuzione OPA distribuito per imitare l'approccio in silos all'isolamento dei dati dei tenant. Questo perché, quando OPA viene eseguito insieme a ciascun servizio applicativo specifico del tenant, è possibile personalizzare ogni distribuzione OPA in modo che contenga solo i dati associati a quel tenant. Non è possibile isolare i dati OPA in un modello di distribuzione OPA centralizzato. Se si utilizza un modello di distribuzione centralizzato o un modello distribuito insieme a un modello SaaS in pool, l'isolamento dei dati dei tenant deve essere mantenuto nel modello di documento OPA.