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, 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 permitido | No permitido |
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 permitido | - |
ALTER TABLE...ADD PERIOD | - | 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 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
- Tablas temporales
- Introducción a las tablas temporales con versión del sistema
- Comprobaciones de coherencia del sistema de la tabla temporal
- Creación de particiones con tablas temporales
- Limitaciones y consideraciones de las tablas temporales
- Administración de la retención de datos históricos en las tablas temporales con control de versiones del sistema
- Tablas temporales con control de versiones del sistema con tablas con optimización para memoria
- Funciones y vistas de metadatos de la tabla temporal
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de