RBAC vs Isolamento dei Tenant: Due Confini di Sicurezza Diversi

Il controllo RBAC stabilisce cosa può fare un utente; l'isolamento dei tenant stabilisce a quali risorse di quale tenant può accedere tale azione. Scopri perché la sicurezza SaaS multi-tenant richiede entrambi i confini.
Pubblicato:
Aleksandar Stajić
Aggiornato: 8 ottobre 2026 alle ore 20:56
RBAC vs Isolamento dei Tenant: Due Confini di Sicurezza Diversi

RBAC e isolamento dei tenant risolvono due problemi di sicurezza diversi nei sistemi multi-tenant. Il controllo degli accessi basato sui ruoli (RBAC) determina cosa è consentito fare a un principal autenticato, come leggere ordini, modificare prodotti o gestire utenti. L'isolamento dei tenant determina a quali dati, risorse e contesto di esecuzione di quale tenant quel principal è autorizzato ad accedere. Un utente può essere correttamente autenticato e correttamente assegnato a un ruolo RBAC e tuttavia subire un fallimento di sicurezza se l'applicazione consente a quel ruolo di operare sulle risorse di un altro tenant.

Cosa controlla realmente RBAC

RBAC è un modello di autorizzazione in cui i permessi sono associati ai ruoli e gli utenti sono assegnati a tali ruoli. Il ruolo funge da astrazione amministrativa tra identità e permessi.

Il lavoro classico di NIST su RBAC formalizza questo concetto attorno a utenti, ruoli, permessi, operazioni e oggetti. Il vantaggio pratico è che un'organizzazione può gestire l'autorizzazione attraverso ruoli relativamente stabili basati su mansioni o responsabilità, invece di collegare ogni permesso direttamente a ogni utente.

Un ruolo come EDITOR può quindi significare: può leggere contenuti, scrivere contenuti e pubblicare contenuti. Un ruolo come ACCOUNTANT può significare: può leggere dati di fatturazione, riconciliare fatture e approvare regolamenti.

Cosa controlla realmente l'isolamento dei tenant

L'isolamento dei tenant è l'insieme dei meccanismi che impediscono a un tenant di leggere, modificare, influenzare o ricevere accidentalmente le risorse di un altro tenant in un sistema condiviso.

Il confine protetto è più ampio delle righe del database. Lo stato specifico di un tenant può esistere in tabelle relazionali, object storage, indici vettoriali, cache, indici di ricerca, messaggi in coda, file, artefatti temporanei, job in background, analisi, limiti di velocità e risorse infrastrutturali.

Le linee guida AWS per SaaS rendono esplicita la distinzione: l'autorizzazione concede l'accesso alle risorse, mentre l'isolamento dei tenant garantisce che tali risorse non possano attraversare il confine del tenant sbagliato anche quando l'infrastruttura è condivisa.

L'esempio più semplice

Supponiamo che Alice sia un'amministratrice del Tenant A e Bob sia un amministratore del Tenant B. Entrambi gli utenti possiedono legittimamente lo stesso ruolo ADMIN.

RBAC può correttamente concludere che entrambi gli utenti possono eseguire un'operazione come users.read. Ma quando Alice richiede l'ID utente 847, l'applicazione deve comunque verificare che l'utente 847 appartenga al Tenant A.

Se l'API controlla solo "Alice ha ADMIN" e poi esegue SELECT * FROM users WHERE id = 847, RBAC ha avuto successo mentre l'isolamento dei tenant ha fallito.

Una decisione di autorizzazione multi-tenant corretta

1
1. Autenticare il principal
Stabilire chi è l'utente, il servizio o l'agente.
2
2. Risolvere il contesto di tenant verificato
Determinare quale contesto di tenant si applica dalle informazioni attendibili lato server su identità/appartenenza.
3
3. Risolvere il permesso
Valutare se il ruolo o la policy del principal consente l'operazione richiesta.
4
4. Delimitare la risorsa di destinazione
Verificare che l'oggetto di destinazione appartenga al tenant consentito o a un ambito esplicitamente condiviso.
5
5. Applicare al confine di accesso
Eseguire l'operazione su database, cache, storage, coda o servizio con i vincoli di tenant applicati.
6
6. Verificare entrambe le dimensioni
Registrare principal, tenant, operazione, destinazione e risultato in modo che i tentativi cross-tenant siano visibili.

Dove si ferma l'esempio semplice

I sistemi reali spesso contengono diverse classi di identità: utenti tenant, amministratori di piattaforma, worker in background, integrazioni, agenti e servizi operativi cross-tenant. Alcune di queste attraversano legittimamente i confini dei tenant.

Ciò non elimina la necessità di isolamento. Significa che l'autorità cross-tenant deve essere esplicita, ristretta e verificabile separatamente, invece di emergere accidentalmente da un ruolo globale o da una connessione al database senza scope.

L'isolamento dei tenant può anche variare a seconda del livello. Un prodotto può condividere i server applicativi separando i database, oppure utilizzare un database condiviso con policy a livello di riga, offrendo al contempo ai tenant premium storage o capacità di calcolo isolati. Non esiste un'unica topologia di isolamento universale.

RBAC vs isolamento dei tenant

Due diverse dimensioni di sicurezza

