Protezione dei database in stile documento (MongoDb, CouchDB, RavenDB) per il client (browser) accesso
Domanda
Documento database che supportano REST-style JSON su HTTP accesso sembra ideale per supportare le applicazioni AJAX-ricche in cui il browser sta facendo le chiamate dirette al database, bypassando i componenti logici del server web / applicazioni tradizionali. Un esempio di questo potrebbe essere recuperando le preferenze degli utenti una volta che un utente è stato autenticato. (BBC Homepage potrebbe essere un buon esempio di questo, prima di schiantarsi sotto il carico!)
Il problema con questo scenario è il problema di sicurezza - se un utente è autenticato utilizzando un server web (per esempio l'autenticazione di base forme), come è questo l'identità riportato al documento DB. È l'unica risposta a tutte le richieste di proxy al DB attraverso il server web in ogni caso -? Vale a dire fissare il documento DB in modo che non v'è alcun accesso esterno diretto
Questo sembra rendere più senso, ed è il più facile da implementare, ma mi chiedevo se qualcuno là fuori ha avuto un'esperienza consulenza e / o sull'utilizzo di DBS di documenti in un ambiente eterogeneo?
Soluzione
Questo probabilmente si differenzia in tutti i database si parla. Ecco come funziona in CouchDB.
CouchDB consente di gestire utenti e ruoli.
È possibile utilizzare la funzione di validate_doc_update
nei documenti di progettazione per limitare la creazione di documenti / aggiornamento. Ad esempio, è possibile scrivere una convalida che nega l'aggiornamento del documento a chiunque, ma il suo autore.
Per limitare chi può leggere i documenti da un database, è possibile modificare il documento /db_name/_security
e l'elenco degli utenti o ruoli.
Tuttavia, non credo che si può fare l'accesso in lettura più granulare (vale a dire consentire a un utente di leggere solo i documenti che hanno creato).
Per ottenere questo, bisogna mettere la CouchDB dietro un proxy e utilizzare le viste per servire i documenti a utenti autenticati. È comunque possibile utilizzare CouchDB gestione degli utenti in questo modo. Il proxy nasconde solo l'accesso diretto al database.
Per informazioni più dettagliate, controllare il panoramica sulla sicurezza CouchDB wiki , il capitolo sicurezza del Relax libro e questo breve screencast .
Altri suggerimenti
Bene, ho solo esperienza con CouchDB, ma spero di poter aiutare comunque.
CouchDB ha un processo di validazione built-in, è scrivere le regole di validazione in javascript, e di avere accesso al gruppo in cui l'utente corrente è. E 'tutto gestito da CouchDB sé in fondo, non c'è bisogno di preoccuparsi di come si arriva a informazioni di accesso.