Compartir a través de


Seguridad del plan de presentación

La información del plan de ejecución del plan de presentación se puede producir de varias maneras. Puede utilizar las opciones de la instrucción SET de Transact-SQL o las clases de eventos de SQL Server Profiler, o bien puede consultar la función de administración dinámica sys.dm_exec_query_plan. Cada método requiere un conjunto distinto de permisos, que se describen en las secciones siguientes. Para obtener más información acerca de cómo se comprueba si hay lotes de Transact-SQL en el permiso SHOWPLAN, vea Permiso SHOWPLAN y lotes Transact-SQL.

[!NOTA]

Cuando el nivel de compatibilidad de una base de datos de SQL Server se establece en 80 mediante el procedimiento almacenado sp_dbcmptlevel se sigue aplicando el permiso SHOWPLAN actual. Establecer el nivel de compatibilidad en 80 no genera el comportamiento de los permisos del plan de presentación de Microsoft SQL Server 2000.

Acerca del permiso SHOWPLAN

Para generar la salida del plan de ejecución mediante la mayoría de las opciones SET de Transact-SQL del plan de presentación, los usuarios deben tener:

  • El permiso SHOWPLAN en las bases de datos que contienen objetos a los que se hace referencia en la instrucción Transact-SQL, como por ejemplo vistas, procedimientos almacenados o funciones definidas por el usuario.

  • El permiso adecuado para ejecutar la propia instrucción Transact-SQL.

    Nota de seguridadNota de seguridad

    Los usuarios que tienen el permiso SHOWPLAN, ALTER TRACE o VIEW SERVER STATE pueden ver consultas capturadas en la salida del plan de presentación. Estas consultas pueden contener información confidencial, como contraseñas. Por consiguiente, se recomienda conceder estos permisos solo a los usuarios que tengan autorización para ver información confidencial, como los miembros de la función de base de datos fija db_owner o los miembros de la función fija de servidor sysadmin. También se recomienda guardar solo los archivos del plan de presentación o los archivos de seguimiento que contengan eventos relacionados con el plan de presentación en una ubicación que utilice el sistema de archivos NTFS, así como restringir el acceso a los usuarios que tengan autorización para ver información confidencial.

    Por ejemplo, suponga la siguiente consulta:

    SELECT COUNT(*)

    FROM table_1

    WHERE column_1 < 10

    Si un usuario malintencionado genera la salida del plan de presentación para un conjunto de consultas como en este ejemplo y reemplaza el valor "10" del predicado por distintas constantes cada vez, el usuario podría obtener una distribución aproximada de datos de los valores de la columna column_1 en table_1 leyendo los recuentos de filas estimados.

El permiso SHOWPLAN es un permiso de nivel de base de datos que:

  • Se sólo pueden conceder, denegar o revocar los siguientes usuarios:

    • Miembros de la función fija de servidor sysadmin. De forma predeterminada, todos los miembros de esta función fija de servidor tienen el permiso SHOWPLAN para todas las bases de datos del servidor.

    • Miembros de la función fija de servidor dbcreator para las bases de datos que crean y, por lo tanto, poseen. De forma predeterminada, todos los miembros de esta función fija de servidor tienen el permiso SHOWPLAN para las bases de datos que crean y, por lo tanto, poseen.

    • Miembros de la función fija de base de datos db_owners para las bases de datos que poseen. De forma predeterminada, todos los miembros de esta función fija de base de datos tienen el permiso SHOWPLAN para las bases de datos que poseen.

  • Admite el encadenamiento de propiedad. Cuando se rompe la cadena de propiedad, el permiso se vuelve a comprobar en el nodo donde se produjo la ruptura. Sin embargo, dado que el permiso SHOWPLAN es un permiso de nivel de base de datos, esta comprobación sólo tiene lugar cuando las consultas hacen referencia a objetos de dos o más bases de datos. Para obtener más información acerca del encadenamiento de propiedad, vea Cadenas de propiedad.

Para obtener información acerca de la sintaxis utilizada para conceder, denegar o revocar el permiso SHOWPLAN, vea Sintaxis para conceder, denegar y revocar el permiso SHOWPLAN.

Ejemplo

Si el Usuario1 tiene los permisos CREATE TABLE, INSERT y SELECT, y crea la tabla T (es el propietario de la tabla) en la base de datos D, inserta filas en la tabla y, a continuación, escribe una consulta SELECT en la tabla, la consulta se ejecuta correctamente. Sin embargo, el Usuario1 no puede generar un plan de presentación hasta que tenga concedido el permiso SHOWPLAN en la base de datos D.

Advertencia

En el ejemplo anterior, suponga que la base de datos D contiene la vista V para la que el Usuario1 tiene el permiso SELECT. Cuando se ha concedido a User1 el permiso SHOWPLAN para D, aunque no sea el propietario de V, puede generar un plan de presentación de una consulta formulada a V. Este plan de presentación le permite ver la definición de la vista para V, incluidas las tablas y vistas en las que se basa V. Sin embargo, si V contiene un objeto, como una tabla, que es propiedad del Usuario1 y que existe en una base de datos diferente, D2, y el Usuario1 no es el propietario de D2, se comprueba y se requiere el permiso SHOWPLAN en D2.

