问题标签 [audit-trail]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
18419 浏览

database - 为数据库应用程序留下审计跟踪/更改历史的有效策略?

人们成功地使用了哪些策略来维护相当复杂的数据库中数据的更改历史记录。我经常使用和开发的应用程序之一可以真正受益于更全面的跟踪记录随时间变化的方式。例如,现在记录可以有许多时间戳和修改的用户字段,但我们目前没有记录多个更改的方案,例如,如果操作回滚。在一个完美的世界中,可以在每次保存后重建记录,等等。

关于数据库的一些信息:

  • 需要有能力每周增加数千条记录
  • 50-60 桌
  • 主修订表每个可能有几百万条记录
  • 设置合理数量的外键和索引
  • 使用 PostgreSQL 8.x
0 投票
3 回答
7196 浏览

database - django AuditTrail vs Reversion

我正在开发一个新的网络应用程序,我需要将数据库中的任何更改存储到审计表中。此类审计表的目的是,稍后在实际的物理审计中,我们可以确定在某种情况下发生了什么,谁编辑了什么以及在进行复杂计算时 db 的状态是什么。所以大多数审计表将被写入而不是读取。有时可能会生成报告。

我一直在寻找可用的解决方案

  1. AuditTrail - 简单,这就是我倾向于它的原因,我可以理解它的单个文件代码。
  2. Reversion - 看起来使用起来很简单,但不确定如果需要修改它会有多容易。
  3. rcsField 似乎非常复杂,对我的需求来说太多了

我还没有尝试过这些,所以我想知道一些真实的经验以及我应该使用哪一个。例如,哪一个更快使用更少的空间,易于扩展和维护?

0 投票
2 回答
1385 浏览

logging - 如何使用 NLog/Log4Net 自动跟踪数据库更改?

我知道许多表审计方法。有些是基于触发器的,需要审计每个表上的触发器。有些有基于列数据类型的限制。如何使用 NLog 或 Log4Net 等日志框架。我希望我的日志(在表格中)回答问题“此时谁将此表格的这一列从 val0 更新为 val1?”

我还没有决定使用 OR 映射器。倾向于 NHibernate 或 EF。

提前致谢 !

0 投票
1 回答
3192 浏览

audit - 审计跟踪和实施 HIPAA 最佳实践

从数据库设计开始,是否有任何 HIPPA 审计跟踪实施的最佳实践。

0 投票
3 回答
596 浏览

database-design - 使用自然键,或使用代理键和审计表来审计/更改日志

我在这里的第一个问题,所以很好!

我是一名经验不足的初级开发人员,在解决这个问题时遇到了麻烦。

我有一张需要审核的表格。假设此表记录呼叫中心拨打的电话(不是,但这只是一个示例)。我称之为“CallHistory”。

我最初计划保留一个名为“Callees”的单独表,其中包含被调用者的姓名、电话号码等。该表将使用代理主键。

CallHistory 表将具有 Callee 表的外键。

我最初这样做是为了如果我更改了被叫方的电话号码,它将在整个系统中传播,我不必在多个表中更改电话号码。

问题是,CallHistory 表的全部意义在于记录呼叫历史,包括误拨电话(比如呼叫者拨错号码)。使用这种代理键方法会丢失历史记录。

工作中的一位高级开发人员建议在 CallHistory 表中保留呼叫者在该特定时间每次拨打电话的电话号码副本,以保存历史记录。

我正在考虑为同样的目的保留一个审计/更改日志表。

我的方法是否足以满足这个目的,还是我完全偏离了轨道?您更喜欢哪种方法?

干杯,安德鲁

0 投票
1 回答
630 浏览

django - Django:AuditTrail 和惰性关系

我一直在尝试修改AuditTrail代码,使其不复制ForeignKey字段,而是复制相关字段(即,我不希望我的数据库表上的审计模型有外键)。

我写了一个copy_field看起来像这样的函数:

