2010-06-22 16 views
6

Dokumentdatenbanken, die REST-JSON-über-HTTP-Zugriff unterstützen, sind ideal für AJAX-reiche Anwendungen, in denen der Browser direkte Aufrufe an die Datenbank ausführt unter Umgehung der traditionellen Webserver/Anwendungslogik-Komponenten. Ein Beispiel hierfür könnte das Abrufen von Benutzereinstellungen sein, sobald ein Benutzer authentifiziert wurde. (BBC Homepage könnte ein gutes Beispiel dafür sein, bevor sie unter der Last abstürzt!)Sichern von Dokumenten-ähnlichen Datenbanken (MongoDb, CouchDb, RavenDb) für Client- (Browser-) Zugriff

Das Problem mit diesem Szenario ist das Sicherheitsproblem - wenn ein Benutzer mit einem Webserver authentifiziert wird (zB Basisformularauthentifizierung), wie wird diese Identität in die Dokument-DB übernommen. Ist die einzige Antwort, um alle Anfragen über den Web-Server an die DB zu übertragen - d. H. Die Dokumenten-DB zu sichern, so dass es keinen direkten externen Zugriff gibt?

Dies scheint am sinnvollsten zu sein, und ist am einfachsten zu implementieren, aber ich fragte mich, ob jemand da draußen eine Erfahrung und/oder einen Rat zur Verwendung von Dokument dbs in einer heterogenen Umgebung hatte?

Antwort

1

Dies unterscheidet sich wahrscheinlich in jeder Datenbank, die Sie erwähnen. So funktioniert es in CouchDB.

CouchDB erlaubt Ihnen, Benutzer und Rollen zu verwalten.

Sie können die Funktion validate_doc_update in Ihren Designdokumenten verwenden, um die Dokumenterstellung/Aktualisierung zu beschränken. Sie können beispielsweise eine Validierung schreiben, die die Dokumentaktualisierung für jeden außer dem Autor verweigert.

Um einzuschränken, wer Dokumente aus einer Datenbank lesen kann, können Sie das Dokument /db_name/_security bearbeiten und die Benutzer oder Rollen auflisten.

Allerdings glaube ich nicht, dass Sie den Lesezugriff granularer machen können (d. H. Einem Benutzer erlauben, nur die Dokumente zu lesen, die er erstellt hat).

Um dies zu erreichen, müssen Sie die CouchDB hinter einen Proxy setzen und Ansichten verwenden, um die Dokumente an authentifizierte Benutzer zu liefern. Sie können die CouchDB-Benutzerverwaltung trotzdem auf diese Weise verwenden. Der Proxy versteckt nur den direkten Zugriff auf die Datenbank.

Für genauere Informationen, überprüfen Sie die security overview on CouchDB wiki, die security chapter of the Relax book und diese short screencast.

+0

Ich denke, Lesezugriffsbeschränkungen sind auf der Liste für eine zukünftige Version. – stwissel

+0

Der Schlüssel scheint der Proxy zu sein - ich denke, dass der Versuch, einen ganzen Web-Stack auf CouchDB zu bauen, zu diesem Zeitpunkt zu ehrgeizig ist (es sei denn, es ist eine sehr einfache App) - es hinter dem Proxy auszuführen, macht am meisten Sinn, und das funktioniert für uns. Wir führen MongoDB aus, aber der gesamte HTTP-Zugriff wird über IIS weitergeleitet - es funktioniert nur. –

1

Nun, ich habe nur Erfahrung mit CouchDB, hoffe aber, dass ich Ihnen trotzdem helfen kann.

CouchDB hat einen Validierungsprozess integriert, Sie schreiben Ihre Validierungsregeln in Javascript und haben Zugriff auf die Gruppe, in der sich der aktuelle Benutzer befindet. Es wird im Grunde genommen von CouchDB selbst gehandhabt, Sie müssen sich nicht darum kümmern, wie Sie zu den Login-Informationen kommen.

+0

Können Sie einen Link zur Dokumentation hinzufügen, um dies zu tun? –