Sql-Server

跟踪撥款違規

  • April 4, 2019

我們正在將我們的一個應用程序使用者登錄從dbowner一個更細化的權限方案更改為最終。

在 SQL Server 2016 中是否有一種方法可以跟踪權限違規?也就是說,這個新使用者不能從表 dbo 中選擇。TableName以便我可以查看它並確定它是否合適。

我知道我可以從事物的程序方面擷取錯誤並記錄它們,但如果數據庫可以為我記錄它,我寧願不依賴它。

您可以使用Extended Events ™ 來完成此操作。該error_reported事件允許您在每次發生特定錯誤時將一行記錄到文件中。您可以向記錄的內容添加其他資訊,例如usernameclient_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

假設我最麻煩的使用者之一使用他的登錄名sean_gallardy登錄。我不信任這個使用者,所以我給了他非常有限的權限。如果他嘗試查看查詢計劃,他會在 SSMS 中收到以下錯誤消息:

消息 262,第 14 級,狀態 4,第 1 行

數據庫 ‘master’ 中的 SHOWPLAN 權限被拒絕。

以下是作為響應記錄到擴展事件文件中的內容:

在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/233891