Con respecto a las implicaciones de rendimiento, no conozco ninguna para este o cualquier otro permiso.
Respecto a:
¿Qué pueden hacer que tal vez no se les debería permitir hacer?
En pocas palabras, pueden ver cosas que tal vez no deberían estar viendo. Y no piense en esto en términos de solo SQL Server. Este permiso particular también rige los DMV como sys.dm_os_sys_info y muchos otros que proporcionan información sobre la máquina host (hardware, servicios, etc.). No siempre sabes qué información se puede usar en tu contra. E, incluso si está de acuerdo con que alguien vea todo lo permitido por este permiso ahora, a veces se agregan DMV en Service Packs / Actualizaciones acumulativas, por lo que tal vez se exponga una nueva información que no conoce.
No puedo encontrar ninguna guía sobre cómo evaluar si DEBERÍA otorgarse o no.
Como ya mencionó que debe otorgar a las personas los permisos mínimos necesarios, lo que realmente se reduce a esto es: ¿alguien necesita este permiso para el uso ad hoc ? Es decir, ¿alguien necesita la flexibilidad de formular sus propias consultas? ¿Funcionaría la creación de uno o más procedimientos almacenados y / o TVF de múltiples declaraciones? Si es así, no necesita otorgar permisos a ningún usuario (que luego es libre de cualquier cosa permitida por ese permiso), y en su lugar otorga los permisos al código (que solo hace lo que está codificado). La firma del módulo es cómo lograr esto. El concepto general es:
- Cree los procedimientos almacenados y / o los TVF de varias instrucciones para realizar las acciones deseadas.
- Otorgue
EXECUTE
en estos módulos a cualquier usuario y / o roles que necesite realizar estas acciones
- Crear un certificado
- Firme los módulos con ese certificado (usando
ADD SIGNATURE
)
- Copie el certificado a la
[master]
base de datos (es decir, cree un certificado [master]
utilizando la clave pública del certificado utilizado para firmar los módulos).
- Cree un inicio de sesión desde el certificado copiado en
[master]
- Otorgue los permisos de nivel de instancia necesarios para ese inicio de sesión basado en certificado (que puede incluir agregarlo a roles de nivel de instancia).
Para algunos ejemplos, consulte:
sys.dm_db_missing_index_details
) y quieran saber exactamente cuáles son los riesgos de hacerlo.