RBACIsolamento dei tenant
Domanda principale
Unità tipica
Esempio
Errore tipico
Implementazione tipica
Può esistere da solo?

Autenticazione, autorizzazione e isolamento sono tre controlli diversi

LivelloDomandaEsempio di errore
AutenticazioneChi è questo principale?L'attaccante si spaccia per Alice
Autorizzazione / RBACQuesto principale può eseguire questa operazione?Un visualizzatore può eliminare utenti
Isolamento dei tenantQuesta operazione può raggiungere questo confine di tenant/risorsa?L'amministratore del Tenant A legge l'ordine del Tenant B

Questi controlli sono correlati ma non sostituibili. L'autenticazione può essere perfetta mentre l'autorizzazione fallisce. L'autorizzazione può essere corretta mentre l'isolamento dei tenant fallisce. Un percorso di richiesta SaaS sicuro necessita di tutti i confini applicabili.

I ruoli necessitano di uno scope

La parola ADMIN è incompleta senza scope. Può significare amministratore di piattaforma, amministratore di tenant, amministratore di progetto, amministratore di workspace o amministratore di un sottosistema.

Nei sistemi multi-tenant, l'assegnazione dei ruoli dovrebbe normalmente essere associata all'appartenenza al tenant o a un altro scope esplicito della risorsa. Lo stesso utente può legittimamente essere ADMIN nel Tenant A e VIEWER nel Tenant B.

Un modello di ruoli globale che ignora questa distinzione può creare una fuga di privilegi anche quando la mappa dei permessi stessa è corretta.

Il contesto del tenant deve provenire da un percorso attendibile

Un ID tenant fornito dal client è utile come selettore, ma non è prova di autorità. Il server deve derivare o verificare l'appartenenza al tenant rispetto all'identità autenticata e ai dati di autorizzazione correnti.

Le attuali linee guida multi-tenant di OWASP raccomandano di stabilire il contesto del tenant all'inizio del ciclo di vita della richiesta e mettono esplicitamente in guardia dal trattare header del client o parametri della richiesta come prova di autorizzazione.

Questo è importante perché una banale modifica della richiesta da tenant=A a tenant=B non deve essere sufficiente per superare il confine di isolamento.

Lo scope del tenant appartiene alla ricerca della risorsa

Un modello comune di isolamento a livello applicativo consiste nell'includere lo scope del tenant nella stessa query che risolve la risorsa.

Ricerca deboleRicerca più robusta con scope del tenant
findFirst({ where: { id } })findFirst({ where: { id, tenantId } })
UPDATE orders SET ... WHERE id = ?UPDATE orders SET ... WHERE id = ? AND tenant_id = ?
cache.get('user:' + id)cache.get('tenant:' + tenantId + ':user:' + id)

Questo modello non è l'unico meccanismo di isolamento possibile, ma mantiene la proprietà del tenant vicina all'operazione di accesso ai dati e impedisce che un ID oggetto diventi una capability cross-tenant.

I controlli applicativi sono utili, ma l'isolamento non dovrebbe dipendere da un comportamento perfetto degli sviluppatori

Le linee guida sull'isolamento di AWS mettono esplicitamente in guardia dal lasciare l'applicazione dell'isolamento solo agli sviluppatori dei servizi. In una grande codebase, prima o poi una query, una chiave di cache o un percorso di un worker potrebbe omettere lo scope del tenant.

La difesa in profondità può quindi spostare l'isolamento in middleware condiviso, livelli repository/service, motori di policy, Row-Level Security del database, credenziali dedicate, schemi separati o database separati a seconda del rischio e dell'architettura.

Strategie di isolamento del database

StrategiaConfineForza / compromesso
Tabelle condivise + chiave tenantPolicy a livello di riga/applicazioneEfficiente dal punto di vista operativo; richiede uno scoping esaustivo del tenant e test solidi
Tabelle condivise + RLS del databaseConfine della policy del databaseRiduce la dipendenza da ogni query applicativa; richiede ruoli corretti, contesto tenant di sessione/transazione e copertura delle policy
Schemi separatiConfine di namespace / ruolo DBSeparazione logica più forte; maggiore complessità operativa
Database separatiConfine di database / credenzialiIsolamento forte e gestione del blast radius più semplice; costi di provisioning e operativi più elevati
Infrastruttura/account separatiConfine infrastrutturaleSeparazione a grana grossa più forte; costi e overhead operativo più elevati
IbridoPer carico di lavoro/classe di datiConsente un isolamento più forte solo dove rischio/conformità lo giustificano

L'attuale Multi-Tenant Security Cheat Sheet di OWASP elenca database separati, schemi separati, tabelle condivise con controlli a livello di riga e modelli ibridi. Il modello corretto dipende dal livello di minaccia, dalla conformità, dalle prestazioni e dal costo operativo.

PostgreSQL Row-Level Security può fornire difesa in profondità

Con tabelle condivise, PostgreSQL Row-Level Security può applicare un predicato tenant a livello di database, così le query ordinarie non possono vedere righe al di fuori della policy del tenant attivo.

Tuttavia, RLS non è magia. I superuser di PostgreSQL e i ruoli con BYPASSRLS possono bypassare le policy a livello di riga. OWASP raccomanda quindi di utilizzare un ruolo con privilegi minimi per il percorso di richiesta e di testare la stessa modalità di connessione/pooling usata in produzione.

