Eu tenho um aplicativo da web que recupera dados de um banco de dados. Especifiquei no arquivo web.config do aplicativo da web para ter o nome de usuário sa
e a senha password
.
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=sa;Password=password;
No entanto, noto que o SQL Profiler exibirá a coluna LoginName como sa
e não o usuário real se um usuário real fizer logon no aplicativo da web.
Exemplo: suponha que um usuário WATSON\User1 acesse o aplicativo da web. O SQL Profiler não registrará WATSON\User1
na coluna LoginName. Então não saberei quem fez alguma coisa.
Então, o que devo fazer para que o SQL Profiler registre esses usuários que acessam o aplicativo de outro domínio?
Como prática recomendada, não use sa como logon de seu aplicativo para o banco de dados. Crie outro usuário no banco de dados e use esse usuário para interagir com o banco de dados. Esse usuário deve ter permissões restritas para poder acessar apenas os objetos de banco de dados de que precisa. Também espero que a senha que você usa não seja senha. Essas etapas tornarão seu banco de dados um pouco mais seguro contra problemas de ataque/acidente/atividade maliciosa.
O Profiler está mostrando as conexões com o banco de dados com base na conta do usuário que se conecta ao banco de dados - ou seja, a conta do usuário na string de conexão. Você pode criar contas de banco de dados para cada usuário e alterar a string de conexão para usar essa conta de usuário para se conectar. Esta pode ser uma solução viável se você não tiver muitos usuários. [Também é útil usar usuários separados em conjunto com permissões de banco de dados como uma estratégia de segurança/integridade de dados (ou seja, o usuário 'chefe' tem privilégios de leitura/gravação, o usuário 'anônimo' tem apenas acesso de leitura aos dados).]
Se você puder configurar uma relação de confiança entre domínios que permita o uso da Autenticação do Windows. O aplicativo da web precisaria ser configurado para representar o usuário que o está usando, caso contrário, a conta do serviço da web será exibida.
Outra opção se você estiver usando procedimentos armazenados é adicionar o ID do usuário como um argumento para a chamada para os procedimentos armazenados que devem aparecer no rastreamento.
Se você tiver uma camada de acesso a dados, poderá adicionar uma rotina que registre o usuário, a ação e o registro de data e hora de cada ação do banco de dados. Os carimbos de data/hora devem corresponder ao perfil se você ainda precisar criar informações de perfil.