Mon article vous aidera si vous le configurez à l'avance, mais pas lorsque l'événement s'est produit dans le passé et qu'aucun mécanisme d'audit n'a été configuré.
Il y a cependant encore de l'espoir. Disons que je l'ai fait:
CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Ces informations se trouvent dans la trace par défaut sous EventClass 104 (Audit Addlogin Event). Cependant, si je change le mot de passe en utilisant l'une de ces méthodes:
ALTER LOGIN flooberella WITH PASSWORD = N'y';
EXEC sp_password N'y', N'z', N'flooberella';
Ces événements ne sont pas capturés par la trace par défaut, pour des raisons de sécurité évidentes - il ne devrait pas être possible à quiconque ayant accès à la trace par défaut de déterminer le mot de passe de quelqu'un d'autre, ni de faciliter la découverte de un mot de passe a été modifié (interroger la fréquence de ces événements, par exemple, peut révéler certaines propriétés de votre stratégie de sécurité).
Alors, que pouvez-vous faire d'autre? Bien que cela repose sur les informations toujours présentes dans le journal et sur l'utilisation d'une commande DBCC non documentée sur une base de données système (vous souhaiterez peut-être sauvegarder le maître et le restaurer ailleurs), vous pouvez obtenir des informations du journal des transactions, par exemple:
DBCC LOG(master, 1);
Cela produira, pour les deux commandes ci-dessus, des lignes avec les informations (partielles) suivantes:
Current LSN Description
====================== ======================================================================
000000f2:000001b8:0002 ALTER LOGIN;0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000
000000f2:000001b8:0004 Alter login change password;0x01050000000000 ... same sid as above ...
Cela ne semble pas beaucoup, mais prenez maintenant cette partie 0x de la description, puis faites:
SELECT name FROM sys.server_principals
WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;
Pistolet fumant! Il s'agit de la personne responsable de cet événement.
Bien sûr, s'ils utilisent la ALTER LOGIN
syntaxe pour toutes les opérations (qu'ils devraient utiliser à la place sp_password
), vous ne pouvez pas faire la distinction entre quelqu'un qui change la base de données par défaut et quelqu'un qui change le mot de passe. Vous pouvez également ne pas dire (au moins que je peux voir) qui logger ce touché, seulement que cette personne a changé une connexion. Jon semble penser que ces informations sont également dans le journal, mais je n'ai pas réussi à les trouver (contrairement aux informations de temps, que j'ai en quelque sorte fait défiler à droite).
Il peut y avoir différentes réponses pour les utilisateurs confinés dans SQL Server 2012 - bien que je soupçonne que les modifications de mot de passe sont toujours obscurcies de manière similaire. Laissera cela pour une question distincte.