Il riutilizzo delle connessioni è un altro caso limite importante: il contesto del tenant deve essere impostato e reimpostato in modo sicuro per ogni transazione/richiesta, così una connessione in pool non può far trapelare lo stato di un tenant precedente.

L'isolamento del tenant deve includere le cache

Una query al database può avere uno scope perfetto e comunque far trapelare dati attraverso una chiave di cache condivisa.

Se user:42 esiste sia nel Tenant A sia nel Tenant B, una chiave di cache globale può restituire il valore del tenant sbagliato. Le chiavi di cache sensibili al tenant dovrebbero includere ogni attributo che modifica la visibilità o la semantica del risultato, comunemente tenant, utente, locale, set di funzionalità o versione dei permessi.

La partizione della cache è difesa in profondità, non un sostituto dell'autorizzazione. La richiesta deve comunque essere autorizzata prima che venga restituito il contenuto protetto memorizzato in cache.

File e object storage necessitano di un proprio confine di tenant

L'object storage dovrebbe distinguere oggetti globali, con ambito tenant e con ambito utente. Un prefisso di cartella da solo è solo una convenzione di denominazione, a meno che la policy di accesso non vincoli effettivamente letture e scritture.

Progettazioni più robuste possono utilizzare chiavi oggetto tenant-aware, policy di bucket, bucket/account separati o chiavi di cifratura specifiche per tenant, laddove il rischio o la conformità richiedano un isolamento più forte.

Gli URL firmati devono essere autorizzati prima dell'emissione e limitati all'oggetto e all'operazione esatti. Il possesso di un identificatore di oggetto non dovrebbe di per sé concedere accesso cross-tenant.

I job in background e le code possono rompere l'isolamento

I job asincroni spesso abbandonano il contesto della richiesta HTTP originale, il che rende facile gestire male la propagazione del tenant. Un messaggio in coda che contiene tenantId non è prova sufficiente che il produttore fosse autorizzato.

Il worker dovrebbe portare un'identità di servizio/utente verificata o una busta di job attendibile, ristabilire il contesto del tenant e riautorizzare le operazioni consequenziali al confine del consumatore.

L'isolamento del tenant include anche la disponibilità. Un tenant non dovrebbe essere in grado di monopolizzare worker, code, pool di connessioni o risorse di calcolo condivise in modi che degradino materialmente gli altri tenant.

Ricerca e RAG necessitano di retrieval tenant-aware

L'AI multi-tenant introduce un'altra copia del problema di isolamento. I documenti possono essere suddivisi in chunk, incorporati e memorizzati in un indice vettoriale dopo l'ingestione.

L'attuale guida alla sicurezza RAG di OWASP afferma che il controllo degli accessi deve essere applicato al momento del retrieval e che i chunk del Tenant A non devono essere recuperati da query del Tenant B. Non si può semplicemente presumere che i permessi a livello di documento sopravvivano automaticamente alla suddivisione in chunk.

L'indice vettoriale necessita quindi di metadati di tenant/accesso o di collezioni fisicamente/logicamente separate in base al design di isolamento. I filtri di retrieval dovrebbero essere applicati prima che contenuti non autorizzati possano entrare nel contesto del modello.

I dati derivati ereditano la sensibilità del tenant

Embedding, indici di ricerca, miniature, riepiloghi generati, cache, righe di analytics e risposte AI derivano dai dati di origine. Il loro ambito di tenant dovrebbe seguire la fonte, a meno che una trasformazione esplicita crei un artefatto condiviso/globale legittimo.

La cancellazione e l'offboarding devono quindi propagarsi oltre la riga canonica. Rimuovere un documento del tenant lasciando chunk ricercabili o riepiloghi in cache può mantenere un'esposizione cross-tenant o successiva alla conservazione.

Non tutto appartiene a un tenant

Le piattaforme multi-tenant hanno spesso risorse intenzionalmente globali: tassonomie di prodotto, template pubblici, permessi di sistema, definizioni di funzionalità o contenuti pubblici.

Il modello più sicuro è la classificazione esplicita: globale, con ambito tenant, con ambito utente o esplicitamente cross-tenant. Le risorse ambigue sono il punto in cui inizia una fuga di dati accidentale.

Un oggetto condiviso intenzionalmente dovrebbe avere una motivazione documentata per essere globale, invece di mancare semplicemente di un'associazione a un tenant.

Gli amministratori della piattaforma richiedono un modello di autorità diverso

Un operatore della piattaforma potrebbe aver bisogno di ispezionare più tenant per supporto, conformità o operazioni infrastrutturali. Modellare questo come un normale ADMIN di tenant con accesso accidentale al database globale indebolisce sia la sicurezza che l'auditabilità.

Un design migliore utilizza un'identità di piattaforma distinta o un permesso cross-tenant esplicito, autenticazione più forte, limitazione dello scopo, audit dettagliato e, ove appropriato, controlli di approvazione o break-glass.

L'accesso cross-tenant dovrebbe quindi essere una capacità denominata, non l'assenza di un filtro tenant.

RBAC può essere combinato con gli attributi

