2010-06-22 13 views
6

I database di documenti che supportano l'accesso JSON su HTTP in stile REST sembrano ideali per supportare applicazioni AJAX in cui il browser effettua chiamate dirette al database , aggirando i componenti tradizionali del server Web/della logica dell'applicazione. Un esempio di questo potrebbe essere il recupero delle preferenze dell'utente una volta che un utente è stato autenticato. (BBC Homepage potrebbe essere un buon esempio di questo, prima di andare in crash sotto il carico!)Protezione dei database in stile documento (MongoDb, CouchDb, RavenDb) per l'accesso client (browser)

Il problema con questo scenario è il problema di sicurezza: se un utente è autenticato tramite un server Web (ad es. Autenticazione di form base), come questa identità è trasferita al DB del documento. L'unica risposta è quella di delegare tutte le richieste al DB attraverso il server Web - cioè proteggere il DB del documento in modo che non ci sia un accesso esterno diretto?

Questo sembra avere più senso, ed è il più semplice da implementare, ma mi chiedevo se qualcuno là fuori avesse avuto un'esperienza e/o consigli sull'uso di documenti db in un ambiente eterogeneo?

risposta

1

Questo probabilmente differisce in tutti i database menzionati. Ecco come funziona in CouchDB.

CouchDB consente di gestire utenti e ruoli.

È possibile utilizzare la funzione validate_doc_update nei documenti di progettazione per limitare la creazione/aggiornamento del documento. Ad esempio, puoi scrivere una convalida che nega l'aggiornamento del documento a chiunque tranne il suo autore.

Per limitare chi può leggere documenti da un database, è possibile modificare il documento /db_name/_security ed elencare utenti o ruoli.

Tuttavia, non penso che sia possibile rendere l'accesso in lettura più granulare (ovvero consentire a un utente di leggere solo i documenti che hanno creato).

Per ottenere ciò, è necessario posizionare CouchDB dietro un proxy e utilizzare le viste per fornire i documenti agli utenti autenticati. È comunque possibile utilizzare la gestione utenti CouchDB in questo modo. Il proxy nasconde semplicemente l'accesso diretto al database.

Per informazioni più dettagliate, controllare lo security overview on CouchDB wiki, lo security chapter of the Relax book e questo short screencast.

+0

Penso che le restrizioni di accesso in lettura siano sulla lista per una versione futura. – stwissel

+0

La chiave sembra essere il proxy - Penso che tentare di costruire un intero stack Web su CouchDB sia troppo ambizioso in questa fase (a meno che non sia un'app molto semplice) - eseguirlo dietro il proxy ha più senso, e questo funziona per noi. Stiamo eseguendo MongoDB, ma tutti gli accessi HTTP sono inoltrati tramite IIS, ma funziona. –

1

Bene, ho solo esperienza con CouchDB, ma spero di poterti aiutare comunque.

CouchDB ha un processo di convalida integrato, scrive le regole di convalida in javascript e ha accesso al gruppo in cui si trova l'utente corrente. È tutto gestito da CouchDB stesso, in pratica non devi preoccuparti di come accedere alle informazioni di accesso.

+0

È possibile aggiungere un collegamento alla documentazione su come eseguire questa operazione? –

Problemi correlati