Permisos necesarios para utilizar las opciones SET del plan de presentación

Los permisos necesarios para utilizar las distintas opciones de la instrucción SET del plan de presentación aparecen en la tabla siguiente:

Opciones SET del plan de presentación

Permisos necesarios

SET SHOWPLAN_XML ON

SET SHOWPLAN_ALL ON

SET SHOWPLAN_TEXT ON

Para las instrucciones SELECT, INSERT, UPDATE, DELETE, EXEC stored_prodedure y EXEC user_defined_function, son necesarios los siguientes permisos para generar un plan de presentación:

  • Los permisos adecuados para ejecutar instrucciones Transact-SQL.

  • El permiso SHOWPLAN para todas las bases de datos que contienen objetos a los que hacen referencia las instrucciones Transact-SQL, como tablas, vistas, etc.

Para todas las demás instrucciones, como DDL, USE database_name, SET, DECLARE, Transact-SQL dinámica, etc. sólo se necesitan los permisos adecuados para ejecutar la instrucción Transact-SQL. Para obtener más información, vea Permiso SHOWPLAN y lotes Transact-SQL.

SET STATISTICS XML ON

SET STATISTICS PROFILE ON

  • Los permisos adecuados para ejecutar instrucciones Transact-SQL.

  • El permiso SHOWPLAN para todas las bases de datos que contienen objetos a los que hacen referencia las instrucciones Transact-SQL.

Para las instrucciones Transact-SQL que no generan conjuntos de resultados STATISTICS PROFILE o STATISTICS XML, sólo se necesitan los permisos adecuados para ejecutar las instrucciones Transact-SQL. Para las instrucciones Transact-SQL que generan conjuntos de resultados de STATISTICS PROFILE o STATISTICS XML, el permiso de ejecución de la instrucción Transact-SQL y el permiso SHOWPLAN deben ser correctos, o la ejecución de la instrucción Transact-SQL se anulará y no se generará información relativa al plan de presentación. Para obtener información acerca de qué instrucciones Transact-SQL generan información del plan de presentación, vea Instrucciones Transact-SQL que generan planes de presentación.

SET STATISTICS TIME

SET STATISTICS IO

  • Los permisos adecuados para ejecutar instrucciones Transact-SQL.

Ninguna de estas opciones de instrucciones SET comprueban ni necesitan el permiso SHOWPLAN.

¿Cuándo se comprueba el permiso SHOWPLAN?

El permiso SHOWPLAN se comprueba cuando se ejecuta un lote o una instrucción Transact-SQL y se genera información del plan de presentación. La comprobación no se realiza cuando una opción SET del plan de presentación se establece en ON.

[!NOTA]

La base de datos de contexto para un lote Transact-SQL se establece mediante una instrucción USE <database_name>. El permiso SHOWPLAN no se comprueba en las instrucciones USE <database_name> ni en la base de datos de contexto.

Para obtener más información acerca de las opciones de las instrucciones SET del plan de presentación, vea los siguientes temas:

Permisos necesarios para mostrar planes de ejecución gráficos mediante SQL Server Management Studio

Los permisos necesarios para mostrar planes de ejecución gráficos en SQL Server Management Studio aparecen en la tabla siguiente:

Opción del plan de ejecución de Management Studio

Permisos necesarios

Mostrar plan de ejecución estimado

Requiere los mismos permisos necesarios para utilizar la opción de instrucción SHOWPLAN_XML SET.

Incluir plan de ejecución real

Requiere los mismos permisos necesarios para utilizar la opción de instrucción STATISTICS XML SET.

Para obtener más información, vea Mostrar planes de ejecución gráficos (SQL Server Management Studio).

Permisos necesarios para mostrar planes de ejecución mediante clases de eventos de SQL Server Profiler

Para mostrar planes de ejecución mediante clases de eventos del SQL Server Profiler, los usuarios deben ser miembros de la función fija de servidor sysadmin o tener concedido el permiso ALTER TRACE. No se comprueba ni se necesita el permiso SHOWPLAN.

Para obtener más información, vea Mostrar planes de ejecución mediante las clases de eventos del Analizador de SQL Server.

Permisos necesarios para mostrar planes de ejecución mediante la función de administración dinámica sys.dm_exec_query_plan

Para que los usuarios muestren planes de ejecución mediante la función de administración dinámica sys.dm_exec_query_plan, solo deben tener concedido el permiso VIEW SERVER STATE.

Para obtener más información, vea sys.dm_exec_query_plan (Transact-SQL).

Historial de cambios

Contenido actualizado

Se ha actualizado la nota de seguridad para resaltar cómo se ha de proteger la información confidencial que pueda aparecer en archivos del plan de presentación o en archivos de seguimiento.

Vea también

Otros recursos