Alcune decisioni dipendono da più del ruolo. L'appartenenza al tenant, la regione, il proprietario della risorsa, il livello di abbonamento, il tempo, l'appartenenza al progetto o la classificazione dei dati possono tutti influenzare l'accesso.

RBAC e ABAC non si escludono a vicenda. Le attuali linee guida di AWS sull'autorizzazione multi-tenant discutono modelli RBAC, ABAC e ibridi. Un ruolo può definire una responsabilità ampia mentre gli attributi limitano quale istanza concreta di risorsa può essere accessibile.

La regola architetturale chiave rimane: non codificare l'isolamento del tenant solo come un nome di ruolo incidentale se l'identità del tenant è un confine di risorsa di prima classe.

Le decisioni di autorizzazione sono almeno bidimensionali

PrincipalePermesso del ruoloRelazione con il tenantDecisione
Aliceorders.readL'ordine appartiene al tenant di AliceConsenti
Aliceorders.readL'ordine appartiene a un altro tenantNega
Aliceorders.writeL'ordine appartiene al tenant di AliceConsenti se il ruolo include la scrittura
Aliceorders.writeL'ordine appartiene a un altro tenantNega
Supporto piattaformasupport.cross_tenant.readAmbito di supporto esplicito + tenant di destinazione verificatoPotenzialmente consenti secondo la policy della piattaforma
Worker in backgroundorders.processAmbito di servizio attendibile per il tenant del jobConsenti solo per il tenant del job verificato

Evidenza dell'implementazione originale: Aaasaasa AI CMS

Il servizio RBAC definisce codici di permesso tipizzati come cms.content.read, shop.orders.write, billing.reconcile e users.roles. I ruoli di sistema mappano quei permessi in insiemi di responsabilità denominati.

I record dei ruoli vengono creati e risolti con un tenantId. I ruoli di sistema vengono inseriti o aggiornati utilizzando un'identità composita tenant/codice, e l'elenco dei ruoli è filtrato per tenant.

L'aggiornamento e l'eliminazione dei ruoli risolvono prima il ruolo utilizzando sia l'ID del ruolo che l'ID del tenant. Anche le assegnazioni utente-ruolo vengono memorizzate e sostituite nel contesto del tenant corrente.

La risoluzione dei permessi legge le assegnazioni esplicite utente-ruolo con ambito sia tenantId che userId. Questo impedisce che l'assegnazione di ruolo di un tenant diventi automaticamente l'assegnazione di ruolo di un altro tenant.

A livello API, le route RBAC amministrative risolvono un contesto tenant prima di creare o modificare ruoli. Questa è la direzione corretta: l'amministrazione dei permessi stessa deve rispettare la tenancy.

Pattern di implementazione osservatoSignificato di sicurezza
Codici di permesso tipizzatiIl vocabolario delle operazioni RBAC è esplicito
Mappe ruolo di sistema → permessiI ruoli aggregano permessi invece di codificare direttamente gli utenti
Identità del ruolo tenantId_codeLo stesso ruolo logico può esistere separatamente per tenant
La ricerca del ruolo usa id + tenantIdLa modifica del ruolo è limitata al tenant
La relazione utente-ruolo memorizza tenantIdL'appartenenza non è inferita globalmente dal solo ruolo
La risoluzione dei permessi usa tenantId + userIdL'autorizzazione è valutata all'interno del contesto tenant

Perché questa distinzione conta ancora di più per gli agenti AI

Gli agenti AI possono trasformare un errore di permesso in una sequenza di azioni. Se a un agente viene fornito uno strumento ampio orders.read senza applicazione con ambito tenant, un errore di ragionamento o di prompt-injection può causare letture cross-tenant alla velocità della macchina.

Le descrizioni degli strumenti dell'agente possono menzionare vincoli tenant, ma l'applicazione deve comunque avvenire nel runtime/servizio/strato dati attendibile. Le istruzioni in linguaggio naturale non sono un confine di autorizzazione.

Lo stesso vale per RAG: un agente può avere il permesso di usare lo strumento di ricerca mentre il backend di ricerca deve comunque impedire che la query del Tenant A restituisca i chunk del Tenant B.

Testare RBAC e isolamento tenant separatamente

Famiglia di testCosa dovrebbe provare
Test di retrocessione del ruoloUn utente senza un permesso non può eseguire l'operazione nemmeno all'interno del proprio tenant
Test oggetto cross-tenantUn utente con il ruolo corretto non può comunque accedere allo stesso tipo di risorsa in un altro tenant
Manomissione dell'identificatoreLa modifica degli ID oggetto/tenant non attraversa l'ambito
Test endpoint di elenco/in bloccoLe query ampie restituiscono solo dati tenant autorizzati
Test riutilizzo cacheDue tenant che utilizzano processi/connessioni riutilizzati non ricevono mai lo stato in cache dell'altro
Test ruolo richiesta RLSIl ruolo di richiesta di produzione non può bypassare le politiche di riga
Test worker asincronoIl contesto tenant sopravvive all'accodamento e viene rivalidato al consumo
Test recupero vettorialeLa query del Tenant A non recupera mai i chunk del Tenant B
Test amministratore piattaformaLa capacità cross-tenant è esplicita, ristretta e verificabile
Test offboardingI dati del tenant e gli indici/cache derivati vengono rimossi secondo la politica

