2010-06-22 12 views
6

Las bases de datos de documentos que admiten el estilo JSON sobre acceso HTTP parecen ser ideales para admitir aplicaciones AJAX donde el navegador realiza llamadas directas a la base de datos , omitiendo los componentes de lógica de aplicación/servidor web tradicional. Un ejemplo de esto podría ser recuperar las preferencias del usuario una vez que el usuario ha sido autenticado. (¡BBC Homepage podría ser un buen ejemplo de esto, antes de fallar bajo la carga!)Protección de bases de datos estilo documento (MongoDb, CouchDb, RavenDb) para acceso de cliente (navegador)

El problema con este escenario es el problema de seguridad: si un usuario se autentica usando un servidor web (por ejemplo, autenticación básica de formularios), cómo es esta identidad transferida al documento DB. ¿Es la única respuesta para proxy todas las solicitudes al DB a través del servidor web de todos modos, es decir, asegurar el documento DB para que no haya acceso externo directo?

Esto parece tener más sentido, y es el más fácil de implementar, pero me preguntaba si alguien por ahí tenía una experiencia y/o consejos sobre el uso de documentos dbs en un entorno heterogéneo.

Respuesta

1

Esto probablemente difiera en cada base de datos que mencione. Así es como funciona en CouchDB.

CouchDB le permite administrar usuarios y roles.

Puede usar la función validate_doc_update en sus documentos de diseño para restringir la creación/actualización de documentos. Por ejemplo, puede escribir una validación que niega la actualización del documento a cualquier persona que no sea su autor.

Para restringir quién puede leer documentos de una base de datos, puede editar el documento /db_name/_security y enumerar los usuarios o roles.

Sin embargo, no creo que pueda hacer que el acceso de lectura sea más granular (es decir, permitir que un usuario lea solo los documentos que creó).

Para lograr eso, debe colocar el CouchDB detrás de un proxy y usar las vistas para enviar los documentos a los usuarios autenticados. Todavía puede usar la administración de usuarios de CouchDB de esta manera. El proxy simplemente oculta el acceso directo a la base de datos. Para obtener información más detallada, consulte security overview on CouchDB wiki, security chapter of the Relax book y short screencast.

+0

Creo que las restricciones de acceso de lectura están en la lista para una versión futura. – stwissel

+0

La clave parece ser el proxy. Creo que intentar crear una pila web completa encima de CouchDB es demasiado ambicioso en este momento (a menos que sea una aplicación muy simple); ejecutarlo detrás del proxy tiene más sentido, y esto funciona para nosotros. Estamos ejecutando MongoDB, pero todo el acceso HTTP está conectado a través de IIS, solo funciona. –

1

Bueno, solo tengo experiencia con CouchDB, pero espero poder ayudarte de todos modos.

CouchDB tiene un proceso de validación incorporado, usted escribe sus reglas de validación en javascript y tiene acceso al grupo en el que se encuentra el usuario actual. Todo es manejado por CouchDB en sí mismo, básicamente, no tiene que importar cómo se llega a la información de inicio de sesión.

+0

¿Podría agregar un enlace a la documentación sobre cómo hacer esto? –

Cuestiones relacionadas