Sql-Server
我們如何找到使用專用管理員連接的使用者
有沒有辦法找到誰使用了專用管理員連接?
不是活動連接,而是前一個已經關閉的連接?
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 $$