2012-05-21 14 views

Respuesta

5

No hay un "protocolo" de replicación CouchDB. El proceso de replicación es simplemente un cliente que se conecta a dos puntos finales de CouchDB, lee documentos de uno y los escribe en el otro. Por supuesto, CouchDB viene con un cliente así ("el replicador") incorporado; pero conceptualmente es una aplicación de terceros.

Lo que eso significa es que puede eliminar la replicación de su análisis de seguridad de su aplicación. Primero considere los clientes web normales que leen y escriben en su servidor. Bloquea eso. Puede suponer un adversario hipotético con un navegador web pirateado o con un cliente HTTP personalizado (que no respeta las políticas de origen cruzado, por ejemplo).

Con este problema resuelto, la replicación, por necesidad, seguirá su política de seguridad.

En otras palabras, la replicación entre PouchDB y CouchDB:

  • Si está empujando al servidor remoto, su herramienta de seguridad es la función remota validate_doc_update.
  • Si está tirando desde el servidor remoto, su herramienta de seguridad es el objeto _security de la base de datos - específicamente las matrices "members". Un cliente puede leer una base de datos por completo o no leerla en absoluto. Por supuesto, puede hacer réplicas filtradas en bases de datos de uso especial en el lado del servidor.
+0

Esta era mi suposición, que no expondría directamente CouchDB (tanto como no expondría a MySQL ni a ningún otro almacén de datos directamente), sino que implementaría algún tipo de punto final de paso. Pero estoy un poco confundido cuando dices que no hay un "protocolo" CouchDB. Entiendo lo que quiere decir con que actúa como un cliente externo, pero mi suposición sería que la replicación de PouchDB está logrando una interoperabilidad al tratar esencialmente ese comportamiento como un protocolo, ¿o aún me falta algo aquí? –

+1

Sí, tienes razón. Mi comentario es casual, no pretende ser claro como el cristal. Por supuesto, hay una conversación rígida entre los puntos finales para replicar: un protocolo. Pero lo bueno es que esta conversación es simplemente un cliente que se conecta y hace actualizaciones normales. No hay un canal mágico fuera de banda para la replicación. Describo el modelo conceptual un poco más aquí: http://stackoverflow.com/questions/4766391/what-is-the-couchdb-replication-protocol-is-it-like-git – JasonSmith

+0

CouchDB está diseñado para exponerse directamente a los usuarios, como un servidor de aplicaciones. Por supuesto, muchas personas lo usan con éxito en un modelo tradicional de 3 niveles también (como MySQL). La decisión sobre exponer a los usuarios se reduce a si puede trabajar con los usuarios de CouchDB y el modelo de autenticación. Eso es un salvavidas (si su aplicación se ajusta a ese modelo) o un factor decisivo (si no es así) – JasonSmith

Cuestiones relacionadas