Seguridad de la tabla temporalTemporal Table Security

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Para comprender la seguridad en relación con las tablas temporales, conviene entender los principios de seguridad que se aplican a las dichas tablas.To understand security as it applies to temporal tables, it is important to understand the security principals that apply to temporal tables. Una vez que comprenda estos principios de seguridad, estará listo para profundizar en la seguridad de las instrucciones CREATE TABLE, ALTER TABLEy SELECT .After you understand these security principles, you are ready to dive into the security around the CREATE TABLE, ALTER TABLE, and SELECT statements.

Principios de seguridadSecurity Principles

En la siguiente tabla se describen los principios de seguridad que se aplican a las tablas temporales:The following table describes the security principles that apply to temporal tables:

PrincipioPrinciple DescripciónDescription
La habilitación o deshabilitación del control de versiones del sistema requiere los privilegios más altos en los objetos afectados.Enabling/disabling system-versioning requires highest privileges on affected objects Para habilitar y deshabilitar SYSTEM_VERSIONING, se requiere el permiso CONTROL en la tabla actual y de historial.Enabling and disabling SYSTEM_VERSIONING requires CONTROL permission on both the current and the history table
Los datos del historial no se pueden modificar directamente.History data cannot be modified directly 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.When SYSTEM_VERSIONING is ON users cannot alter history data regardless of their actual permissions on current or the history table. Se incluyen las modificaciones de datos y esquema.This includes both data and schema modifications.
Para consultar datos del historial se requiere el permiso SELECT en la tabla de historial.Querying history data requires SELECT permission on the history table Solo porque un usuario tenga el permiso SELECT en la tabla actual no significa que disfrutará del permiso SELECT en la de historial.Merely because a user has SELECT permission on the current table does not mean that they have SELECT permission on the history table.
En la auditoría se muestran las operaciones que afectan a la tabla de historial de forma específica:Audit surfaces operations affecting history table in specific ways: La configuración de auditoría de la tabla actual no se aplica automáticamente a la tabla de historial.Auditing settings from the current table are not automatically applied to the history table. La auditoría debe habilitarse de forma explícita para la tabla de historial.Auditing needs to be enabled explicitly for history table.

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).Once enabled, auditing on history table regularly captures all direct attempts to access the data (regardless if they were successful or not).

El permisoSELECT con la extensión de consulta temporal muestra que esa operación afectó a la tabla de historial.SELECT with temporal query extension shows that history table was affected with that operation.

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.CREATE/ALTER temporal table expose information that permission check happens on history table as well. El archivo de auditoría contendrá un registro adicional para la tabla de historial.Audit file will contain additional record for history table.

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).DML operations on current table surface that history table was affected but additional_info provides necessary context (DML was result of system_versioning).

Realización de operaciones de esquemaPerforming Schema Operations

Cuando SYSTEM_VERSIONING esté establecido en ON, las operaciones de modificación de esquema son limitadas.When SYSTEM_VERSIONING is set to ON, schema modification operations are limited.

Operaciones de esquema ALTER no permitidas.Disallowed ALTER schema operations

OperaciónOperation Tabla actualCurrent Table Tabla de historialHistory Table
DROP TABLEDROP TABLE No permitida.Disallowed No permitida.Disallowed
ALTER TABLE...SWITCH PARTITIONALTER TABLE...SWITCH PARTITION Solo SWITCH IN; vea Partitioning with Temporal Tables(Creación de particiones con tablas temporales)SWITCH IN only (see Partitioning with Temporal Tables) Solo SWITCH OUT; vea Partitioning with Temporal Tables(Creación de particiones con tablas temporales)SWITCH OUT only (see Partitioning with Temporal Tables)
ALTER TABLE...DROP PERIODALTER TABLE...DROP PERIOD No permitida.Disallowed -
ALTER TABLE...ADD PERIODALTER TABLE...ADD PERIOD - No permitida.Disallowed

