什么是审核表?


24

什么是审计表?

它们有什么用?

我偶然看到他们读这篇文章


2
它们只是普通桌子。使用它们的方式以及放入它们的方式使它们成为“审核表”。
Nick Chammas 2012年

1
他们不一样。您有一个审核表,该表与您要审核的表是分开的。因此,您将有两个表,NormalTableAuditNormalTable
Thomas Stringer 2012年

1
马特,鲨鱼对此有您的回答。@Shark,我强调的一点是,审计表不是特殊的数据库结构(因为我对OP可能有这样的印象)。它只是开发人员构建并用来跟踪某些信息的另一张表。
Nick Chammas 2012年

@NickChammas哦,绝对,我完全明白您的意思。但是根据OP的评论,我认为他没有。
Thomas Stringer 2012年

如果您考虑审计的字典含义,您可能会得出结论,“审计表”是一个错误的名词。审核应该在数据库外部:如果审核是由应用程序业务本身编写的,那么如何进行审核?
某天,2012年

Answers:


22

审计表用于跟踪一个或多个特定表的事务。它们使您可以看到正在进行的“日志”(因为缺少更好的词)。例如,假设您有一个这样的表:

create table SensitiveInformation
(
    SensitiveNumber int not null,
    SensitiveData varchar(100) not null
)
go

可能有些用户和/或应用程序有权从该表中插入,更新和删除。但是由于这些数据的敏感性,您可能需要一种快速简便的方法来跟踪谁在该表上做什么。

因此,您有一个审核表来跟踪对该表执行的操作。通常,这将包括基本的WhoWhatWhen

审核表可能如下所示:

create table SensitiveInformationAudit
(
    SensitiveNumberNew int null,
    SensitiveNumberOld int null,
    SensitiveDataNew varchar(100) null,
    SensitiveDataOld varchar(100) null,
    Action varchar(50) not null,
    AuditDate datetime not null,
    LastUpdatedUser varchar(100) not null
)
go

审计表通常通过使用数据库触发器来填充。换句话说,当X操作发生时SensitiveInformation,将其详细信息插入中SensitiveInformationAudit


ActionUPDATEINSERTDELETE
leeand00 2013年

24

到目前为止,尚未突出显示的审计表的另一个重要方面是,除了跟踪谁对记录做一次写入(通常包括快照前后),记录的对象是谁。

审核表中的记录不能被更新或删除(请参见注释),只能插入。这有时是使用触发器或只是应用程序逻辑来强加的,但在实践中很重要,因为它为您提供了“证据”,表明没有以难以检测的方式篡改任何内容。

注意:从审核表中清除旧记录需要特殊的过程,这些过程通常必须得到管理层或审计员的批准。


4

当您要跟踪敏感/机密表中的更改时,通常使用审核表。如果存在用于薪水率和奖金百分比的表,并且HR应用程序根据此数据来支付薪水,则对该表具有写访问权的用户可以进行未经授权的付款修改。

同时,应允许某些用户使用这些表。这是审计表的用处。审计表可用于跟踪更改后的数据的前后值。通常,他们还会保存额外的信息,例如进行更改的人员以及完成更改的时间。

因此,这些审核表会阻止授权用户执行未经授权的活动。它们还提供了一种还原为正确值的方法。

SQL 2008及更高版本具有称为“ 更改数据捕获”的内置功能,可用于此目的。


2
遗憾的是,变更数据捕获对于审核非常糟糕,因为您无法捕获进行变更的用户(除非您已经将其存储在数据库中)。
HLGEM

0

审计表由本机或第三方审计工具使用,它们捕获数据库上发生的数据更改,通常包括有关更改者,受影响对象,更改对象,更改时间的信息。 SQL登录名,用于进行更改的应用程序和主机。所有捕获的信息都存储在审核表中,并且应该通过导出或查询以用户友好的格式提供。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.