Sécurisation des bases de données de type de document (MongoDB, CouchDB, RavenDB) pour l'accès client (navigateur)

StackOverflow https://stackoverflow.com/questions/3091956

Question

Document bases de données support de type REST JSON sur HTTP d'accès semble idéal pour soutenir les applications AJAX riches où le navigateur effectue des appels directs à la base de données, sans passer par les composants serveur web traditionnels / logique applicative. Un exemple de cela pourrait être en train de récupérer les préférences de l'utilisateur une fois qu'un utilisateur a été authentifié. (Page d'accueil BBC pourrait être un bon exemple, avant de s'écraser sous la charge!)

Le problème avec ce scénario est la question de la sécurité - si un utilisateur est authentifié à l'aide d'un serveur Web (par exemple des formes d'authentification de base), comment cette identité est reporté sur le document DB. La seule réponse à toutes les demandes proxy au DB via le serveur Web de toute façon - à savoir sécuriser le document DB afin qu'il n'y ait pas d'accès direct sur l'extérieur

Cela semble plus judicieux, et est le plus facile à mettre en œuvre, mais je me demandais si quelqu'un là-bas avait une expérience et / ou des conseils sur l'utilisation de documents dbs dans un environnement hétérogène?

Était-ce utile?

La solution

Ceci diffère probablement dans chaque base de données que vous mentionnez. Voilà comment cela fonctionne dans CouchDB.

CouchDB vous permet de gérer les utilisateurs et les rôles.

Vous pouvez utiliser la fonction validate_doc_update dans vos documents de conception pour limiter la création de documents / mise à jour. Par exemple, vous pouvez écrire une validation qui refuse la mise à jour le document à tout le monde, mais son auteur.

Pour limiter qui peut lire des documents à partir d'une base de données, vous pouvez modifier le document /db_name/_security et la liste des utilisateurs ou des rôles.

Cependant, je ne pense pas que vous pouvez rendre l'accès en lecture plus granulaire (à savoir permettre à un utilisateur de lire uniquement les documents qu'ils ont créés).

Pour ce faire, vous devez mettre le CouchDB derrière une vue proxy et utiliser pour servir les documents aux utilisateurs authentifiés. Vous pouvez toujours utiliser la gestion des utilisateurs CouchDB de cette façon. Le proxy cache tout l'accès direct à la base de données.

Pour plus d'infos, consultez le Présentation de la sécurité sur CouchDB wiki , chapitre de la sécurité du livre Relax et ce court screencast.

Autres conseils

Eh bien, je n'ont de l'expérience avec CouchDB, mais espère que je peux vous aider quand même.

CouchDB a un processus de validation intégré, vous écrivez vos règles de validation en javascript, et d'avoir accès au groupe dans lequel l'utilisateur actuel. Tout est géré par CouchDB lui-même au fond, vous ne devez pas prendre soin comment vous obtenez des informations de connexion.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top