django AuditTrail vs Reversion

Anu*_*yal 16 database django audit audit-trail reversion

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

我找了可用的解决方案

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

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

HLG*_*GEM 5

我个人更喜欢在数据库中创建审计表并填充触发器,以便存储任何更改甚至来自查询窗口的即席查询.我永远不会考虑不基于数据库本身的审计解决方案.这很重要,因为对数据库进行恶意更改或提交欺诈行为的人不太可能通过Web界面直接进行,而是直接在后端进行.更多的这种事情发生在心怀不满或者是愚蠢的员工身上,而不是外面的黑客.如果您已经使用ORM,则您的数据存在风险,因为权限位于表级别而不是它们所属的sp级别.因此,更重要的是捕获对dat的任何可能的更改,而不仅仅是来自GUI的更改.我们有一个动态proc来创建审计表,只要将新表添加到数据库就会运行.由于我们的审计表仅填充更改而不是整个记录,因此我们无需在每次添加字段时更改它们.

此外,在评估可能的解决方案时,请确保考虑恢复数据以撤消特定更改的难度.一旦有了审计表,您就会发现这是您需要做的最重要的事情之一.还要考虑在数据库架构更改时维护信息的难度.

选择一个解决方案,因为它似乎是最容易理解的,通常不是一个好主意.在满足要求,安全性等之后,这应该是您的选择标准中最低的.

  • 我选择软解决方案而不是数据库一(所以现在我正在寻找一个可维护的解决方案)B解决方案无法满足应用程序状态(轻松),关于安全性我认为如果一个人可以访问数据库并且地狱一心想欺诈做什么使得你认为他不会删除这样的数据库审计触发器或不更改审计表itsels,除非他们被存储在第二个物理位置重秒 (3认同)

Anu*_*yal 2

正如我在问题中所说, rcField 似乎满足了我的需求,这很简单,我想存储对表的任何更改,并且可能稍后会返回这些更改以生成一些报告。

所以我测试了 AuditTrail 和 Reversion Reversion 似乎是一个更好的完整应用程序,具有许多功能(我不需要),而且据我所知,它以 XML 或 YAML 格式将数据保存在单个表中,我认为

  1. 会在单个表中生成太多数据
  2. 要读取该数据,我可能无法使用现有的数据库工具。

AuditTrail 在这方面胜出,它为每个表生成一个相应的审计表,因此可以轻松跟踪更改,每个表数据较少,并且可以轻松操作和用户生成报告。

所以我将使用 AuditTrail。