Come dovrebbe essere implementata la multi-tenancy per le risorse figlio in un progetto di database SaaS?

0

Nella progettazione di database multi-tenant SaaS, ritieni che sia sufficiente includere l'ID tenant solo nelle risorse di livello superiore, sapendo che le risorse secondarie avranno sempre un ambito genitore, o dovrebbero ogni la tabella include tenant_id come chiave esterna?

Ad esempio, se Tenants ha Projects che ha Tasks , è sufficiente specificare Projects.tenant_id e solo Tasks.project_id , perché le attività verranno "sempre" recuperate tramite il loro progetto corrispondente?

O le attività (e ogni altra tabella) includono tenant_id senza eccezione?

Thx!

    
posta SexxLuthor 06.12.2016 - 09:24
fonte

1 risposta

4

Se tutto il codice che preleva i dati dal database è scritto correttamente, non è necessario avere l'ID tenant su ogni tabella. Tuttavia, in pratica i bug sono inevitabili, quindi a un certo punto ci sarà un accesso improprio ai dati in un tale schema di progettazione.

Includendo l'ID tenant su ogni tabella, è possibile impostare la sicurezza a livello di riga a livello di database in modo che il codice di applicazione improprio non possa portare accidentalmente a dati provenienti da un altro titolare. Questo è un esempio di difesa in profondità dell'architettura di sicurezza dove non esiste un singolo punto di errore.

    
risposta data 06.12.2016 - 09:40
fonte

Leggi altre domande sui tag