【问题标题】:How do I design my application such that audit trails cannot be edited or deleted?如何设计我的应用程序以使审计跟踪无法编辑或删除?
【发布时间】:2012-12-29 06:31:38
【问题描述】:

我有一个问题,我需要审计跟踪(通常存储在 DB 中)是不可编辑和可删除的,即使对于 DBA 和系统管理员也是如此。

一种方法是应用加密和校验和,但这仅允许检测更改或防止窥探。它不会阻止 DBA 只删除一行。

感谢任何有关此问题的讨论。

【问题讨论】:

  • 如果您不能信任您的 DBA 和系统管理员,那么您就有一个无法通过编程方式解决的人员问题。

标签: database audit audit-trail


【解决方案1】:

如果您希望即使 DBA 和系统管理员也无法编辑审计跟踪,则需要将它们存储在他们控制的设备之外。

但是,这会导致同样的问题 - 该系统的 DBA 和系统管理员将能够编辑它们。

最好的办法是建立一个系统,将它们存储在两个不同的位置,这些位置不共享管理员并定期进行比较检查。

或者,您可以在更新/删除触发器由特定用户或特定客户端创建时触发。如果进行了此类非应用程序更新或删除,则可以对这些触发器进行编程以发送电子邮件或文本消息。

应该知道 - 在 admin/dba 社区中众所周知存在此类触发器。您将无法阻止更新或删除,但肯定会让它们远离该表。

但仍有一个问题,那就是删除或修改触发代码的能力。

【讨论】:

  • 除此之外,您可以对审计行进行哈希处理,并具有比较两个哈希值的审计检查功能 - 您还可以将哈希值从位置 A 发布到位置 B,反之亦然。这会给你一个额外的检查层。
【解决方案2】:

存在“一次写入”存档存储系统,例如计划 9 中的Venti。当然,这并不能阻止任何具有物理访问权限的人将磁铁移到硬盘或类似设备上;)

一个足够精明的系统管理员可以创建一个稍微修改过的数据版本,并替换对venti分数的引用......但同样精明的系统管理员仍然可以恢复原始数据。

无论如何,我认为您可以从研究仅附加存储系统中学到很多东西。与数据库相比,它们对于存储审计跟踪很有意义。

【讨论】:

    【解决方案3】:

    存在充当嗅探器并且能够记录在数据库上执行的每一个命令的设备。 IBM Guardium 就是一个例子。

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 2013-04-10
      • 2018-06-25
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 2010-11-07
      相关资源
      最近更新 更多