Artikel saya akan membantu jika Anda mengaturnya terlebih dahulu, tetapi tidak ketika peristiwa itu terjadi di masa lalu dan Anda tidak memiliki mekanisme audit apa pun.
Namun, masih ada harapan. Katakanlah saya melakukan ini:
CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Informasi ini dalam penelusuran default di bawah EventClass 104 (Audit Addlogin Event). Namun, jika saya mengubah kata sandi menggunakan salah satu metode ini:
ALTER LOGIN flooberella WITH PASSWORD = N'y';
EXEC sp_password N'y', N'z', N'flooberella';
Peristiwa ini tidak ditangkap oleh jejak default, karena alasan keamanan yang jelas - seharusnya tidak mungkin bagi siapa pun yang memiliki akses ke jejak default untuk mengetahui apa kata sandi orang lain, atau apakah mereka ingin membuatnya mudah bahkan untuk mengetahui bahwa kata sandi telah diubah (polling frekuensi peristiwa ini, misalnya, dapat mengungkapkan properti tertentu dari strategi keamanan Anda).
Jadi apa lagi yang bisa kamu lakukan? Meskipun ini bergantung pada informasi yang masih dalam log, dan itu juga bergantung pada menggunakan perintah DBCC tidak berdokumen terhadap database sistem (Anda mungkin ingin membuat cadangan master dan mengembalikannya di tempat lain), Anda bisa mendapatkan beberapa informasi dari log transaksi, misalnya:
DBCC LOG(master, 1);
Ini akan menghasilkan, untuk dua perintah di atas, baris dengan informasi (parsial) berikut:
Current LSN Description
====================== ======================================================================
000000f2:000001b8:0002 ALTER LOGIN;0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000
000000f2:000001b8:0004 Alter login change password;0x01050000000000 ... same sid as above ...
Kelihatannya tidak banyak, tapi sekarang ambil bagian deskripsi sebanyak 0x, lalu lakukan:
SELECT name FROM sys.server_principals
WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;
Pistol merokok! Ini adalah orang yang bertanggung jawab atas peristiwa itu.
Tentu saja, jika mereka menggunakan ALTER LOGINsintaks untuk semua operasi (yang seharusnya mereka gunakan alih-alih sp_password), Anda tidak dapat membedakan antara seseorang yang mengubah database default dan seseorang yang mengubah kata sandi. Anda juga tidak bisa mengatakan (setidaknya yang saya bisa melihat) yang masuk ini terpengaruh, hanya bahwa orang ini berubah menjadi login. Jon tampaknya berpikir bahwa informasi ini ada di log juga, tetapi saya gagal menemukannya (tidak seperti informasi waktu, yang entah bagaimana saya gulir ke masa lalu).
Mungkin ada jawaban berbeda untuk pengguna yang terkandung dalam SQL Server 2012 - meskipun saya menduga perubahan kata sandi masih dikaburkan dengan cara yang sama. Akan meninggalkan itu untuk pertanyaan terpisah.