2012-11-30 50 views
1

我的客户已使用Microsoft Access 2010很长一段时间,他们收到了一些安全审核要求。他们正在使用连接到Microsoft SQL Server 2012 Express的链接表方法。安全审计(CRUD) - Microsoft Access

要求指出,必须记录针对数据的所有操作。 (INSERT,UPDATE,DELETE和SELECT语句)

对于INSERT,UPDATE,DELETE语句,我可以创建一个触发器来记录更改。

问题出在SELECT语句的审计上。如果数据是只读的,我可以使用一个记录查询的存储过程。但是执行Stored Proc会使Recordset无法更新。

有没有人有想法如何接近这一挑战?

我打开了很多的策略...(连接访问通过Web服务,什么SQL ...)

需要注意的是我的客户没有$ 30K把钱花在这一点很重要SQL Sever的企业版,因为它们是少于10名员工的小企业。

+0

是/否......我需要有非常好的参数来切换到不同的RDBMS。有一点可以肯定的是,我被锁定在Microsoft Access中......在我加入之前,他们花费了许多小时的开发时间。 –

+0

选择命令的跟踪看起来不甚理想。绑定到表的访问表单允许使用SQL分析器 - 即使是快速版。现在的问题是您加载了500条记录,然后用户点击ctrl-f查找一行。这样的ctrl-f命令不会生成或导致任何SQL被发送到服务器。没什么不同,然后下载一个网页,用户点击ctrl-f。跟踪SELECT非常少地告诉你用户实际看到的内容,除非所有表单在打开时通过“where”子句限制为一条记录。如果所有表单都加载到一条记录,则可以记录此类选择语句。 –

回答

1

SELECT语句是database-level audit action groups in SQL Server的一部分。 (在该页面中搜索“数据库级审计操作”。)但是,该级别的审计需要SQL Server Enterprise版本。

从理论上讲,无论数据是否只读,您都可以限制所有访问只使用存储过程。编写存储过程,首先将审计信息写入日志,然后执行任何其他需要完成的操作 - SELECT,INSERT等。

实际上,您的可能无法做到这一点。它取决于打到数据库的应用程序。限制所有访问只使用存储过程可能会破坏期望其他事情的应用程序。 (如果您切换到存储过程,Ruby on Rails应用程序如何响应?)

使您的数据库无法使用的防弹审计系统不太好;只需关闭数据库服务器就更简单,更便宜。

+0

主要问题是我正在使用Microsoft Access。如果我正在开发.NET Web App,那么我会信任Web应用程序并使其负责创建审计记录。 –

+0

Microsoft Access不应该是一个问题。审计和权限应位于后端dbms(SQL Server)中,而不是应用程序代码中。 DBA(通常是其他人)通常可以围绕应用程序代码进行操作。 –

+0

我同意你的看法......我怀疑我可以在Access中实现这样的审计控制......据我所知,一个链接表到SP(这将创建审计跟踪)使Access表在Access中只读。 我相信我唯一的选择是创建各种C/R/U/D存储过程并通过VBA调用它们。我的意思是.NET Web应用程序的意思是:因为我完全信任Web应用程序,所以我可以依靠它调用SP来获取数据并调用常规INS/UPD/DEL,这会触发记录改变。 (或者只是让Web应用程序记录审计线索,因为我可以完全信任该应用程序)? –

0

您可以升级到支持SQL Server分析器的SQL Server版本。 另一种选择是让其他工具像SQL审计一样进行审计。

0

您可以打开JET showplan。这将记录Access使用的所有查询。

http://www.techrepublic.com/article/use-microsoft-jets-showplan-to-write-more-efficient-queries/?siu-container

正如我在评论中指出你真的除非每个表单使用限制数据的查看在形式向一个记录where子句开愚弄审计要求。如果你不这样做,那么一个链接表打开的表单可能有1000条记录,并且用户敲击ctrl-f来查找并跳转到一条记录意味着SELECT语句告诉你ZERO关于用户的实际内容看着。因此,尽管您可以启用展示计划,但除非对应用程序设计进行了更改以将表单限制为一条记录,否则审计概念不会告诉您有关用户实际查看的内容。公平地说,99%的申请实际上是通过where子句打开并限制主要编辑表单到一条记录。

因此,虽然您可以根据上述技术对所有SELECT命令进行日志记录,但它并不真正处于这种日志的精神之中,因为这样的日志不会用于确定用户查看的实际记录。