Mein Artikel hilft, wenn Sie ihn im Voraus einrichten, aber nicht, wenn das Ereignis in der Vergangenheit stattgefunden hat und Sie keinen Überwachungsmechanismus eingerichtet haben.
Es gibt jedoch noch Hoffnung. Nehmen wir an, ich habe das getan:
CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Diese Informationen befinden sich in der Standardablaufverfolgung unter EventClass 104 (Audit Addlogin Event). Wenn ich das Kennwort jedoch mit einer der folgenden Methoden ändere:
ALTER LOGIN flooberella WITH PASSWORD = N'y';
EXEC sp_password N'y', N'z', N'flooberella';
Diese Ereignisse werden aus offensichtlichen Sicherheitsgründen nicht von der Standardablaufverfolgung erfasst. Es sollte niemandem mit Zugriff auf die Standardablaufverfolgung möglich sein, das Kennwort einer anderen Person herauszufinden, und sie möchten es auch nicht einfach machen, dies herauszufinden Ein Kennwort wurde geändert (das Abrufen der Häufigkeit dieser Ereignisse kann beispielsweise bestimmte Eigenschaften Ihrer Sicherheitsstrategie aufdecken).
Was können Sie sonst noch tun? Dies hängt zwar von den Informationen ab, die sich noch im Protokoll befinden, und auch von der Verwendung eines undokumentierten DBCC-Befehls für eine Systemdatenbank (möglicherweise möchten Sie den Master sichern und an anderer Stelle wiederherstellen). Sie können jedoch einige Informationen aus dem Transaktionsprotokoll abrufen. z.B:
DBCC LOG(master, 1);
Dies ergibt für die obigen zwei Befehle Zeilen mit den folgenden (Teil-) Informationen:
Current LSN Description
====================== ======================================================================
000000f2:000001b8:0002 ALTER LOGIN;0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000
000000f2:000001b8:0004 Alter login change password;0x01050000000000 ... same sid as above ...
Scheint nicht viel zu sein, aber nehmen Sie jetzt diesen 0x-Teil der Beschreibung und tun Sie dann:
SELECT name FROM sys.server_principals
WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;
Rauchpistole! Dies ist die Person, die für dieses Ereignis verantwortlich ist.
Wenn sie die ALTER LOGIN
Syntax für alle Vorgänge verwenden (die sie anstelle von verwenden sollten sp_password
), können Sie natürlich nicht zwischen jemandem unterscheiden, der die Standarddatenbank ändert, und jemandem, der das Kennwort ändert. Sie können auch nicht sagen (zumindest, dass ich sehen kann), welche Anmeldung davon betroffen ist, nur dass diese Person eine Anmeldung geändert hat . Jon scheint zu glauben, dass diese Informationen auch im Protokoll enthalten sind, aber ich habe sie nicht gefunden (im Gegensatz zu den Zeitinformationen, an denen ich irgendwie vorbei gescrollt habe).
In SQL Server 2012 gibt es möglicherweise unterschiedliche Antworten für enthaltene Benutzer. Ich vermute jedoch, dass Kennwortänderungen auf ähnliche Weise immer noch verschleiert werden. Lassen Sie das für eine separate Frage.