La guida OWASP sui test di regressione dell'autorizzazione menziona specificamente i test sui confini cross-tenant perché modifiche al codice in caching, query o servizi condivisi possono rompere silenziosamente l'isolamento anche quando i test dei ruoli continuano a passare.

Modalità di errore comuni

Modalità di errorePerché fallisce
Controlla il ruolo ma non il tenantUn ruolo valido diventa autorità cross-tenant
Fidarsi dell'ID tenant dalla richiestaIl client controlla il selettore di isolamento
Limitare l'interfaccia utente ma non l'APII pulsanti nascosti non proteggono le risorse backend
Endpoint di dettaglio tenant-aware, endpoint di elenco senza ambitoLe letture in blocco fanno trapelare altri tenant
Filtro tenant nella maggior parte delle queryUn percorso dimenticato rompe il confine
Chiavi cache globaliL'isolamento corretto del database viene bypassato dai dati in cache
Indice vettoriale condiviso senza filtri di metadati applicatiRAG recupera i chunk di un altro tenant
ID tenant del messaggio in coda trattato come autorizzazioneUn job falsificato o prodotto erroneamente può attraversare il confine tenant
Amministratore piattaforma modellato come ADMIN ordinarioIl potere cross-tenant diventa implicito e difficile da verificare
Ruolo copiato globalmente tra appartenenze tenantL'utente riceve permessi in tenant in cui non è mai stato assegnato
Database separati ma credenziale privilegiata condivisaL'applicazione può comunque attraversare i database se la sua credenziale è troppo ampia
RLS con ruolo di richiesta BYPASSRLSLa politica del database esiste ma non protegge il percorso di richiesta effettivo
UUID casuali trattati come isolamentoGli identificatori difficili da indovinare riducono l'enumerazione ma non autorizzano l'accesso

Idee sbagliate comuni

Idea sbagliataCorrezione
“RBAC fornisce l'isolamento tenant.”RBAC controlla i permessi; l'isolamento richiede anche l'ambito tenant/risorsa.
“Se l'utente è un amministratore, i controlli tenant sono superflui.”L'autorità di amministratore deve comunque avere un ambito esplicito.
“L'ID tenant nel JWT è sufficiente.”Può essere un input attendibile solo se validato e applicato in modo coerente a ogni percorso di risorsa protetto.
“Database separati rimuovono i requisiti di autorizzazione.”Gli utenti hanno comunque bisogno di permessi a livello di operazione all'interno del loro tenant.
“Una colonna tenant_id significa che il sistema è isolato.”Il campo aiuta solo se i percorsi di accesso lo applicano.
“Gli UUID impediscono l'accesso cross-tenant.”Gli identificatori imprevedibili sono difesa in profondità, non autorizzazione.
“RLS significa che il codice dell'applicazione non ha bisogno di controlli di sicurezza.”L'autorizzazione dell'applicazione, i ruoli DB corretti e la copertura delle politiche contano ancora.
“Un unico database vettoriale condiviso è insicuro.”Può essere sicuro se l'isolamento è applicabile e verificato; la separazione fisica è un'opzione, non l'unica.
“Il supporto piattaforma ha bisogno di ADMIN globale.”Il supporto cross-tenant dovrebbe essere un'autorità distinta, vincolata e verificabile.
“I servizi interni possono saltare i controlli tenant.”I percorsi interni possono comunque essere compromessi o mal configurati e devono preservare il contesto tenant.

Una sequenza di progettazione pratica

Progettare permessi e isolamento come dimensioni separate

1
1. Definire la proprietà del tenant
Classificare quali entità e risorse sono globali, con ambito tenant, con ambito utente o intenzionalmente cross-tenant.
2
2. Definire le operazioni
Creare permessi espliciti per letture, scritture, pubblicazione, approvazioni, amministrazione e altre azioni aziendali.
3
3. Definire i ruoli
Raggruppare i permessi in base alle responsabilità senza incorporare un ambito globale accidentale.
4
4. Definire l'ambito di appartenenza
Vincolare le assegnazioni di ruolo al contesto tenant/workspace/progetto in cui si applicano.
5
5. Risolvere il contesto tenant attendibile
Derivare l'identità del tenant dall'appartenenza autenticata e verificata dal server o dall'autorizzazione del servizio.
6
6. Applicare la proprietà delle risorse
Applicare l'ambito tenant a ogni confine di dati/servizio di proprietà del tenant.
7
7. Aggiungere difesa in profondità
Utilizzare RLS, credenziali separate, schemi/database, politiche di archiviazione o motori di policy dove il rischio lo giustifica.
8
8. Trasportare l'ambito attraverso i sistemi derivati
Preservare i metadati del tenant in cache, ricerca, indici vettoriali, code, file e analisi.
9
9. Modellare esplicitamente le operazioni cross-tenant
Separare l'amministrazione della piattaforma e le identità di servizio dai ruoli tenant ordinari.
10
10. Testare entrambi gli assi
Eseguire test negativi per permesso mancante e per tenant errato in modo indipendente.
11
11. Verificare tenant + permesso insieme
Registrare chi ha agito, in quale tenant, su quale target e sotto quale autorità.
12
12. Ripetere i test dopo modifiche a schema/runtime
L'isolamento può rompersi quando vengono introdotte nuove tabelle, cache, code o percorsi di recupero.

