SQL Server审核

时间:2018-05-23 08:00:43

标签: sql-server

我试图为我们的数据库设置符合GDPR标准的审核系统,以记录某些表中的读取或DML操作。

我已经阅读了有关SQL审核的MS文档,并且实际上没有发现任何有关我的问题的信息,当查询或数据请求来自应用程序用户时会出现这些问题。

如果我在dbo.DevContent1上运行select(即使使用SA或使用我自己的登录),也会记录, 但如果在应用程序代码中运行相同的查询,则SQL审核日志中不会显示任何新内容

以下是我目前的审核规范配置:

USE [MY_DEV_DB]
GO

CREATE DATABASE AUDIT SPECIFICATION [GDPR_DEV_Audits]
FOR SERVER AUDIT [GDPR_PDATA_Audit]
ADD (DELETE ON OBJECT::[dbo].[DevContent1] BY [dbo]),
ADD (INSERT ON OBJECT::[dbo].[DevContent1] BY [dbo]),
ADD (SELECT ON OBJECT::[dbo].[DevContent1] BY [dbo]),
ADD (UPDATE ON OBJECT::[dbo].[DevContent1] BY [dbo]),
ADD (DELETE ON OBJECT::[dbo].[DevCustomer1] BY [dbo]),
ADD (INSERT ON OBJECT::[dbo].[DevCustomer1] BY [dbo]),
ADD (SELECT ON OBJECT::[dbo].[DevCustomer1] BY [dbo]),
ADD (UPDATE ON OBJECT::[dbo].[DevCustomer1] BY [dbo]),
ADD (DELETE ON OBJECT::[dbo].[DevQuotes] BY [dbo]),
ADD (INSERT ON OBJECT::[dbo].[DevQuotes] BY [dbo]),
ADD (SELECT ON OBJECT::[dbo].[DevQuotes] BY [dbo]),
ADD (UPDATE ON OBJECT::[dbo].[DevQuotes] BY [dbo]),
ADD (DELETE ON OBJECT::[dbo].[DevUsers] BY [dbo]),
ADD (INSERT ON OBJECT::[dbo].[DevUsers] BY [dbo]),
ADD (SELECT ON OBJECT::[dbo].[DevUsers] BY [dbo]),
ADD (UPDATE ON OBJECT::[dbo].[DevUsers] BY [dbo])
WITH (STATE = ON)
GO

有关如何解决此问题的任何想法? 感谢

1 个答案:

答案 0 :(得分:2)

审核对您的应用程序用户不起作用的原因是,审核是专门为用户[dbo]设置的:

CREATE DATABASE AUDIT SPECIFICATION [GDPR_DEV_Audits]
FOR SERVER AUDIT [GDPR_PDATA_Audit]
ADD (DELETE ON OBJECT::[dbo].[DevContent1] BY [dbo]);

我怀疑您的应用程序登录映射到用户[dbo];因为[dbo]是数据库所有者(因此具有非常高的权限)。

我相信如果您想审核数据库上的所有用户,您需要使用BY [public],因为每个用户都应成为此角色的成员。因此:

CREATE DATABASE AUDIT SPECIFICATION [GDPR_DEV_Audits]
FOR SERVER AUDIT [GDPR_PDATA_Audit]
ADD (DELETE ON OBJECT::[dbo].[DevContent1] BY [public]);

如果您的用户不是公共成员,则需要单独添加这些用户(或角色);或者再次将它们添加到公共角色。