Seguridad de las tablas temporales

Aplica a: SQL Server 2016 (13.x) y versiones posteriores Azure SQL DatabaseAzure SQL Managed InstanceBase de datos SQL en Microsoft Fabric

Para asegurar tablas temporales, debes comprender los principios de seguridad que se aplican a ellas. Después de comprender estos principios, puedes aplicar medidas de seguridad a las sentencias 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 Description
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 alterar los datos de historial, independientemente de sus permisos en la tabla actual o 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. Debes activar la auditoría explícita para la tabla de historial. Después de habilitarla, la auditoría de la tabla de historial captura todos los intentos directos de acceder a los datos, tengan éxito o no.

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

La tabla temporal CREATE/ALTER revela que la comprobación de permisos también se realiza en la tabla de historial. El archivo de auditoría contiene registros adicionales para la tabla de historial.

Las operaciones de lenguaje de manipulación de datos (DML) en la tabla actual revelan que la operación afectó a la tabla de historial, pero additional_information proporciona el contexto necesario (DML fue el resultado de SYSTEM_VERSIONING).

1 Si tienes ALTER permiso sobre la tabla actual y la tabla de historia, y saltas una columna en la tabla actual, la columna asociada en la tabla de historial también se elimina, 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 prohibidas ALTER SCHEMA

Operation Tabla actual Tabla del historial
DROP TABLE No permitido No permitido
ALTER TABLE...SWITCH PARTITION SWITCH IN solo (consulte Partición con tablas temporales) SWITCH OUT solo (consulte Partición con tablas temporales)
ALTER TABLE...DROP PERIOD No permitido N/A
ALTER TABLE...ADD PERIOD N/A No permitido

Operaciones permitidas ALTER TABLE

Operation Current History
ALTER TABLE...REBUILD Permitido de manera independiente Permitido de manera independiente
CREATE INDEX Permitido de manera independiente Permitido de manera independiente
CREATE STATISTICS Permitido de manera independiente Permitido de manera independiente

Seguridad de la instrucción de tabla temporal CREATE

Feature Creación de una tabla de historial Reutilización de la tabla de historial existente
Permiso necesario CREATE TABLE permiso en la base de datos

ALTER permiso sobre los esquemas donde se crean las tablas actuales y de historial
CREATE TABLE permiso en la base de datos

ALTER Permiso sobre el esquema donde creas la tabla actual.

El permiso CONTROL sobre la tabla de historial que se especifica como parte de la instrucción CREATE TABLE para crear la tabla temporal.
Auditoría En la auditoría se muestra que los usuarios trataron de crear dos objetos. La operación podría fallar por falta de permisos para crear una tabla en la base de datos, o por falta de permisos para alterar esquemas de cualquiera de las 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 sentencia ALTER de la tabla temporal SET (SYSTEM_VERSIONING)

Feature Creación de una tabla de historial Reutilización de la tabla de historial existente
Permiso necesario CONTROL permiso en la base de datos.

CREATE TABLE permiso en la base de datos.

ALTER Permiso en los esquemas donde creas la tabla de historial.
CONTROL Permiso sobre la tabla original que modificas.

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 fallar debido a la falta de permisos para crear una tabla en la base de datos, la falta de permisos para alterar el esquema de la tabla de historial, o la falta de permisos para modificar la tabla 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 podría fallar por falta de permisos en la tabla de historial o por falta de permisos en la tabla 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 sentencias SELECT que afectan a la tabla de historial, se necesitan permisos SELECT tanto en la tabla actual como en la tabla de historial.