Isolamento del tenant nell'applicazione multi-tenant
L'isolamento del tenant è un concetto chiave nelle applicazioni multi-tenant. In questo articolo, discuteremo di cosa si tratta e di come può essere raggiunto.
Ciao a tutti! In questo capitolo, approfondiremo le nostre precedenti discussioni sui temi multi-tenant. Se non hai ancora letto gli articoli precedenti, ti consigliamo di iniziare con quelli!
Quando si discute di applicazioni multi-tenant, è importante pensare all'isolamento del tenant. Questo significa mantenere separati e sicuri i dati e le risorse dei diversi tenant all'interno di un sistema condiviso (ad esempio, un'infrastruttura cloud o un'applicazione multi-tenant).
L'obiettivo dell'isolamento del tenant è garantire che i dati e le operazioni di ciascun tenant rimangano distinti e sicuri l'uno dall'altro, anche quando utilizzano le stesse risorse sottostanti.
In uno scenario Software as a Service (SaaS), l'isolamento del tenant comporta la creazione di strutture all'interno del framework SaaS che regolano strettamente l'accesso alle risorse. Questo previene qualsiasi tentativo non autorizzato di accedere alle risorse di un altro tenant.
Anche se la spiegazione potrebbe sembrare astratta, utilizzeremo esempi e dettagli chiave per spiegare ulteriormente la mentalità dell'isolamento.
L'isolamento del tenant non contrasta con la mentalità "condivisa" del multi-tenancy
Questo perché l'isolamento del tenant non è necessariamente una costruzione a livello di risorsa infrastrutturale. Nel regno della multi-tenancy e dell'isolamento, alcuni vedono l'isolamento come una divisione rigida tra le risorse infrastrutturali effettive. Questo di solito porta a un modello in cui ciascun tenant ha database separati, istanze di calcolo, account o cloud privati. In scenari di risorse condivise, come le app multi-tenant, il modo per raggiungere l'isolamento può essere una costruzione logica.
L'isolamento del tenant si concentra esclusivamente sull'utilizzo del contesto del "tenant" per limitare l'accesso alle risorse. Valuta il contesto del tenant corrente e utilizza quel contesto per determinare quali risorse sono accessibili per quel tenant. Applica questo isolamento a tutti gli utenti all'interno di quel tenant. Qualsiasi tentativo di accedere a una risorsa di un tenant dovrebbe essere limitato a quelle risorse che appartengono a quel tenant.
L'isolamento esiste a diversi livelli
Quando comprendiamo che l'isolamento non è strettamente legato ai livelli delle risorse infrastrutturali e non è una chiara separazione tra infrastrutture fisiche, porta a una conclusione come questa:
Invece di vedere l'isolamento come un semplice "sì" o "no", consideralo come uno spettro. Puoi configurare parti del tuo sistema per essere più o meno isolate in base a ciò di cui hai bisogno.
Il diagramma seguente illustra questo spettro di isolamento.
Autenticazione e autorizzazione non equivalgono a "isolamento"
Utilizzare autenticazione e autorizzazione per controllare l'accesso ai tuoi ambienti SaaS è importante, ma non è sufficiente per un isolamento completo. Questi meccanismi sono solo una parte del puzzle della sicurezza.
Le persone spesso chiedono se possono usare soluzioni di autorizzazione generali e controllo degli accessi basato su ruoli per ottenere l'isolamento del tenant. Puoi costruire un'app multi-tenant ma non puoi dire di aver raggiunto e utilizzato strategie di isolamento del tenant come migliore pratica. Generalmente non lo raccomandiamo perché
Per illustrare, considera una situazione in cui hai impostato l'autenticazione e l'autorizzazione per il tuo sistema SaaS. Quando gli utenti accedono, ricevono un token contenente informazioni sul loro ruolo, che ne determina cosa possono fare nell'applicazione. Questo approccio potenzia la sicurezza ma non garantisce l'isolamento.
Ora, ecco il problema: senza incorporare il contesto del "tenant", come un ID tenant, per limitare l'accesso alle risorse, fare affidamento solo sull'autenticazione e autorizzazione non impedirà a un utente con il ruolo giusto di accedere alle risorse di un altro tenant.
È qui che entra in gioco l'isolamento del tenant. Utilizza identificatori specifici del tenant per stabilire i confini, proprio come muri, porte e serrature, garantendo una chiara separazione tra gli inquilini.
Identità nelle app multi-tenant
Abbiamo discusso dell'isolamento del tenant, ma che dire delle identità? Come decidi se le tue identità dovrebbero essere "isolate" o no?
Spesso c'è confusione intorno al concetto di "isolamento dell'identità." Potrebbe riferirsi a situazioni in cui un utente reale ha due identità nella comprensione generale delle persone.
- Entrambe le identità possono esistere all'interno di un singolo sistema di identità. Ad esempio, Sarah potrebbe avere una email personale registrata insieme ad un'email aziendale collegata tramite single sign-on (SSO).
- Gli utenti mantengono due identità distinte all'interno di sistemi di identità separati, che rappresentano prodotti completamente separati. Questi prodotti sono completamente non correlati tra loro.
A volte, questi scenari vengono chiamati "identità isolate." Tuttavia, questa etichetta potrebbe non aiutare a prendere una decisione.
Piuttosto che determinare se hai bisogno di "isolamento dell'identità", considera se tu o un segmento del tuo business o prodotto avete bisogno di mantenere sistemi di identità separati. Questa risposta può guidare il design del tuo sistema di gestione delle identità e degli accessi (IAM). Per una breve risposta relativa a un'app multi-tenant,
Nella maggior parte dei casi, nelle app multi-tenant, le identità sono condivise mentre le risorse di ciascun tenant sono isolate.
Nelle applicazioni multi-tenant, le identità, a differenza delle risorse e dei dati specifici del tenant, sono condivise tra più tenant. Immaginati come amministratore del palazzo; non vorresti mantenere due elenchi di nomi separati per gestire le identità dei tuoi tenant.
Quando si mira all'isolamento del tenant, potresti aver osservato l'enfasi ricorrente sul termine "organizzazione," spesso considerata una migliore pratica per costruire applicazioni multi-tenant.
Utilizzando il concetto di "organizzazione," puoi ottenere l'isolamento del tenant nella tua applicazione multi-tenant mantenendo al contempo un sistema di identità unificato. Questo consente a più "organizzazioni" di coesistere, indipendentemente, ma condividere risorse senza riferimento al tenant all'interno dell'applicazione. Simile ai residenti che vivono in un edificio, ciascuna organizzazione utilizza l'applicazione senza preoccuparsi dei vicini, poiché l'"organizzazione" fornisce la separazione necessaria sotto forma di muri, corridoi, porte e serrature. Condividono l'infrastruttura complessiva dell'edificio, il sistema di design degli interni e vari componenti tangibili o intangibili.
Logto sta introducendo la funzionalità "Organizzazione" a novembre
Logto è attualmente in fase di sviluppo attivo della funzionalità "Organizzazione", con l'obiettivo di un lancio nel novembre 2023. Questa funzionalità è specificamente progettata per soddisfare i requisiti di isolamento del tenant necessari per costruire un prodotto SaaS, allineandosi agli standard e alle migliori pratiche del settore.
Nel capitolo successivo, approfondiremo ulteriormente la funzionalità "Organizzazione" e come Logto facilita l'implementazione delle migliori pratiche per la creazione di un'applicazione multi-tenant.