我正在开发一个业务应用程序,该应用程序要求对所有数据库事务进行审核(主要出于法律目的)。
我环顾了网上,发现了DoddleAudit(http://www.codeplex.com/DoddleAudit),它基本上为SQL添加了Linq来跟踪更改的功能。就像人们在Hibernate中使用拦截器一样。
与我有关的是可靠性问题。虽然ORM层上的审核日志可以记录通过代码发生的所有事情,但是如果有人手动对数据库或黑客等发出SQL语句,则它不会记录任何更改。基本上,我要处理的信息是有点敏感。这就是使我相信触发器可能是最可靠的方法的原因。 (?)
其他日志记录方式可能是通过代码,也可能是通过存储过程,这似乎有点不可靠且不可靠。因此,我基本上只能使用触发器或类似DoddleAudit的东西。
我希望在选择其中一个之前能得到一些意见。
最佳答案
如果审核是出于合法的目的,则您必须通过认证的合规性方法进行审核。此类方法非常适合通过审核缓解的特定威胁。您需要阅读Auditing (Database Engine),并且很有可能会咨询专家,该专家可以为您围绕位置和域的数据审核围绕各种法律框架提供指导。
SQL Server具有符合C2的审核模式,请参阅c2 audit mode Option,这是认证的兼容模式。 Linq2sql审核或自定义数据审核可能是工程上的杰出成就,但是如果它们没有通过合规性认证(并且不是),它们也将一滴水。