Compartir vía


Seguridad de la tabla temporal

Se aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL Database Azure SQL Managed Instance

Para comprender la seguridad en relación con las tablas temporales, debe entender los principios de seguridad que se aplican a esas tablas. Una vez que comprenda estos principios de seguridad, ya puede profundizar en la seguridad de las instrucciones CREATE TABLE, ALTER TABLE y SELECT.

Principios de seguridad

En la siguiente tabla se describen los principios de seguridad que se aplican a las tablas temporales:

Principio Descripción
Para la habilitación o deshabilitación del control de versiones del sistema se necesitan los privilegios más altos en los objetos afectados Para habilitar y deshabilitar SYSTEM_VERSIONING se necesita el permiso CONTROL en la tabla actual y en la de historial.
Los datos del historial no se pueden modificar directamente Cuando SYSTEM_VERSIONING es ON, los usuarios no pueden modificar los datos del historial, con independencia de los permisos que tengan en la tabla actual o la de historial. Estas limitaciones incluyen las modificaciones de datos y esquema. 1
Para consultar datos del historial se necesita el permiso SELECT en la tabla de historial Un usuario con el permiso SELECT en la tabla actual no tiene el permiso SELECT automáticamente en la tabla de historial.
La auditoría revela operaciones que afectan a la tabla de historial de formas específicas La configuración de auditoría de la tabla actual no se aplica automáticamente a la tabla de historial. La auditoría debe habilitarse de forma explícita para la tabla de historial. Una vez que se habilita, la auditoría de la tabla de historial captura de forma regular todos los intentos directos de acceder a los datos (al margen de si se han realizado correctamente o no).

SELECT con la extensión de consulta temporal muestra que esa operación ha afectado a la tabla de historial.

La instrucción CREATE/ALTER para una tabla temporal expone información según la que la comprobación de permisos también tiene lugar en la tabla del historial. El archivo de auditoría contiene registros adicionales para la tabla de historial.

Las operaciones de DML efectuadas en la tabla actual muestran que la de historial se ha visto afectada, pero additional_information ofrece el contexto necesario (DML ha sido el resultado de SYSTEM_VERSIONING).

1 Si tiene permiso ALTER en la tabla actual y en la tabla de historial, y quita una columna de la tabla actual, también se quita la columna asociada de la tabla de historial, incluso si SYSTEM_VERSIONING es ON.

Realización de operaciones de esquema

Cuando SYSTEM_VERSIONING está establecido en ON, las operaciones de modificación de esquema son limitadas.

Operaciones de esquema ALTER no permitidas.

Operación Tabla actual Tabla del historial
DROP TABLE No permitido No permitido
ALTER TABLE...SWITCH PARTITION Solo SWITCH IN (vea Creación de particiones con tablas temporales) Solo SWITCH OUT (vea Creación de particiones con tablas temporales)
ALTER TABLE...DROP PERIOD No permitido N/D
ALTER TABLE...ADD PERIOD N/D No permitido

Operaciones ALTER TABLE permitidas

Operación Current Historial
ALTER TABLE...REBUILD Permitida (independientemente) Permitida (independientemente)
CREATE INDEX Permitida (independientemente) Permitida (independientemente)
CREATE STATISTICS Permitida (independientemente) Permitida (independientemente)

Seguridad de la instrucción de tabla temporal CREATE

Característica Creación de una tabla de historial Reutilización de la tabla de historial existente
Permiso necesario El permiso CREATE TABLE en la base de datos

El permiso ALTER en los esquemas en los que se van a crear las tablas actual y de historial
El permiso CREATE TABLE en la base de datos

El permiso ALTER en el esquema en el que se creará la tabla actual.

El permiso CONTROL en la tabla de historial especificada como parte de la instrucción CREATE TABLE que crea la tabla temporal.
Auditoría En la auditoría se muestra que los usuarios trataron de crear dos objetos. Se puede producir un error en la operación debido a una falta de permisos para crear la tabla en la base de datos o para modificar esquemas para cualquiera de las dos tablas. En la auditoría se muestra que la tabla temporal se ha creado. La operación puede generar un error debido a la falta de permisos para crear una tabla en la base de datos, alterar el esquema para la tabla temporal o bien por la falta de permisos en la tabla de historial.

Seguridad de la instrucción ALTER tabla temporal SET (SYSTEM_VERSIONING ON/OFF)

Característica Creación de una tabla de historial Reutilización de la tabla de historial existente
Permiso necesario El permiso CONTROL en la base de datos.

El permiso CREATE TABLE en la base de datos.

Permiso ALTER en los esquemas en los que se va a crear la tabla de historial.
El permiso CONTROL en la tabla original que se ha modificado.

El permiso CONTROL en la tabla de historial especificada como parte de la instrucción ALTER TABLE.
Auditoría En la auditoría se muestra que se modificó la tabla temporal y que la de historial se creó a la vez. Esta operación puede generar un error debido a la falta de permisos para crear una tabla en la base de datos, alterar el esquema para la tabla de historial o modificar la tabla de temporal. En la auditoría se muestra que se ha modificado la tabla temporal, pero que la operación necesitaba acceso a la de historial. La operación puede generar un error debido a una falta de permisos en la tabla de historial o en la actual.

Seguridad de la instrucción SELECT

El permiso SELECT no cambia para las instrucciones SELECT que no afectan a la tabla de historial. Para las instrucciones SELECT que afectan a la tabla de historial, se necesita el permiso SELECT en la tabla actual y en la de historial.