martes, 10 de septiembre de 2013

CouchDB - Manejo de usuarios

Bueno, acá como crear usuarios, darles permisos y roles, etc...
Primeros, para el administrador, ni bien entramos deberíamos ponerle clave al administrador, eso de hace desde el futon (por defecto en http://localhost:5984/_utils/) y haciendo click en la parte inferior derecha, donde dice  " Welcome to Admin Party! Everyone is admin. Fix this" (en el Fix this :-). Y ahí nos pedirá Usuario y Clave.

Después deberíamos entrar en las bases de datos que tengamos y setearle miembros y administradores, ya que las bases que no tienen ningún miembro son públicas.
También si queremos deshabilitar el acceso anónimo a la base debemos entrar en Tools->Configuration (en la parte derecha del futon) y setear en true la variable require_valid_user.

Tipos de usuarios

En CouchDB se pueden setear tres tipos de usuario:

  • Adminsitradores: como vimos arriba, los usuarios admin del servidor tienen todos los privilegios.
  • Administradores de la base de datos: tienen todos los privilegios dentro de la base de datos de la que son administrador, pero no pueden acceder a otras bases ni crear o borrar otras bases ni la propia.
  • Y por último los miembros de la base de datos: pueden ver, crear y editar documentos en la base, excepto los de diseño.
Los Server Admin ya vimos como se setean. Los Database Administrators se setean en el objeto de seguridad de la base de datos, que se configura desde futon, entrando en la base y luego, en el botón "Security", en la parte superior, ahí me deja  ingresar los admins y los members de la base.
Hay que tener en cuenta que para que no permita acceso a cualquier usuario hay que ingresar al menos un valor en estos campos, ya que si dejamos por ejemplo los Roles vacíos va a dejar entrar a cualquiera, porque la base no tiene ningún rol asignado (lo mismo para miembros); entonces cualquiera podrá modificar documentos, aunque los documentos de diseño solo podrán ser modificados por administradores del servidor.

Usuarios

Para crear usuarios en nuestra base es muy facil, se crean como documentos en la base _users (si quisiéramos usar otro nombre se setea en la propiedad authentication_db de configuración). Con lo cual para crear el usuario pepe haríamos:

{
   "_id": "org.couchdb.user:pepe",
   "name": "pepe",
   "password": "password_de_pepe",
   "roles": ["DataEntry"
   ],
   "type": "user"
}
Para los usuarios, el _id debe comenzar con "org.couchdb.user:nombre de usuario" y nombre de usuario debe coincidir con name. En "roles" ponemos los roles a los que el usuario pertenece.

Roles


En nuestro servidor de base de datos podemos crear diferentes roles para los usuario. Como vimos en la creación de usuarios, le podemos dar al mismo usuario uno o más roles. Bueno, ahora entrando en nuestra base y yendo a "Security" (en el menú superior de Futon) podemos darle a esos roles permisos de administrador o miembro de la base; lo que hace que todos los usuarios que tengan el rol adquieran sobre nuestra base los permisos que le demos al rol.

1 comentario:

  1. por que couchdb no te permite crear otros usuarios con un usuario administrador que creaste con un usuario root?

    ResponderEliminar