Em relação às implicações de desempenho, não conheço nenhuma para esta ou qualquer outra permissão.
A respeito de:
O que eles podem fazer que talvez não devam fazer
Simplificando, eles podem ver coisas que talvez não devessem estar vendo. E não pense nisso apenas em termos de SQL Server. Essa permissão específica também governa as DMVs, como sys.dm_os_sys_info e várias outras que fornecem informações sobre a máquina host (hardware, serviços, etc.). Você nem sempre sabe quais informações podem ser usadas contra você. E, mesmo se você concorda com alguém que vê tudo o que é permitido por essa permissão agora, às vezes as DMVs são adicionadas nos Service Packs / Atualizações Cumulativas e, portanto, talvez seja exibida uma nova informação que você não conhece.
Não consigo encontrar nenhuma orientação sobre como avaliar se deve ser concedido ou não.
Como você já mencionou dar às pessoas as permissões mínimas necessárias, o que realmente se resume é: alguém precisa dessa permissão para uso ad hoc ? Ou seja, alguém precisa da flexibilidade de apresentar suas próprias consultas? Criar um ou mais procedimentos armazenados e / ou TVFs com várias instruções funcionaria? Nesse caso, você não precisa conceder permissões a nenhum usuário (que é livre para qualquer coisa permitida por essa permissão); em vez disso, você concede as permissões ao código (que faz apenas o que está codificado para fazer). A assinatura do módulo é como você consegue isso. O conceito geral é:
- Crie o (s) procedimento (s) armazenado (s) e / ou TVF (s) de múltiplas instruções para executar as ações desejadas.
- Conceda
EXECUTEesses módulos a qualquer usuário e / ou função necessária para executar essas ações
- Crie um certificado
- Assine o (s) módulo (s) usando esse certificado (usando
ADD SIGNATURE)
- Copie o certificado no
[master]banco de dados (ou seja, crie um certificado [master]usando a chave pública do certificado usado para assinar o (s) módulo (s).
- Crie um logon do certificado copiado para
[master]
- Conceda as permissões no nível da instância necessárias para esse logon baseado em certificado (que pode incluir a adição a funções no nível da instância).
Para alguns exemplos, consulte:
sys.dm_db_missing_index_details) e eles querem saber quais são exatamente os riscos de fazê-lo.