审计记录策略

Nat*_*her 7 nhibernate audit logging

我试图在我的应用程序中决定审计日志记录的最佳方法.日志的主要原因是报告事件序列(更改).

我有一个对象的层次结构,我需要在后一个日期在该层次结构的任何部分发生变化时创建报告.

我认为我有三个选择:

  1. 为每个表创建一个日志,从而匹配对象的层次结构,然后为报告创建一个视图.
  2. 展平层次结构并对表进行反规范化,使报告更容易 - 简单的选择语句.
  3. 有一个日志表并记录每个更改,使报告更难,但更灵活.

我目前倾向于选项1.

HLG*_*GEM 10

即使它已经老了,我也要谈谈这个话题.

只有一个审计表通常是一个糟糕的主意,因为当数据库中的所有内容都到达时,您将在数据库中创建锁定问题.为每个表使用单独的审计表.

让应用程序执行审计也是一个糟糕的主意.审核必须在数据库级别完成,否则您可能会丢失部分信息.数据不会仅从大多数数据库中的应用程序更改; 当您需要将所有产品的价格从所有10,000,000个增加10%时,没有人会从用户界面一次一个地更改所有产品的价格.审计应该捕获所有更改,而不仅仅是其中一些更改.这应该在大多数数据库的触发器中完成(SQL Server 2008具有内置的审计功能).一些最糟糕的潜在可能变化(员工犯欺诈或想要恶意破坏数据)也经常来自应用程序以外的地方,特别是如果您允许对用户进行表级访问(您不应该在任何财务数据库或包含个人信息).从应用程序审计不会发现这一点.开发人员经常忘记,在保护他们的数据时,外部来源并不是唯一的威胁.


Bri*_*ndy 5

审计日志基本上是按时间顺序列出的事件列表,执行这些事件的人员以及事件是什么.

我认为平面视图会更好,因为它可以很容易地进行排序和查询.所以我更倾向于你的选择#2 /#3.

包括交易类型,时间,用户ID,更改内容的描述以及与您的产品相关的其他相关信息.

您还可以随着时间的推移向产品添加内容,您无需不断修改审核日志模块.