Eu tenho um grupo de 5 desenvolvedores que precisam visualizar os planos de consultas que eles escreveram para um banco de dados e apenas esse banco de dados. Recuso-me a torná-los membros do administrador do sistema. Não quero que eles possam executar um rastreamento, nunca, neste servidor, nem quero que eles possam executar dmv's.
Esses 5 desenvolvedores são membros de um grupo do Windows. Eu os tornei membros do db_owner.
Isto é o que eu encontrei:
- Uma entidade de servidor com DENY para permissão de servidor ALTER TRACE encontrará o Erro 262 ao tentar visualizar a saída SHOWPLAN
- Isso acontece mesmo se o principal do banco de dados tiver uma permissão de banco de dados GRANT for SHOWPLAN
- Isso acontece porque a permissão SHOWPLAN está implícita na permissão ALTER TRACE
- Isso não acontece se o principal do banco de dados for o proprietário do banco de dados
- Uma entidade de servidor com GRANT para permissão de servidor ALTER TRACE poderá obter a saída SHOWPLAN sem precisar conceder explicitamente SHOWPLAN para bancos de dados individuais
Somente sysadmin e se você estiver mapeado para o nome de usuário dbo dentro do banco de dados, ele não executa a verificação.
Existe uma maneira de dar a esses desenvolvedores a capacidade de visualizar planos sem a função de administrador de sistema ou conceder alteração de rastreamento ou conceder estado de servidor de exibição?
DENY supera GRANT, então sim, você não pode permitir que as pessoas visualizem os planos se você negou explicitamente a capacidade de alterar o rastreamento. Mas só porque você não negou um direito não significa que ele foi concedido.
Este exemplo mostra que os usuários do banco de dados podem executar consultas e coletar os planos de execução em um banco de dados ao qual foram concedidos
SHOWPLAN
(e sem serem adicionados àdb_owner
função), desde que o login no nível do servidor não tenha negado explicitamente a capacidade deALTER TRACE
.Ele também mostra que, a menos que você conceda explicitamente quaisquer permissões relacionadas a rastreamento, eles não poderão ler os dados de rastreamento ou mesmo saber se há rastreamentos em execução, a menos que tenham herdado esses direitos de alguma outra forma ( Grupo do Windows, função do servidor, etc). Portanto, você não precisa negar
ALTER TRACE
explicitamente para proteger os dados de rastreamento desses usuários - apenas esteja ciente de que é possível que eles possam herdá-los sem uma concessão explícita.