Jim*_*Jim 3 sql-server audit sql-server-2016
我们正在将我们的应用程序用户登录之一从dbowner
更细化的权限方案更改为最终。
有没有办法从 SQL Server 2016 中跟踪权限违规?也就是说,这个新用户不能从表 dbo 中进行 SELECT。TableName以便我可以查看它并确定它是否合适。
我知道我可以从程序方面捕获错误并记录它们,但是如果数据库可以为我记录这些错误,我宁愿不依赖它。
您可以使用Extended Events ™ 来完成此操作。该error_reported
事件允许您在每次发生特定错误时将一行记录到文件中。您可以向记录的内容添加其他信息,例如username
和client_hostname
。以下是一些示例 T-SQL,可帮助您开始仅过滤错误代码 262:
CREATE EVENT SESSION [error_262_to_file] ON SERVER
ADD EVENT sqlserver.error_reported(
ACTION(sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_name,sqlserver.nt_username,sqlserver.session_id,sqlserver.username)
WHERE ([error_number]=(262)))
ADD TARGET package0.event_file(SET filename=N'C:\XE\error_262_to_file.xel')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=ON)
GO
Run Code Online (Sandbox Code Playgroud)
假设我最麻烦的用户之一使用他的sean_gallardy
登录名登录。我不信任这个用户,所以我给了他非常有限的权限。如果他尝试查看查询计划,他会在 SSMS 中收到以下错误消息:
消息 262,级别 14,状态 4,第 1 行
SHOWPLAN 权限在数据库“master”中被拒绝。
以下是记录到扩展事件文件的响应:
归档时间: |
|
查看次数: |
49 次 |
最近记录: |