Checklist RBAC + isolamento tenant

DomandaRisposta attesa
Chi è il principale?Identità utente/servizio/agente autenticata
Quale contesto tenant si applica?Appartenenza verificata dal server o ambito di servizio
Quale operazione è richiesta?Permesso tipizzato o azione di policy
Il principale ha quel permesso?Decisione ruolo/policy
Chi possiede la risorsa target?Classificazione esplicita tenant/globale/utente
L'ambito della risorsa corrisponde all'autorità?Ricerca/policy tenant-aware
Lo storage può bypassare i controlli dell'applicazione?Decisione di difesa in profondità documentata
Le cache sono sicure per il tenant?Chiavi/namespace e autorizzazione preservano l'ambito tenant
File/blob sono sicuri per il tenant?La policy degli oggetti e l'emissione di URL firmati applicano l'ambito
I job asincroni sono sicuri per il tenant?Il contesto verificato si propaga e viene rivalidato
RAG/ricerca è sicuro per il tenant?Isolamento di metadati/collezioni applicato prima del contesto del modello
Gli amministratori cross-tenant sono espliciti?Autorità, controlli e audit separati
Le credenziali ordinarie possono bypassare l'isolamento?No, o percorso eccezionale strettamente documentato
I test negativi cross-tenant sono automatizzati?Sì per ogni strato di accesso rilevante

Casi limite e limitazioni

Un utente può appartenere a più tenant. Il tenant corrente dovrebbe quindi essere un contesto di esecuzione esplicito, non dedotto permanentemente dall'account utente.

Alcune risorse sono intenzionalmente condivise tra tenant selezionati, come spazi di collaborazione o dati di consorzio. Ciò richiede un modello di condivisione esplicito; fingere che la risorsa appartenga a un tenant e aggiungere eccezioni in seguito di solito crea autorizzazioni ambigue.

L'isolamento da vicini rumorosi è correlato ma diverso dall'isolamento di riservatezza. Un tenant potrebbe non vedere mai i dati di un altro tenant e tuttavia esaurire CPU condivisa, capacità di coda o connessioni al database. I limiti di velocità e le quote di risorse possono quindi essere tenant-aware come confine di disponibilità.

L'isolamento fisico non è automaticamente sicuro se le credenziali del piano di controllo o i percorsi amministrativi possono attraversare i confini. L'isolamento logico non è automaticamente debole se le politiche sono applicate centralmente, con privilegi minimi e testate a fondo.

I requisiti di isolamento dei tenant possono differire per classe di dati. Dati di catalogo pubblici, record di fatturazione e documenti AI privati possono giustificare confini di archiviazione e crittografia diversi all'interno dello stesso prodotto SaaS.

Cosa cambierebbe questa risposta?

L'implementazione esatta cambia con l'architettura: API serverless, Kubernetes, PostgreSQL, object storage, database vettoriali e motori di policy espongono primitive di isolamento diverse.

La forza richiesta cambia anche con la regolamentazione, i contratti dei clienti, la sensibilità dei dati, il modello di minaccia e la scala operativa. Alcuni tenant possono giustificare database o infrastrutture siloed mentre altri condividono risorse in pool.

La distinzione concettuale non cambia: il permesso di eseguire un'operazione non è la stessa cosa del permesso di attraversare un confine di tenant.

Conoscenza canonica correlata

S01 è un prerequisito di confine di sicurezza per Enterprise AI Architecture e AI Governance. Una volta che strumenti AI, RAG o agenti operano su dati multi-tenant, l'identità del tenant deve viaggiare attraverso il recupero, l'esecuzione degli strumenti, la memoria, le cache e le tracce di audit.

Si collega anche direttamente ad Agentic AI: la capacità degli strumenti e il permesso del ruolo devono comunque essere vincolati dalla proprietà del tenant prima che un agente possa leggere o modificare risorse aziendali.

Per RAG, l'isolamento dei tenant deve essere applicato prima che i chunk protetti raggiungano il contesto del modello.

Domande frequenti

FAQ su RBAC vs isolamento dei tenant

Qual è la differenza tra RBAC e isolamento dei tenant?

RBAC determina quali operazioni un principale può eseguire. L'isolamento dei tenant determina a quali risorse di quale tenant quelle operazioni possono accedere. Le applicazioni multi-tenant sicure normalmente necessitano di entrambi.

Un ruolo ADMIN consente automaticamente l'accesso a tutti i tenant?

No. ADMIN dovrebbe avere uno scope esplicito. Un amministratore di tenant normalmente ha ampi permessi solo all'interno di quel tenant, mentre l'amministrazione della piattaforma cross-tenant dovrebbe essere modellata separatamente.

L'autenticazione è sufficiente per l'isolamento dei tenant?

No. L'autenticazione prova l'identità. L'autorizzazione controlla le azioni consentite. L'isolamento dei tenant impedisce inoltre che tali azioni raggiungano le risorse del tenant sbagliato.

Il tenantId dovrebbe essere memorizzato nel JWT?

Può essere un input per il contesto del tenant, ma il server deve verificare l'appartenenza/autorità corrente e applicare lo scope ai confini delle risorse protette. Un claim da solo non sostituisce i controlli di isolamento.