Operaciones ALTER TABLE permitidasAllowed ALTER TABLE operations

OperaciónOperation CurrentCurrent HistorialHistory
ALTER TABLE...REBUILDALTER TABLE...REBUILD Permitida (independientemente)Allowed (independently) Permitida (independientemente)Allowed (independently)
CREATE INDEXCREATE INDEX Permitida (independientemente)Allowed (independently) Permitida (independientemente)Allowed (independently)
CREATE STATISTICSCREATE STATISTICS Permitida (independientemente)Allowed (independently) Permitida (independientemente)Allowed (independently)

Seguridad de la instrucción CREATE TABLE (tabla temporal)Security of the CREATE Temporal TABLE Statement

Crear una nueva tabla de historialCreate New History Table Volver a usar la tabla de historial existenteReuse Existing History Table
Permiso necesarioPermission Required El permisoCREATE TABLE en la base de datos.CREATE TABLE permission in the database

El permisoALTER en los esquemas en los que se están creando las tablas actuales y de historial.ALTER permission on the schemas into which the current and history tables are being created
El permisoCREATE TABLE en la base de datos.CREATE TABLE permission in the database

El permisoALTER en el esquema en el que se creará la tabla actual.ALTER permission on the schema in which the current table will be created.

El permisoCONTROL en la tabla de historial especificada como parte de la instrucción CREATE TABLE que crea la tabla temporal.CONTROL permission on the history table specified as part of the CREATE TABLE statement creating the temporal table
AuditarAudit En la auditoría se muestra que los usuarios trataron de crear dos objetos.Audit shows that users attempted to create two objects. 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.Operation may fail due to lack of permissions to create a table in the database or due to lack of permissions to alter schemas for either table. En la auditoría se muestra que la tabla temporal se creó.Audit shows that temporal table was created. 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.Operation may fail due to lack of permission to create a table in the database, due to lack of permissions to alter the schema for the temporal table, or to lack of permissions on the history table.

Seguridad de la instrucción ALTER TABLE SET (tabla temporal) (SYSTEM_VERSIONING ON/OFF)Security of the ALTER Temporal TABLE SET (SYSTEM_VERSIONING ON/OFF) Statement

Crear una nueva tabla de historialCreate New History Table Volver a usar la tabla de historial existenteReuse Existing History Table
Permiso necesarioPermission Required El permisoCONTROL en la base de datos.CONTROL permission in the database

El permisoCREATE TABLE en la base de datos.CREATE TABLE permission in the database

ElALTER permiso en los esquemas en los que se está creando la tabla de historial.ALTER permission on the schemas into which the history table is being created
El permisoCONTROL en la tabla original que se ha modificado.CONTROL permission on the original table which is altered

El permisoCONTROL en la tabla de historial especificada como parte de la instrucción ALTER TABLE .CONTROL permission on the history table specified as part of the ALTER TABLE statement
AuditarAudit En la auditoría se muestra que se modificó la tabla temporal y que la de historial se creó a la vez.Audit shows that the temporal table was altered and the history table was created at the same time. 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.Operation may fail due to lack of permissions to create a table in the database, due to lack of permissions to alter schema for history table, or due to lack of permission to modify temporal table. En la auditoría se muestra que se modificó la tabla temporal, pero que la operación requería acceso a la de historial.Audit shows that temporal table was altered, but operation required access to history table. La operación puede generar un error debido a una falta de permisos en la tabla de historial o en la actual.Operation may fail due to lack of permissions on the history table or lack of permissions on the current table.

Seguridad de la instrucción SELECTSecurity of SELECT Statement

El permisoSELECT no cambia para las instrucciones SELECT que no afectan a la tabla de historial.SELECT permission is unchanged for SELECT statements that do not affect the history table. 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.For SELECT statements that affect the history table, SELECT permission is required on both the current table and the history table.

Consulte tambiénSee Also