Come gestire le password in un multi-tenant circostante?

3

Sto creando un'applicazione multi-tenant in un modello di database condiviso . Vorrei crittografare i dati sensibili in modo che solo un determinato titolare possa avere accesso ai suoi dati. Qual è la migliore modalità per mantenere / fornire le password e dove dovrei tenerle in un ambiente multi-tenant?

    
posta Dan 20.06.2013 - 02:41
fonte

1 risposta

2

L'autenticazione di un utente in un'applicazione multi-tenant non è fondamentalmente diversa dall'autenticazione in una singola persona. Prima di sapere chi è quell'utente e quali permessi, capacità o ruoli ha, non si sa quale sottoinsieme di dati dovrebbe essere disponibile per lui. Una volta autenticato, è possibile limitare i dati a lui esposti, utilizzando qualsiasi controllo supportato dall'applicazione (ad esempio filtraggio, autorizzazioni, crittografia).

Un sistema multi-tenant ha le stesse esigenze, tranne per il fatto che ora l'utente appartiene a un'organizzazione e tutti i dati in esso DB sono partizionati attorno a tale organizzazione. Si potrebbe desiderare di avere protezioni più intense tra i tenenti di intra-tenant, ma si tratta comunque di scoprire chi è l'utente e quali dati può accedere.

L'articolo che hai collegato suggerisce un approccio, utilizzando la crittografia come parte della sua difesa in profondità:

When an end user logs on, the application uses impersonation to access the database using the tenant's security context, which grants the application process access to the tenant's private key. The application (still impersonating the tenant, of course) can then use the tenant's private key to decrypt the tenant's symmetric key and use it to read and write data.

Notate che questo presuppone che l'utente sia già loggato (e quindi autenticato con il sistema); prima che ciò accada, non c'è modo in cui il sistema possa sapere a quale affittuario appartiene. A meno che, naturalmente, tutti gli utenti dello stesso titolare avessero una sorta di credenziali condivise utilizzate prima di autenticare l'inquilino, quindi utilizzare le proprie credenziali per autenticarsi, ma questo apre un'altra lattina di worm.

Quindi il mio suggerimento sarebbe avere un'unica tabella di database per tutti gli utenti, dove un nome utente (o coppia nome-tenant-username) e le credenziali associate (hash della password, chiave pubblica, chiave OTP, ecc.) autentica l'utente e quindi usa il informazioni "chi è l'utente" e "a quale tenente appartiene" per sbloccare l'accesso al resto dei dati. E assicurati che nessuno tranne il fornitore di servizi abbia accesso ai contenuti di quella tabella.

    
risposta data 20.06.2013 - 04:54
fonte

Leggi altre domande sui tag