Saludos! Tengo una interrogante y posiblemente alguien de por aqui ya ha pasado por situación similar:
Estoy desarrollando una aplicación PHP (BD MySQL) para una empresa, en donde los usuarios logueados al sistema trabajan con datos "sensibles" (digamos para ejemplificar que la nómina, cuanto gana cada quien dentro de la empresa). Ellos (la empresa) tienen un dpto. de Tecnología Capaz de realizar la labor, pero por razones que no vienen al caso deciden tercerizar y contratarme para llevar a cabo la tarea. Hasta ahí todo bien, Pero uno de los requerimientos de mis contratantes me tiene pensando desde hace días: desean que el personal que será encargado de administrar la BD (y además el servidor Web donde se alojará la aplicación) no puedan modificar los datos "sensibles" antes mencionados.
No se me ocurre la forma de lograrlo pues, si bien es cierto que las contraseñas de los usuarios del sistema estarán encriptadas y usarán salt diferentes para cada usuario, tenemos lo siguiente:
1.- Al tener acceso "root" a la BD, el DBA puede alterar la información a su gusto (digamos subirse el sueldo, aumentar la antiguedad de un amigo en la compañia, y un etc que contempla muchos escenarios)
2.- Al tener acceso al PHP que conecta con la BD, el administrador del webserver puede igualmente loguearse en MySQL y hacer de las suyas.
3.- El DBA y el administrador de los archivos bien podría ser la misma persona.
4.- Tener tablas de auditoría alimentadas con triggers no resuelve el problema, ya que este mecanismo está diseñado para señalar los cambios hechos por los usuarios del sistema, no por sus administradores (si tienes acceso a la BD y cambias algo también puedes eliminar el registro de auditoría generado).
Se entiende que al terminar el desarrollo e implementación yo no tendría acceso (es una intranet), por lo que mis contratantes no me consideran un factor de riesgo en este particular.
Espero que alguien pueda aportar luces sobre como garantizar al cliente la seguridad de sus datos frente a su propio staff de tecnología.