数据审计工具( 审计触发器生成器)
数据审计触发器生成器
引言
在当今的IT世界中,大多数应用程序都需要数据审计,无论是ERP系统、工作流应用程序、CRM工具还是任何数据库系统,审计都已成为该系统的重要组成部分。 基本上,审计将帮助以下领域。
- 应用程序管理员可以使用审计数据进行分析。
- 对数据库篡改进行取证分析。
- 审计数据也在一定程度上帮助快速数据恢复。
实现数据审计有多种方法,但在表的触发器中设置审计逻辑是最有效的方法,而且易于维护。
我创建了一个工具(存储过程),它将为您的表生成审计触发器,并将审计数据加载到整个应用程序的单个表中。 您还可以根据应用程序的需要自定义存储过程。
我已经在我的几个项目中使用了这个工具,节省了大约 80% 的编码工作。 我相信您可以使用此工具在几天内实现整个项目的审计跟踪。
我还上传了示例表和测试数据,这将帮助您理解审计跟踪。
工具特性
- 此审计工具将在单个表中跟踪整个应用程序的审计数据,便于生成审计报告。 请参考下面的快照“带有示例数据的审计日志表”。
- 审计工具还将在审计表中跟踪以下信息,这些信息将有助于生成用户友好的报告。
- 任何表更改都不会影响应用程序审计跟踪,审计触发器能够动态读取列并将数据加载到审计表中。
- 对于更新操作,您可以仅将修改后的数据加载到审计表中。
- 将跟踪表的主列名和数据作为记录标识符,这可以通过在审计配置表中配置特定列作为记录标识符来覆盖。 例如,“销售人员姓名”可以在审计配置表中配置为记录标识符,在这种情况下,触发器将使用“销售人员姓名”作为记录标识符而不是“销售人员ID”。
- 触发器可以转到外键引用表并从中提取数据进行跟踪。 让我们看下面的例子,在更新“SalesPerson”表时,它可以使用“Territory ID”从“SalesTerritory”表中提取“Territory Name”,这将为数据审计提供完整的信息。
带有示例数据的审计日志表
Table Name
Column Name
RecordIdentifierName(Primary Column name)
RecordIdentifierValue(Primary Column Data)
Actionby_ UserID
ActionDateTime (Time stamp)
Action Type (Insert / Update /Delete)
Audit Description
Old Value (Data will be loaded for Update and Delete action)
Old Value Decode (Data from foreign key reference table)
New Value (Data will be loaded for Insert and Update action)
New Value Decode (Data from foreign key reference table)
Category
数据审计所需的审计表
需要创建和配置以下审计表以实现审计。 让我们了解每个表的重要性。
01. AuditCategory (审计类别)
此表将帮助对审计数据进行分类,例如,审计数据可以按如下方式分类。
- 主数据
- 销售
- 购买
02. AuditSubCategory (审计子类别)
应用程序表名应配置类别映射。
在 RecordIdentifier 列中指定表的主键或特定列信息将帮助审计触发器在审计表中加载 RecordIdentifier 列名和数据。 这将有助于定位记录并与实际表数据匹配。
AuditCategory 和 AuditSubCategory 表的目的是创建具有适当分组的审计报告。
03. AuditLogDecodeTableMapping (审计日志解码表映射)
这个表非常重要。 应该加载所有外键引用到该表中,以便审计触发器可以从外键表中提取必要的信息并将其加载到审计表中(参考特性 6)。
04. AuditActionType (审计操作类型)
此表用于维护操作详细信息(插入、更新和删除)。
05. AuditLogData (审计日志数据)
AuditLogData 表,所有审计信息都将保存在其中。
实施步骤
- 下载附件 (AuditTool.Zip) 并创建下面提到的审计表。
- 创建函数
- 创建用于创建审计触发器的审计存储过程
- 生成审计触发器并部署它。
[Audit].[AuditCategory]
[Audit].[AuditSubCategory]
[Audit].[AuditLogDecodeTableMapping]
[Audit].[AuditActionType]
[Audit].[AuditLogData]
Audit.GenerateDynamicQuery
Audit.Generate_AuditTrigger_For_Insert
Audit.Generate_AuditTrigger_For_Update
Audit.Generate_AuditTrigger_For_Delete
使用示例数据进行实施培训
- 下载示例附件 (AuditToolSample.Zip) 并创建以下示例表。
- 在以下审计表中配置示例表信息。
- 生成审计触发器脚本并执行它。
- 尝试使用测试数据。
[Sales].[CountryRegion]
[Sales].[SalesTerritory]
[Sales].[SalesPerson]
[Audit].[AuditCategory]
[Audit].[AuditSubCategory]
[Audit].[AuditLogDecodeTableMapping]
[Audit].[AuditActionType]
/* Generate the Audit trigger using below SQL script and execute it*/
EXEC [Audit].[Generate_AuditTrigger_For_Insert]
'SalesPerson|SalesPersonInsertAudit,SalesTerritory|SalesTerritoryInsertAudit,
CountryRegion|CountryRegionInsertAudit', 'Jash', 'Sales', 'True'
go
EXEC [Audit].[Generate_AuditTrigger_For_Update]
'SalesPerson|SalesPersonUpdateAudit,SalesTerritory|
SalesTerritoryUpdateAudit,CountryRegion|CountryRegionUpdateAudit', 'Jash', 'Sales', 'True'
go
EXEC [Audit].[Generate_AuditTrigger_For_Delete]
'SalesPerson|SalesPersonDeleteAudit,SalesTerritory|
SalesTerritoryDeleteAudit,CountryRegion|CountryRegionDeleteAudit', 'Jash', 'Sales', 'True'