Ho bisogno di un database separato per tenant?

Non necessariamente. Modelli di isolamento con tabella condivisa, RLS, schema, database, infrastruttura e ibridi possono essere tutti validi a seconda del rischio e dei requisiti operativi.

PostgreSQL RLS può sostituire i filtri tenant nel codice dell'applicazione?

RLS può fornire una forte difesa in profondità, ma ruoli di database corretti, contesto della richiesta, copertura delle policy e autorizzazione a livello di applicazione contano comunque.

Come dovrebbe RAG applicare l'isolamento dei tenant?

Lo scope tenant/accesso dovrebbe essere applicato durante il recupero in modo che i chunk non autorizzati non entrino mai nel contesto del modello. Conserva i metadati di accesso attraverso chunking e indicizzazione.

Un utente può avere ruoli diversi in tenant diversi?

Sì. Questo è comune nel SaaS B2B ed è una forte ragione per limitare le assegnazioni di ruolo all'appartenenza al tenant piuttosto che trattare i ruoli come globalmente collegati all'utente.

Qual è il miglior test per l'isolamento dei tenant?

Usa test negativi cross-tenant: crea almeno due tenant, assegna a un utente permessi validi in un tenant, poi dimostra che ogni percorso protetto nega l'accesso alle risorse dell'altro tenant.

Glossario

Termini chiave di sicurezza multi-tenant

RBAC
Role-Based Access Control: un modello di autorizzazione che associa i permessi ai ruoli e assegna utenti o principal a tali ruoli.
Tenant
Un cliente, organizzazione, workspace o altro consumatore logico isolato di un sistema multi-tenant condiviso.
Isolamento del tenant
Meccanismi che impediscono a un tenant di accedere, modificare o ricevere le risorse di un altro tenant in un sistema condiviso.
Autenticazione
Verifica dell'identità di un utente, servizio o altro principal.
Autorizzazione
Processo decisionale che determina se un principal può eseguire un'operazione richiesta su una risorsa.
Permesso
Un'operazione o capacità consentita e definita, come orders.read o users.write.
Ruolo
Un raggruppamento denominato di permessi associato a una responsabilità o funzione.
ABAC
Attribute-Based Access Control: autorizzazione basata su attributi del principal, della risorsa, dell'azione o dell'ambiente.
Sicurezza a livello di riga
Meccanismo di policy del database che limita quali righe un ruolo o una sessione del database può leggere o modificare.
Accesso cross-tenant
Qualsiasi percorso di accesso in cui un principal che opera in un contesto tenant raggiunge risorse appartenenti a un altro tenant.
Amministratore della piattaforma
Un'identità operativa privilegiata con autorità esplicitamente modellata che può estendersi su più tenant.
Contesto del tenant
L'ambito del tenant verificato sotto il quale viene eseguita la richiesta, il job o l'operazione dell'agente corrente.

Conclusione

RBAC e isolamento del tenant sono meccanismi di sicurezza complementari, non in competizione. RBAC struttura il permesso operativo; l'isolamento del tenant vincola il confine delle risorse entro cui tale permesso può essere applicato.

Una richiesta multi-tenant robusta necessita quindi di più di "l'utente ha il ruolo ADMIN". Richiede un principal verificato, un contesto tenant verificato, un'operazione consentita, un target con ambito tenant e l'applicazione a ogni livello di risorsa che può contenere dati di proprietà del tenant.

La regola affidabile più breve è: autorizza l'azione, poi isola l'ambito — e non presumere mai che una dimostri l'altra.

Fonti primarie e linee guida attuali

Le fonti seguenti supportano la definizione di RBAC e le linee guida attuali sull'isolamento del tenant. La sezione Aaasaasa AI CMS è una prova di implementazione originale ed è intenzionalmente limitata ai pattern di codice che sono stati verificati.

NIST — Role Based Access Control

Panoramica NIST dei modelli RBAC e dello standard INCITS RBAC, inclusi utenti, ruoli, permessi, operazioni e oggetti.

NIST CSRC — Glossario RBAC

Definizioni attuali del glossario NIST del controllo di accesso basato sui ruoli come assegnazione di permessi tramite ruoli.

AWS — La mentalità dell'isolamento

Linee guida AWS SaaS che distinguono esplicitamente autenticazione/autorizzazione dall'isolamento del tenant e raccomandano meccanismi di isolamento condivisi.

AWS — FAQ sull'autorizzazione multi-tenant

Linee guida attuali che spiegano la differenza tra autorizzazione e isolamento del tenant nelle applicazioni SaaS.

AWS — Considerazioni di progettazione multi-tenant

Linee guida SaaS attuali che distinguono l'isolamento del tenant dall'autorizzazione e discutono modelli di policy di autorizzazione pooled/siloed.

OWASP — Cheat Sheet sulla sicurezza delle applicazioni multi-tenant

Linee guida pratiche attuali per contesto tenant, isolamento del database, cache, storage, code, test e prevenzione dell'accesso cross-tenant.

OWASP — Cheat Sheet sulla sicurezza RAG

Linee guida attuali che richiedono il controllo di accesso al momento del recupero e l'isolamento del tenant per i vector store multi-tenant.

