Sql-Server

我們如何找到使用專用管理員連接的使用者

  • April 23, 2018

有沒有辦法找到誰使用了專用管理員連接?

不是活動連接,而是前一個已經關閉的連接?

SQL Server 不會在任何地方維護這些資訊。如果你想抓到濫用 DAC 的人,要麼從顯然不應該擁有它的人手中奪走系統管理員,要麼至少設置某種輪詢機制來抓捕他們。你可以有一個這樣的表:

CREATE TABLE dbo.DBA_DacAccess
(
 ConnectTime      datetime,
 FirstObservance  datetime2 NOT NULL DEFAULT SYSUTCDATETIME(),
 LoginName        sysname,
 HostName         sysname,
 AppName          sysname,
 Interface        nvarchar(32),
 ClientNetAddress nvarchar(48)
);

然後確定一些合理的時間間隔來收集有關 DAC 連接的資訊(只要存在),然後以該頻率執行以下命令(可能使用 SQL Server 代理作業):

INSERT dbo.DBA_DacAccess
(
 ConnectTime, 
 LoginName, 
 HostName, 
 AppName, 
 Interface, 
 ClientNetAddress
)
SELECT 
 c.connect_time, 
 s.login_name, 
 s.[host_name], 
 s.[program_name], 
 s.client_interface_name, 
 c.client_net_address
FROM sys.dm_exec_connections AS c 
INNER JOIN sys.dm_exec_sessions AS s
ON c.session_id = s.session_id
WHERE c.endpoint_id = 1
AND NOT EXISTS 
(
 SELECT 1 FROM dbo.DBA_DacAccess 
 WHERE connect_time = c.connect_time
);

這將繼續工作,但如果他們快速進出,您必須很幸運(或經常輪詢)才能抓住他們,因此您可能需要微調該時間表。此外,如果您想知道為什麼這不是 a LOGON TRIGGER,有兩個原因:(1)DAC 通過設計和必要性繞過這些,以及(2)這些 DMV 中的行/數據在它們逃脫觸發器之前不會存在反正。

對於過去的事件,如果幸運的話,嘗試從 SSMS 訪問 DAC 的人將被嘗試再次連接的後台連接所困擾,因為失敗的嘗試將被寫入錯誤日誌,並且IP 地址附加到消息的末尾(但不包括任何其他資訊)。如果有人使用遠端桌面到伺服器,或者 SSMS 以外的應用程序不嘗試使用相同的憑據建立額外的連接,這將無濟於事ADMIN:,但如果他們遠端使用 SSMS 應該很有用:

2018 年 4 月 23 日 08:11:18

登錄

未知

無法連接,因為已存在最大數量的“1”專用管理員連接。在建立新連接之前,必須通過註銷或結束程序來斷開現有的專用管理員連接。

$$ CLIENT: 192.168.0.99 $$

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