Estamos mudando um de nossos logins de usuário do aplicativo dbowner
para um esquema de permissão mais granular - finalmente.
Existe uma maneira de dentro do SQL Server 2016 que eu possa rastrear violações de permissão? Ou seja, esse novo usuário não pode SELECT da tabela dbo. TableName para que eu possa revisá-lo e determinar se é apropriado ou não.
Eu sei que posso interceptar erros do lado do programa e registrá-los, mas prefiro não confiar nisso se o banco de dados puder registrar isso para mim.
Você pode usar Extended Events ™ para fazer isso. O
error_reported
evento permite que você registre uma linha em um arquivo sempre que ocorrer um determinado erro. Você pode adicionar informações adicionais ao que está registrado, comousername
eclient_hostname
. Aqui está um exemplo de T-SQL para você começar que filtra apenas o código de erro 262:Suponha que um dos meus usuários mais problemáticos faça login com seu
sean_gallardy
login. Eu não confio nesse usuário, então dei a ele permissões muito limitadas. Se ele tentar visualizar um plano de consulta, ele receberá a seguinte mensagem de erro no SSMS:Aqui está o que é registrado no arquivo de evento estendido em resposta: