¿Existe algún riesgo al otorgar a los usuarios el permiso SHOWPLAN de SQL Server?

23

Estoy haciendo algunos ajustes de rendimiento en una gran base de datos de SQL Server 2008, y el grupo de TI no está dispuesto a dar permiso a SHOWPLAN. En el pasado, "Mostrar plan de ejecución" ha sido la forma más efectiva de comprender el desempeño de consultas y procedimientos individuales.

¿Qué riesgos son inherentes a la concesión de este permiso? ¿Existe una justificación legítima para esta restricción en una copia de desarrollo de la base de datos?

Nota: Este grupo de TI de SQL tiene más de 200 bases de datos en una sola instancia de SQL Server. Gracias.

Respuesta : Considero que la falta de respuesta significa que no existen riesgos de seguridad significativos, aparte del que se indica a continuación. Básicamente, restringir esto en una base de datos de desarrollo es contraproducente.

Actualizaré esto si a alguien se le ocurre una mejor respuesta. ¡Gracias por tus comentarios!

RaoulRubin
fuente

Respuestas:

19

Eche un vistazo a Showplan Security en Books Online, que dice:

Los usuarios que tienen SHOWPLAN, ALTER TRACEo VIEW SERVER STATEpermiso pueden ver las consultas que se capturan en la salida del plan de presentación. Estas consultas pueden contener información confidencial, como contraseñas. Por lo tanto, le recomendamos que solo otorgue estos permisos a los usuarios autorizados para ver información confidencial, como los miembros de la función fija de base de datos db_owner o los miembros de la función fija de servidor sysadmin . También le recomendamos que solo guarde los archivos de Showplan o los archivos de rastreo que contienen eventos relacionados con Showplan en una ubicación que utiliza el sistema de archivos NTFS, y que restrinja el acceso a los usuarios autorizados para ver información confidencial.

Por ejemplo, considere la siguiente consulta:

SELECT COUNT(*)  FROM table_1  WHERE column_1 < 10 

Si un usuario malintencionado produce una salida de Showplan para un conjunto de consultas como este ejemplo, y reemplaza el valor "10" en el predicado con diferentes constantes cada vez, el usuario podría inferir una distribución de datos aproximada de los valores de columna para la columna_1 en la tabla_1 leyendo la fila estimada cuenta.

Este riesgo parece insignificante, especialmente dado que este es un servidor de desarrollo, donde todas las consultas serían de desarrolladores y personas de TI, no de usuarios.

Paul White dice GoFundMonica
fuente