Bài viết của tôi sẽ giúp ích nếu bạn thiết lập trước, nhưng không phải khi sự kiện xảy ra trong quá khứ và bạn không có bất kỳ loại cơ chế kiểm toán nào được thiết lập.
Vẫn còn hy vọng. Hãy nói rằng tôi đã làm điều này:
CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Thông tin này nằm trong theo dõi mặc định trong EventClass 104 (Sự kiện Addlogin Audit). Tuy nhiên, nếu tôi thay đổi mật khẩu bằng một trong hai phương pháp sau:
ALTER LOGIN flooberella WITH PASSWORD = N'y';
EXEC sp_password N'y', N'z', N'flooberella';
Những sự kiện này không bị bắt bởi dấu vết mặc định, vì lý do bảo mật rõ ràng - không ai có thể truy cập vào dấu vết mặc định để tìm ra mật khẩu của người khác, và họ cũng không muốn dễ dàng phát hiện ra rằng một mật khẩu đã được thay đổi (ví dụ, việc thăm dò tần suất của các sự kiện này có thể tiết lộ một số thuộc tính nhất định của chiến lược bảo mật của bạn).
Vậy bạn có thể làm gì khác? Mặc dù điều này phụ thuộc vào thông tin vẫn còn trong nhật ký và nó cũng dựa vào việc sử dụng lệnh DBCC không có giấy tờ đối với cơ sở dữ liệu hệ thống (bạn có thể muốn sao lưu chính và khôi phục nó ở nơi khác), bạn có thể lấy một số thông tin từ nhật ký giao dịch, ví dụ:
DBCC LOG(master, 1);
Điều này sẽ mang lại, cho hai lệnh trên, các hàng có thông tin (một phần) sau:
Current LSN Description
====================== ======================================================================
000000f2:000001b8:0002 ALTER LOGIN;0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000
000000f2:000001b8:0004 Alter login change password;0x01050000000000 ... same sid as above ...
Có vẻ như không nhiều, nhưng bây giờ hãy lấy phần 0x của mô tả và sau đó thực hiện:
SELECT name FROM sys.server_principals
WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;
Súng hút thuốc! Đây là người chịu trách nhiệm cho sự kiện đó.
Tất nhiên, nếu họ sử dụng ALTER LOGIN
cú pháp cho tất cả các hoạt động (mà họ nên sử dụng thay vì sp_password
), bạn không thể phân biệt giữa ai đó thay đổi cơ sở dữ liệu mặc định và ai đó thay đổi mật khẩu. Bạn cũng không thể nói (ít nhất mà tôi có thể nhìn thấy) mà đăng nhập này bị ảnh hưởng, chỉ rằng người này đã thay đổi một đăng nhập. Jon dường như nghĩ rằng thông tin này cũng có trong nhật ký, nhưng tôi đã không tìm thấy nó (không giống như thông tin về thời gian, bằng cách nào đó tôi đã cuộn qua quá khứ).
Có thể có các câu trả lời khác nhau cho người dùng có trong SQL Server 2012 - mặc dù tôi nghi ngờ các thay đổi mật khẩu vẫn bị che giấu theo những cách tương tự. Sẽ để lại cho một câu hỏi riêng biệt.