Estamos desarrollando una aplicación web que utiliza los servidores asp.net y sql. Estamos obligados a hacer un seguimiento de auditoría para la aplicación. Según entiendo esto, una pista de auditoría sería básicamente para todos los Insertos, Actualizaciones y Eliminaciones en la base de datos ¿verdad? Ahora, la forma de abordar esto es que tengo una tabla de seguimiento de auditoría en la base de datos que se completa después de que se activa cada inserción, actualización o eliminación (escribiendo manualmente la secuencia de comandos dentro de la DAL). Sin embargo, cualquier cambio de DB directamente generado desde SQL Management studio NO se grabará (por razones obvias: P).Audit Trail en la aplicación web utilizando el servidor sql
Para atender a eso, pude crear un disparador y eso se encarga de todo. También busqué en Google y descubrí que SQL Server tiene la capacidad de hacer un seguimiento de auditoría. Sin embargo, el problema con el uso de desencadenantes es que NO obtendré la información del usuario que inició sesión en el sitio web. Voy a obtener el usuario sql, pero no me importa dos veces, me preocupa el usuario del sitio web.
Una solución que descubrí que era a) Tengo un seguimiento de auditoría de mi aplicación web y también tengo la configuración de desencadenante. En el informe de auditoría, simplemente muestro un registro de auditoría de la aplicación web y un registro de auditoría del servidor sql. Problemas obvios con este enfoque: excesivo. Escribir en dos conjuntos diferentes de tablas en CADA DB CAMBIO.
b) Tengo una columna llamada UserId EN CADA BASE DE DATOS. Luego creo un disparador para capturar todos los cambios DB. Paso esta ID de usuario en cada tabla que cambio (insertar, actualizar, eliminar) y obtengo esta identificación del desencadenador. Retrasos obvios: columna de ID de usuario innecesario en cada tabla
Me disculpo por la publicación larga. Básicamente, necesito un registro de auditoría que registre todos los cambios de db (incluido el acceso directo a db), pero al mismo tiempo me da información de inicio de sesión para los cambios de db realizados desde la aplicación web.
Agradecerán cualquier comentario al respecto.
Muchas gracias
xeshu
Personalmente, estoy de acuerdo contigo al 100%. La principal preocupación es básicamente si alguien simplemente ingresa directamente al DB y comienza a manipular los datos, pero como dices, es muy posible que simplemente elimine todos los factores desencadenantes, por lo que es inútil tener desencadenantes solo para ese 0.00001% de probabilidad que puede ser eliminado muy bien si el hacker lo piratea. Saludos por la respuesta :) – xeshu
La auditoría en la base de datos SQL se siente mucho más segura para mí. Sé de dónde vienes, pero Diebold recibió una buena cantidad de mala prensa para auditar a través de su aplicación y no a través de su base de datos: http://www.bbvforums.org/forums/messages/2197/2368.html – sarnold
It Depende de su aplicación, un sistema de votación necesitaría controles mucho más estrictos que la mayoría de las aplicaciones. Puede parecer más seguro, pero agregar el registro a nivel de base de datos a través de activadores SQL en la práctica no ofrece mucha seguridad adicional del seguimiento de auditoría sobre la auditoría a nivel de aplicación. Cualquiera con acceso a la base de datos y los permisos pertinentes pueden alterar los desencadenantes e insertar/actualizar/eliminar registros en una tabla de auditoría.Es más fácil evitar el acceso directo a la base de datos y construir su seguridad y ubicación en la aplicación que permitir el acceso a la base de datos y administrar permisos de SQL de nivel superior. –