Módulo Información Confidencial


Project's Forge

Extensión a vtigerCRM para guardar información confidencial de manera segura. Los datos serán encriptados y solo accesibles por usuarios con las credenciales apropiadas El objetivo de este módulo es el de proteger la información confidencial del acceso no autorizado, tanto desde dentro de la empresa como de todo aquel que de alguna manera podría conseguir un acceso a nuestra base de datos completa, ya sean con malas intenciones o simplemente terceros que requieren acceso para dar soporte o resolver problemas.

Hasta donde yo sepa, no existe nada de este tipo para vtiger CRM. He estado investigando, pero sólo he encontrado un proyecto abandonado en el forge de vtiger CRM con un objetivo más modesto. Así que, con la ayuda y el apoyo de Object Solutions, hemos diseñado una posible solución para la solicitud.

Hemos creado un nuevo módulo llamado “Información Confidencial”, relacionado con una cuenta/contacto y un recurso. Podrás ver la lista de información confidencial relacionada con cada uno en su pestaña de +info.

Un registro de Información Confidencial tendrá dos partes:

  • Cabecera
    • Nímero CI (campo enlace)
    • Cuenta/Contacto (obligatorio)
    • Recurso (opcional)
    • Nombre, campo de texto para referencia
    • Categoría, lista desplegable, exclusivamente para filtrar y facilitar la identificación del registro
    • Descripción
    • Fecha y Hora de Creación y Modificación
  • El resto de campos y bloques
    • El resto de campos que son de tipo texto serán cifrados, (incluso los campos personalizados). Números, porcentajes, moneda, campos de referencia (uitype 10), checkbox, y campos de tipo fechas y hora NO serán encriptados ya que el valor se perdería al guardar en la base de datos. Si necesitas cifrar números, crea un campo de tipo texto y guarda el número en este campo.

Debido a limitaciones en vtiger CRM (ya que no es capaz de utilizar la extensión de php MySQLi) no se puede guardar información binaria en la base de datos. Esta limitación nos obliga a codificar la información cifrada mediante texto plano ASCII y utilizar espacio adicional. Eso significa que si quieres guardar un campo de 10 caracteres de texto, DEBES crear un campo de texto de 20 caracteres (al menos). Yo recomendaría hacer todos los campos de texto lo más grande posible (255).

No tiene posibilidad de añadir comentarios, ni funcionalidad de importar ni exportar.

La importación podría ser activada fácilmente pero sólo sería útil en una situación, que es la importación inicial. Al importar información, como es normal en vtiger CRM, se importará en texto plano. Una vez importados los registros, podríamos poner en marcha el proceso de cifrado inicial y todo estaría cifrado. Después de esto, el proceso de importación no funcionaría ya que la nueva importación (de nuevo) entraría los datos en texto plano, mientras que el módulo espera que ya esté encriptada.

El módulo dispone de un registro histórico de operaciones, similar al existente en incidencias y oportunidades.

Al intentar acceder a la vista de detalle o edición, el programa pedirá la contraseña de acceso. Si se introduce correctamente se mostrará la información confidencial, si no se da, no se permitirá el acceso. En cualquier caso se registrará el evento en el histórico de eventos y modificaciones.

Una vez hemos conseguido acceder al registro, se iniciará una cuenta atrás. Al agotarse la cuenta, el contenido de la página desaparecerá y volveremos a la vista de lista del módulo, consiguiendo así proteger la información. La longitud de la cuenta atrás se puede ajustar en el sección de configuración del módulo,

Si se recupera un registro de la Papelera de Reciclaje, debería poderse acceder a la información normalmente, incluso si se ha cambiado la contraseña mientras el registro estaba en la papelera.

Internamente, toda la información se guardará cifrada utilizando la librería mcrypt de php. La contraseña se guardará utilizando sha1 y el vector de información cambiará automáticamente cada vez que se cambie la contraseña.

En el administrador de módulos, podrás acceder a la sección de configuración del módulo, donde podrás cambiar la contraseña global. Esto lanzará un proceso que descifrará toda la información y la volverá a cifrar con la contraseña nueva.

Ya que estamos usando métodos de cifrado estándar y siguiendo las normas, si alguien consigue acceso a tu base de datos, tardarán un tiempo MUY largo (años) en recuperar la contraseña de empresa necesaria para descifrar la información almacenada. Pero, como siempre, con este tipo de solicitudes, el sistema es solo tan bueno como la contraseña que utilizas. Si decides usar tu nombre de empresa como la contraseña de toda la empresa, entonces no tardarán en acceder a la información :-)

Cómo funciona

El módulo se instala utilizando el administrador de módulos y después hay que aplicar el parche que se puede encontrar en el directorio del módulo.

Una vez instalado, hay que crear los campos personalizados que se requieran para guardar información confidencial.

Debido a limitaciones en vtiger CRM (ya que no es capaz de utilizar la extensión de php MySQLi) no se puede guardar información binaria en la base de datos. Esta limitación nos obliga a codificar la información cifrada mediante texto plano ASCII y utilizar espacio adicional. Eso significa que si quieres guardar un campo de 10 caracteres de texto, DEBES crear un campo de texto de 20 caracteres (al menos). Yo recomendaría hacer todos los campos de texto lo más grande posible (255).

A continuación, hay que acceder a la sección Cambiar Contraseña en la configuración de módulo:

Establece la contraseña empresarial y puedes empezar a utilizar el módulo de manera normal, como si fuera cualquier otro módulo de vtiger CRM. La diferencia será que el módulo te pedirá la contraseña cada vez que intentas acceder a la vista detalle o edición del módulo. Si la introduces correctamente se te permitirá el acceso a la información, si no, no podrás acceder a los datos.

Recuperar información al perder la contraseña

Si pierdes la contraseña, pierdes la información. No hay nada más que decir.

Ampliaciones Futuras

Opciones a considerar en el futuro:

  • Acceso con contraseña dual (como enviar un SMS o email con un código de confirmación o token)
  • Acceso por categoría/usuario/nivel (así, algunos usuarios solo pueden acceder a información de categoría 1 y otros de categoría 2)
  • Opción de forzar la renovación de la contraseña cada n-días.

FAQ

La contraseña es única a nivel de empresa y se ha de pasar de mano en mano. No tiene nada que ver con los perfiles. El sistema de permisos de vtiger CRM funciona en este módulo así que si lo haces privado y defines reglas de acceso, incluso a nivel de campo, éstos funcionarán como es debido, pero solo podrán acceder a la información encriptada aquellos usuarios que conozcan la contraseña.