企业数据审计

时间:2009-09-17 14:17:00

标签: entity-framework audit

我们当前的企业解决方案是由实体框架驱动的ASP.NET MVC应用程序。有几个关于如何挂钩变更事件以进行审计的链接。我对此并不感兴趣。

我对企业级审计架构感兴趣。那些有企业级战斗创伤的人,您的审计解决方案是什么?您是否在框架中序列化数据库中的对象。您是否正在为审计表设置数据库触发器?您是否一起使用单独的数据库,以便您的审计增长不会影响您的应用程序数据库?我对这里经过验证的真实解决方案感兴趣。我知道我们的技术选择(EF)有选择,但我首先对基金会感兴趣。

非常感谢链接。

3 个答案:

答案 0 :(得分:2)

我没有任何链接,但在系统中,我很高兴在日常工作中保持这里。我们有一个审计表,基本上存储以下信息。

TableName,PrimaryKeyValue,ModifiedColumn,OldValue,NewValue,ChangeUser,Change Date

现在,这对于审计速度非常有用,在我们的代码中,我们有一个用于自动实现审计日志记录的通用接口,但从“审查”的角度来看,它不是获取信息的“最快”方式退出。 (当然,我们实际上没有做任何事情需要查看审计日志...)

答案 1 :(得分:2)

我们最近不得不在我们的企业中解决同样的问题。我们也被要求恢复到以前的版本。

我们最终审核了业务实体而不是sql中的表。我们基本上序列化数据库中的记录,并跟踪从一个版本到下一个版本所做的更改。这种方法允许我们将先前版本检索到业务实体中,然后通过调用相同的保存操作来恢复。要恢复的这个功能将转移到应用程序的责任,因为它必须在这里解决,否则我们的服务可能需要知道有关参与的应用程序的太多细节。 Serivce Operations提供按版本,日期,查看历史记录以及审计更改来检索记录的操作。它是针对不同应用程序组和不同实体的选择方法(并非数据库中的所有内容都需要进行审计,以便为什么这样做)。

然后我们构建一个轻量级网站,与服务对话并显示所有版本。我们构建了一个机制来显示添加/更新/删除以在版本之间进行比较(非常酷的ui表示),这允许用户查看谁更改了什么以及何时更改。该服务可以发回指向URL的链接以查看实体的版本。这允许我们的webaps + winform / wpf应用程序启动浏览器,以便用户可以看到更改。

也许我可以打包并提供是否有人感兴趣....

答案 2 :(得分:1)

我见过几种解决方案,但我最喜欢的是简洁本身:

  • 创建镜像每个源表的审计表,添加一些额外的列来跟踪更改的日期和类型(如果您支持,则插入,更新或删除)和进行更改的用户。删除所有约束和索引(除非您希望进行大量搜索)。

  • 在表更新逻辑内部(我们使用过程,但没有理由不能使用OR / M或其他持久层,给定适当的挂钩),写入源表和审计表。

这有很多好处,但最大的一点(在我看来)不必担心或编写所有代码来管理客户端中配对写操作的事务完整性。