Meu artigo ajudará se você o configurar com antecedência, mas não quando o evento aconteceu no passado e você não tiver nenhum tipo de mecanismo de auditoria configurado.
Ainda há esperança, no entanto. Digamos que eu fiz isso:
CREATE LOGIN flooberella WITH PASSWORD = N'x', CHECK_POLICY = OFF;
Essas informações estão no rastreamento padrão em EventClass 104 (Audit Addlogin Event). No entanto, se eu alterar a senha usando um destes métodos:
ALTER LOGIN flooberella WITH PASSWORD = N'y';
EXEC sp_password N'y', N'z', N'flooberella';
Esses eventos não são capturados pelo rastreamento padrão, por razões óbvias de segurança - não deve ser possível para qualquer pessoa com acesso ao rastreamento padrão descobrir qual é a senha de outra pessoa, nem deseja facilitar a descoberta de que uma senha foi alterada (pesquisar a frequência desses eventos, por exemplo, pode revelar certas propriedades da sua estratégia de segurança).
Então o que mais você faz? Enquanto isso depende das informações ainda estarem no log e também do uso de um comando DBCC não documentado em um banco de dados do sistema (você pode fazer backup do mestre e restaurá-lo em outro lugar), é possível obter algumas informações do log de transações, por exemplo:
DBCC LOG(master, 1);
Isso produzirá, para os dois comandos acima, linhas com as seguintes informações (parciais):
Current LSN Description
====================== ======================================================================
000000f2:000001b8:0002 ALTER LOGIN;0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000
000000f2:000001b8:0004 Alter login change password;0x01050000000000 ... same sid as above ...
Não parece muito, mas agora pegue essa parte 0x da descrição e faça:
SELECT name FROM sys.server_principals
WHERE sid = 0x01050000000000051500000093a3bcd7a9f8fb1417ab13bce8030000;
Arma de fumar! Essa é a pessoa responsável por esse evento.
Obviamente, se eles usarem ALTER LOGIN
sintaxe para todas as operações (que deveriam usar em vez de sp_password
), não será possível distinguir entre alguém alterando o banco de dados padrão e alguém alterando a senha. Você também não pode dizer (pelo menos que eu posso ver) qual login afetou, apenas que essa pessoa alterou um login. Jon parece achar que essa informação também está no log, mas não consegui encontrá-la (ao contrário da informação de tempo, que de alguma forma eu passei direto).
Pode haver respostas diferentes para usuários contidos no SQL Server 2012 - embora eu suspeite que as alterações de senha ainda sejam ofuscadas de maneiras semelhantes. Deixará isso para uma pergunta separada.