Come gestire l'autenticazione db nell'applicazione multi-tenant con database separati?

2

In un'applicazione multi-tenant con database separati per ciascun titolare, quale sarebbe il modo migliore per autenticare la connessione a ciascuno di questi database separati. Il mio obiettivo è:

  • Il requisito di sicurezza principale è quello di evitare l'accesso accidentale o malevolo ai dati dei diversi titolari
  • Ottieni questo in MySQL.
  • Per la tolleranza agli errori, essere in grado di ripristinare dal backup è più che sufficiente.

One approach I can think of is store tenant identity and authentication details in a table in a separate database and then fetch the db username and db password for a tenant and then use that to connect to its specific tenant.

Non mi sento molto sicuro su questo approccio, perché mi rivolgerò a un database che ha praticamente l'autenticazione di tutti gli inquilini e ne sto prelevando uno dalla lista. Se questo fosse compromesso in qualche modo, avere un database diverso con un nome utente e una password individuali non avrebbe avuto importanza.

Qualche suggerimento?

    
posta Starx 26.02.2016 - 12:33
fonte

1 risposta

3

Non inserire tutti i dati di autenticazione nel database condiviso.

Anziché archiviare l'identità del titolare e i dettagli di autenticazione in un database separato, è possibile memorizzare i dettagli dell'identità (nome utente) e di reindirizzamento (server / istanza.databasename). Quindi è possibile gestire l'autenticazione nel database del titolare.

Suppongo che gli amministratori inviino inviti ai propri utenti. Tutte le informazioni sull'account sono gestite prevalentemente nel proprio database. Basta usare il database di identificazione e reindirizzamento per aiutare nella gestione dei nomi utente duplicati. Quando viene creato un nuovo account, è sufficiente creare un record qui con le informazioni di identificazione del database (Questo dovrebbe essere parte della transazione create dell'utente.). Non c'è nulla di molto sensibile in questa parte condivisa dei tuoi dati. Probabilmente potresti reindirizzare un tenant a un server di applicazioni specifico. Internamente, se si sposta un database (Forse un enorme client ottiene il proprio server.), Basta cambiare i record di reindirizzamento.

Salesforce.com non consente nomi utente duplicati nell'intero sistema, quindi dovresti essere in grado di farlo anche tu.

    
risposta data 27.02.2016 - 05:05
fonte

Leggi altre domande sui tag