我们正在使用asp.net和sql server开发一个Web应用程序.我们需要为应用程序执行审计跟踪.据了解,审计线索基本上是针对数据库上的所有插入,更新和删除的?现在我们来解决这个问题的方法是在每个插入,更新或删除被触发之后,在数据库中有一个审计跟踪表填充(手动在DAL中编写脚本).但是,直接从SQL管理工作室触发的任何数据库更改都将不会被记录(显而易见的原因是:P).
为了照顾我,我可以创造一个触发器,并照顾一切.我也做了一些搜索,发现SQL服务器有能力做审计追踪.但是使用触发器的问题是我不会得到登录在网站上的用户信息.我会得到sql用户,但我不给两个hoots,我关心的网站用户.
我想出的一个解决方案是
a)从我的Web应用程序审计跟踪,并设置触发器.在审计报告中,我只是从Web应用程序显示审核日志,并从sql server显示审核日志.
这种方法的显而易见的问题:过头.在每个DB CHANGE上写入两组不同的表.
b)我有一个名为UserId ON的列的每个数据库表.然后我创建一个触发器来捕获所有的DB更改.我通过这个userId在我更改的每个表(插入,更新,删除)和从触发器获取这个id.
明显的挫折:每个表中的不必要的用户标识列
我对长篇职位表示歉意.基本上,我需要一个审核日志来记录所有的数据库更改(包括直接破解到数据库),但同时给我提供了从Web应用程序进行的那些数据库更改的用户登录信息.
将会感谢在这方面的任何意见.
非常感谢
xeshu
解决方法
通过直接通过SQL管理工作室或其他方式对数据库执行SQL查询,将有可能对数据库进行合法更改.我建议假设数据中的所有数据都通过应用程序输入,并在BL层进行审核.然后,您可以简单地将数据库的访问限制为受信任的用户.最终,必须有一个或多个用户有权限更改数据库模式,如果这些用户想绕过审计,他们可以简单地禁用触发器或伪造审计跟踪.如果有针对DB运行直接SQL查询的合法原因,例如从其他系统导入的频繁数据等,那么您可以将此活动限制在受信任的用户身上,并确保其导入脚本正确填充审核表.任何在数据库管理员或者受信任用户的任何工作量上都应该被内置到应用程序中的任何东西.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。