我已经阅读了有关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
有关如何解决此问题的任何想法? 感谢
答案 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]);
如果您的用户不是公共成员,则需要单独添加这些用户(或角色);或者再次将它们添加到公共角色。