我见过很多数据库设计在所有表上都有以下审计列……
>创建者
>创建日期时间
>更新者
> Upldated DateTime
从一个角度来看,我从以下视图中看到了表…
>实体表:
>审计专栏的好候选人)
>参考表:
>审核列可能需要也可能不需要.在某些情况下,根本不需要上次更新信息,因为记录永远不会被修改.)
>参考数据表
>与国家/地区名称,实体状态等类似…可能不需要审核列,因为这些信息仅在系统安装期间创建,并且永远不会更改.
我见过很多设计师盲目地把所有的审核专栏都放到了所有的表中,这种做法是不错的,如果是的话可能是什么原因……
我只是想知道,因为对我而言似乎不合逻辑.我很难弄清楚他们为什么这样设计数据库?我不是说他们错了或是对的,只是想知道为什么?
如果有可供选择的审计模式或解决方案,您也可以建议我……
感谢致敬
解决方法
数据审计是许多业务系统所必需的内部控制(请参阅Sarbanes Oxley,了解原因).它必须在数据库级别,以确保捕获所有更改,尤其是未经授权的更改.
即使使用查找表,未经授权的更改也可能会对您的系统造成严重破坏,因此了解谁进行了更改以及何时进行更改非常重要.什么时候特别重要,因为它有助于dbas知道在多大程度上获取备份以便意外或恶意地更改信息.
我们认为我们所有的员工都值得信赖,但许多盗窃的个人数据和破坏公司数据的恶意变更来自内部资源(这就是为什么让许多心怀不满的员工很危险),几乎所有的欺诈行为都是如此.然而,大多数程序员似乎认为他们只需要防范外部威胁.
当然,您仍然会有一些人可以进行未经授权的更改,但您无法阻止系统管理员执行此操作.但至少通过审计可以限制数据损坏的可能性(在雇用dbas时要特别小心,并且不允许在数据库服务器上使用其他任何管理员权限).