如何定义数据库审计规范“由任何用户”

Posted

技术标签:

【中文标题】如何定义数据库审计规范“由任何用户”【英文标题】:How to define a database audit specification 'BY Any User' 【发布时间】:2018-06-13 02:37:24 【问题描述】:

我想跟踪多个表的插入更新和删除。我目前拥有的是

ALTER DATABASE AUDIT SPECIFICATION [mySpec]

ADD (INSERT ON OBJECT::[dbo].[SomeTable] BY [SomeUser]),
ADD (UPDATE ON OBJECT::[dbo].[SomeTable] BY [SomeUser]),
ADD (DELETE ON OBJECT::[dbo].[SomeTable] BY [SomeUser]),

... More Tables ..

WITH (STATE = ON);

在我的脚本中是否有一组等同于“任何用户”的主体,而不是“SomeUser”?

【问题讨论】:

【参考方案1】:

您可以使用public

例如:

ALTER DATABASE AUDIT SPECIFICATION [mySpec]
ADD (INSERT ON OBJECT::[dbo].[SomeTable] BY [public])
...

或您的所有用户所属的任何其他组。

您还可以对要审核的事件进行分组,

ALTER DATABASE AUDIT SPECIFICATION [mySpec]
ADD (INSERT, UPDATE, DELETE ON OBJECT::[dbo].[SomeTable] BY [public])
...

如果要审核所有表,可以使用数据库对象

ALTER DATABASE AUDIT SPECIFICATION [mySpec]
ADD (INSERT, UPDATE, DELETE ON DATABASE::databasename BY [public])
...

【讨论】:

所以没有用户不是 [public] 的成员? 因为我不是 100% 从文档中确定 @HughJones "每个 SQL Server 登录都属于公共服务器角色" docs.microsoft.com/en-us/sql/relational-databases/security/… 谢谢。我接受你的回答,但我非常失望地发现审计没有记录语句的参数值 - 这使它完全没用。 确实如此,不是吗。也许 CDC 更适合您的需求docs.microsoft.com/en-us/sql/relational-databases/track-changes/…

以上是关于如何定义数据库审计规范“由任何用户”的主要内容,如果未能解决你的问题,请参考以下文章

37-SQLServer的审核/审计功能介绍

大咖分享 | 如何构建 Alluxio 审计日志分析系统

堡垒机与数据库审计区别,国内堡垒机品牌都有哪些

代码审计开源工具推荐

逊克农场有限公司规范项目管理 开展项目竣工决算审计

如何使用IDEA数据审计软件