OWASP — Test di regressione dell'autorizzazione

Linee guida attuali per i test, inclusi test di retrocessione del ruolo e di confine cross-tenant.

Related Articles

MCP vs A2A vs UCP vs AP2 vs A2UI: Lo stack di protocolli degli agenti spiegato

MCP vs A2A vs UCP vs AP2 vs A2UI: Lo stack di protocolli degli agenti spiegato

MCP, A2A, UCP, AP2 e A2UI sono spesso presentati come standard per agenti concorrenti. Per lo più risolvono problemi di interoperabilità diversi. Questa guida mappa ciascun protocollo sul confine che effettivamente standardizza—e mostra come possano lavorare insieme in un unico sistema di produzione.

L'IA generativa spiegata: modelli, recupero, strumenti e applicazioni non sono la stessa cosa

L'IA generativa spiegata: modelli, recupero, strumenti e applicazioni non sono la stessa cosa

L'IA generativa è più di un modello. Scopri come modelli, recupero, strumenti, contesto, runtime e applicazioni si integrano nei sistemi di IA in produzione.

Come sapere se un agente IA ha effettivamente usato le prove giuste

Come sapere se un agente IA ha effettivamente usato le prove giuste

Un agente IA può citare fonti e comunque utilizzare le prove sbagliate. Questo articolo introduce un metodo pratico per verificare il supporto delle affermazioni, l'autorevolezza della fonte, l'applicabilità, la provenienza e se le prove abbiano effettivamente influenzato la risposta.

Che cos'è l'ingegneria del contesto? Ciò che il modello riceve prima di rispondere

Che cos'è l'ingegneria del contesto? Ciò che il modello riceve prima di rispondere

L'ingegneria del contesto progetta quali informazioni un modello di IA riceve prima dell'inferenza, inclusi prompt, recupero, memoria, stato dell'applicazione, risultati degli strumenti e cronologia delle conversazioni.

La memoria dell'agente IA non è RAG: come separare memoria, recupero, stato e contesto

La memoria dell'agente IA non è RAG: come separare memoria, recupero, stato e contesto

Memoria dell'agente, RAG, stato e contesto vengono spesso usati come se fossero intercambiabili. Non lo sono. Questo pratico modello architetturale separa i quattro livelli, mostra dove si colloca ciascuno e spiega cosa si rompe quando i sistemi li fanno collassare in uno solo.

Il confine della validità della risposta: il livello mancante tra rilevanza e risposte AI affidabili

Il confine della validità della risposta: il livello mancante tra rilevanza e risposte AI affidabili

Una fonte può essere pertinente, autorevole e comunque errata per la domanda posta. Il livello mancante è l'applicabilità: le condizioni alle quali una risposta è valida e i cambiamenti che ne impongono una riconsiderazione. Questo articolo introduce l'Answer Validity Boundary come modello di progettazione delle fonti per esseri umani, ricerca AI e sistemi RAG.

Sviluppo Front-end e Backend

Sviluppo Front-end e Backend

Lo sviluppo front-end e back-end è una parte essenziale dello sviluppo web e comporta la creazione di applicazioni web e siti web. Lo sviluppo front-end si concentra sull'interfaccia utente, mentre lo sviluppo back-end è responsabile della programmazione e della gestione del lato server.

Che cos'è un architetto di piattaforme AI? Modelli, dati, runtime, sicurezza e operazioni

Che cos'è un architetto di piattaforme AI? Modelli, dati, runtime, sicurezza e operazioni

Un Architetto di Piattaforme AI progetta fondamenta AI riutilizzabili attraverso modelli, fornitori, recupero, agenti, identità, sicurezza, valutazione, osservabilità e operazioni.

Che cos'è un AI Solution Architect? Confini del sistema, responsabilità e compromessi

Che cos'è un AI Solution Architect? Confini del sistema, responsabilità e compromessi

Un Solution Architect AI trasforma i requisiti aziendali in un sistema AI pronto per la produzione, attraverso dati, modelli, strumenti, sicurezza, runtime, valutazione e operazioni.

IA agentica spiegata: quando un sistema di IA può pianificare, usare strumenti e agire

IA agentica spiegata: quando un sistema di IA può pianificare, usare strumenti e agire

L'IA agentica utilizza modelli all'interno di cicli di esecuzione a più passaggi, in cui possono scegliere strumenti, osservare i risultati, aggiornare lo stato e adattare l'azione successiva entro limiti espliciti di runtime e di autorizzazione.

Database vettoriali, embedding e reranking: tre parti diverse del recupero

Database vettoriali, embedding e reranking: tre parti diverse del recupero

Gli embedding rappresentano il significato, i database vettoriali recuperano i candidati e i reranker affinano i risultati. Scopri come questi tre livelli di recupero si differenziano e collaborano nel RAG.

Perché più contesto può peggiorare le risposte dell'IA

Perché più contesto può peggiorare le risposte dell'IA

Una finestra di contesto più ampia non garantisce una risposta migliore. Questo articolo spiega come la diluizione del segnale, le prove contrastanti, lo stato obsoleto, la sensibilità alla posizione e la compressione con perdita possano ridurre l'affidabilità dell'IA—e introduce un pratico Context Pressure Test.