此代码在准备好具有该AuditTrail属性的模型时运行(通过class_prepared信号)。

ForeignKey但是,当 a与尚未准备好的模型上的字段相关时,这会遇到问题-get_related_field()调用将失败,因为field.rel.to是包含相关模型名称的字符串,而不是模型实例。

我不知道该怎么做才能解决这个问题。在我开始复制字段之前,我是否必须确定模型具有哪些依赖项,并等到它们都准备好?关于解决此问题的最佳方法的任何想法?

0 投票
4 回答
7495 浏览

c# - asp.net c#中的最佳审计跟踪过程?

在 asp.net 应用程序中记录操作、活动等的最佳方式是什么。另外,哪种存储最适合记录这些?XML?D B?

非常感谢。

0 投票
4 回答
32241 浏览

asp.net-mvc - 在 ASP.NET MVC 应用程序上记录用户活动

是否有在 ASP MVC 应用程序上记录用户活动的好策略?(ActionFilters/HTTPModules)。

类似于上次用户活动(就像 StackOverflow “23 分钟前看到”),甚至使用了什么页面和控制器,甚至进一步推动了点击了哪些按钮或链接。

我安装了 ELMAH,但据我所知,它仅用于错误记录。

PD:谷歌分析不是一个选项。

0 投票
5 回答
606 浏览

java - 我有哪些选项可以保留 Java 对象的过去值?审核日志或列表?

Take my domain class for example

public class Person
{
  private Integer id;
  private String name;
  private String address;
  private String telephone;

  //Accessors here..
}


Take my domain class for example

This is great for storing 1 instance of a given Person, however, the name for example would most likely change over time, and I would like to retain any previous values, I may wish to see what addresses this person has lived at over the past 10 years.

What are my options for doing this? This is a Java web app so I could potentially have an AUDIT_LOG table on my schema, but that doesn't sound a very reliable way of keeping track of these changes

Another thought is to have a PersonFamily and keep all instances of person, assuming the last item in the List is the most recent, such as..

Any suggestions on how I can achieve this? Is there a really clean and simple process I've missed?

Thanks


Is there anywhere in your code where you set your session.IDUsers? You initialize it as a blank ''. Coldfusion does not populate it for you. The session scope is a place that will remember things for that user that you put there for a specified period of time inactivity, usually 20 minutes. So hopefully, somewhere before you run your query you have additional logic that fills that in, otherwise you are asking the database for a user named, ''.

This is just a point of style, but the following may work better for you:

Putting the cfoutput outside the paragraph block will make it easier if you have additional variables to insert into the text. (but will work either way)

Regardless of all that, unless you forgot to share a bit more of the code, I think the issue is that the session.IDUsers is blank and needs to be populated before the query. I hope this helps!

0 投票
1 回答
616 浏览

hibernate - 每个实体的可审计字段的存储

我想捕获可审计字段以跟踪特定实体发生的事情是一个好习惯(比如 createdBy、creationDate、modifiedBy、modifiedDate)

  1. 我假设如果一个对象从未被修改过,那么只为 SNMPv3 事件捕获以下可审计字段是有意义的(比如 createdBy、creationDate)

  2. 我假设如果一个对象可以由多人在创建后修改,例如用户配置文件可以由自己或管理员修改,那么捕获所有上述属性(例如 createdBy、creationDate、modifiedBy、modifiedDate)是有意义的

  3. 假设不需要每个实体的审计跟踪历史,将所有可审计属性存储在实体本身中是否有意义

  4. 对于上述用例,将审计委托给第三方框架(比如 JBoss Envers - http://www.jboss.org/envers )是否有意义。

  5. 假设一个实体(比如采购订单)由用户 X 创建和维护,用户 Y 对上述采购订单进行了一些改进。谁应该被标记为该实体的所有者(是创建者还是修改者)。在这种情况下,creationDate 可能根本没有任何相关性,因此在此处跟踪该字段是否有意义。

注:底层持久层基于JPA,Hibernate 3.3.x