Seguridad de la tabla temporal

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

Para comprender la seguridad en relación con las tablas temporales, conviene entender los principios de seguridad que se aplican a las dichas tablas. Una vez que comprenda estos principios de seguridad, estará listo para profundizar en la seguridad de las instrucciones CREATE TABLE, ALTER TABLEy SELECT .

Principios de seguridad

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

Principio Descripción
La habilitación o deshabilitación del control de versiones del sistema requiere los privilegios más altos en los objetos afectados. Para habilitar y deshabilitar SYSTEM_VERSIONING, se requiere el permiso CONTROL en la tabla actual y de historial.
Los datos del historial no se pueden modificar directamente. Cuando SYSTEM_VERSIONING tenga el valor ON, los usuarios no podrán modificar los datos del historial, con independencia de los permisos que tengan en la tabla actual o de historial. Se incluyen las modificaciones de datos y esquema.
Para consultar datos del historial se requiere el permiso SELECT en la tabla de historial. Solo porque un usuario tenga el permiso SELECT en la tabla actual no significa que disfrutará del permiso SELECT en la de historial.
En la auditoría se muestran las operaciones que afectan a la tabla de historial de forma específica: 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 habilitada, 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).

El permisoSELECT con la extensión de consulta temporal muestra que esa operación afectó a la tabla de historial.

La instrucciónCREATE/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 contendrá un registro adicional para la tabla de historial.

Las operaciones DML efectuadas en la tabla actual muestran que la de historial se vio afectada, pero additional_info ofrece el contexto necesario (DML fue el resultado de system_versioning).

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 de historial
DROP TABLE No permitida. No permitida.
ALTER TABLE...SWITCH PARTITION Solo SWITCH IN; vea Partitioning with Temporal Tables(Creación de particiones con tablas temporales) Solo SWITCH OUT; vea Partitioning with Temporal Tables(Creación de particiones con tablas temporales)
ALTER TABLE...DROP PERIOD No permitida. -
ALTER TABLE...ADD PERIOD - No permitida.

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 CREATE TABLE (tabla temporal)

Característica Crear una nueva tabla de historial Volver a usar la tabla de historial existente
Permiso necesario El permisoCREATE TABLE en la base de datos.

El permisoALTER en los esquemas en los que se están creando las tablas actuales y de historial.
El permisoCREATE TABLE en la base de datos.

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

El permisoCONTROL 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. La operación puede producir un error debido a una falta de permisos para crear la tabla en la base de datos o modificar esquemas para cualquiera de las dos tablas. En la auditoría se muestra que la tabla temporal se creó. La operación puede generar un error debido a la falta de permisos para crear una tabla en la base de datos o alterar el esquema para la tabla temporal, o bien que no se dispongan que los permisos suficientes en la tabla de historial.

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

Característica Crear una nueva tabla de historial Volver a usar la tabla de historial existente
Permiso necesario El permisoCONTROL en la base de datos.

El permisoCREATE TABLE en la base de datos.

ElALTER permiso en los esquemas en los que se está creando la tabla de historial.
El permisoCONTROL en la tabla original que se ha modificado.

El permisoCONTROL 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. 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 de historial o modificar la tabla de temporal. En la auditoría se muestra que se modificó la tabla temporal, pero que la operación requería 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 permisoSELECT no cambia para las instrucciones SELECT que no afectan a la tabla de historial. En lo que respecta a las instrucciones SELECT que afectan a la tabla de historial, se requiere el permiso SELECT en la tabla actual y de historial.

Consulte también