Sécurité de la table temporelleTemporal Table Security

S’applique à :Applies to: ouiSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) et ultérieures OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed InstanceS’applique à :Applies to: ouiSQL Server 2016 (13.x)SQL Server 2016 (13.x)yesSQL Server 2016 (13.x)SQL Server 2016 (13.x) and later OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance

Pour comprendre la sécurité appliquée aux tables temporelles, il est important de comprendre les principes de sécurité qui s’appliquent aux tables temporelles.To understand security as it applies to temporal tables, it is important to understand the security principals that apply to temporal tables. Une fois que vous avez compris ces principes de sécurité, vous serez prêt à approfondir la sécurité concernant les instructions CREATE TABLE, ALTER TABLEet SELECT .After you understand these security principles, you are ready to dive into the security around the CREATE TABLE, ALTER TABLE, and SELECT statements.

Principes de sécuritéSecurity Principles

Le tableau suivant décrit les principes de sécurité qui s’appliquent aux tables temporelles :The following table describes the security principles that apply to temporal tables:

PrincipePrinciple DescriptionDescription
L’activation/la désactivation du contrôle de version système requiert des autorisations maximales sur les objets affectésEnabling/disabling system-versioning requires highest privileges on affected objects L’activation et la désactivation de SYSTEM_VERSIONING nécessitent l’autorisation CONTROL sur la table en cours et la table d’historiqueEnabling and disabling SYSTEM_VERSIONING requires CONTROL permission on both the current and the history table
Les données d’historique ne peuvent pas être modifiées directementHistory data cannot be modified directly Lorsque SYSTEM_VERSIONING est défini sur ON, les utilisateurs ne peuvent pas modifier les données d’historique, quelles que soient leurs autorisations sur la table en cours ou la table d’historique.When SYSTEM_VERSIONING is ON users cannot alter history data regardless of their actual permissions on current or the history table. Cela inclut les modifications de schéma et des données.This includes both data and schema modifications.
L’interrogation des données d’historique nécessite l’autorisation SELECT sur la table d’historiqueQuerying history data requires SELECT permission on the history table Même si un utilisateur dispose de l’autorisation SELECT sur la table en cours, cela ne signifie pas qu’il dispose de l’autorisation SELECT sur la table d’historique.Merely because a user has SELECT permission on the current table does not mean that they have SELECT permission on the history table.
Opérations de surfaces d’audit qui affectent la table d’historique d’une manière spécifique :Audit surfaces operations affecting history table in specific ways: Les paramètres d’audit de la table actuelle ne sont pas appliqués automatiquement à la table d’historique.Auditing settings from the current table are not automatically applied to the history table. L’audit doit être activé explicitement pour la table d’historique.Auditing needs to be enabled explicitly for history table.

Une fois activé, l’audit sur la table d’historique capture régulièrement toutes les tentatives directes d’accès aux données (même si elles ont échoué).Once enabled, auditing on history table regularly captures all direct attempts to access the data (regardless if they were successful or not).

SELECT avec une extension de requête temporelle indique que la table d’historique a été affectée par cette opération.SELECT with temporal query extension shows that history table was affected with that operation.

La table temporelleCREATE/ALTER expose les informations relatives à la vérification d’autorisation sur la table d’historique également.CREATE/ALTER temporal table expose information that permission check happens on history table as well. Le fichier d’audit contient un enregistrement supplémentaire pour la table d’historique.Audit file will contain additional record for history table.

Les opérations DML sur la table en cours indiquent que la table d’historique a été affectée, mais additional_info fournit le contexte nécessaire (DML était le résultat 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).

Exécution d’opérations de schémaPerforming Schema Operations

Lorsque SYSTEM_VERSIONING est défini sur ON, les opérations de modification de schéma sont limitées.When SYSTEM_VERSIONING is set to ON, schema modification operations are limited.

Opérations de schéma ALTER interditesDisallowed ALTER schema operations

OpérationOperation Table en coursCurrent Table Table d’historiqueHistory Table
DROP TABLEDROP TABLE InterditDisallowed InterditDisallowed
ALTER TABLE...SWITCH PARTITIONALTER TABLE...SWITCH PARTITION SWITCH IN uniquement (consultez Partitionnement des tables temporelles)SWITCH IN only (see Partitioning with Temporal Tables) SWITCH OUT uniquement (consultez Partitionnement des tables temporelles)SWITCH OUT only (see Partitioning with Temporal Tables)
ALTER TABLE...DROP PERIODALTER TABLE...DROP PERIOD InterditDisallowed -
ALTER TABLE...ADD PERIODALTER TABLE...ADD PERIOD - InterditDisallowed

Opérations ALTER TABLE autoriséesAllowed ALTER TABLE operations

OpérationOperation CurrentCurrent HistoriqueHistory
ALTER TABLE...REBUILDALTER TABLE...REBUILD Autorisé (indépendamment)Allowed (independently) Autorisé (indépendamment)Allowed (independently)
CREATE INDEXCREATE INDEX Autorisé (indépendamment)Allowed (independently) Autorisé (indépendamment)Allowed (independently)
CREATE STATISTICSCREATE STATISTICS Autorisé (indépendamment)Allowed (independently) Autorisé (indépendamment)Allowed (independently)

Sécurité de l’instruction CREATE Temporal TABLESecurity of the CREATE Temporal TABLE Statement

FonctionnalitéFeature Créer une nouvelle table d’historiqueCreate New History Table Réutiliser la table d’historique existanteReuse Existing History Table
Autorisations requisesPermission Required AutorisationCREATE TABLE dans la base de donnéesCREATE TABLE permission in the database

AutorisationALTER sur les schémas dans lesquels les tables en cours et d’historique sont crééesALTER permission on the schemas into which the current and history tables are being created
AutorisationCREATE TABLE dans la base de donnéesCREATE TABLE permission in the database

AutorisationALTER sur le schéma dans lequel la table en cours va être crééeALTER permission on the schema in which the current table will be created.

AutorisationCONTROL sur la table d’historique spécifiée dans le cadre de l’instruction CREATE TABLE qui crée la table temporelleCONTROL permission on the history table specified as part of the CREATE TABLE statement creating the temporal table
AuditAudit L’audit révèle que les utilisateurs ont essayé de créer deux objets.Audit shows that users attempted to create two objects. L’opération peut échouer en raison d’autorisations insuffisantes pour créer une table dans la base de données ou en raison d’autorisations insuffisantes pour modifier les schémas des tables.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. L’audit indique que la table temporelle a été créée.Audit shows that temporal table was created. L’opération peut échouer en raison d’autorisations insuffisantes pour créer une table dans la base de données, en raison d’autorisations insuffisantes pour modifier le schéma de la table temporelle, ou en raison d’autorisations insuffisantes sur la table d’historique.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.

Sécurité de l’instruction ALTER Temporal TABLE SET (SYSTEM_VERSIONING ON/OFF)Security of the ALTER Temporal TABLE SET (SYSTEM_VERSIONING ON/OFF) Statement

FonctionnalitéFeature Créer une nouvelle table d’historiqueCreate New History Table Réutiliser la table d’historique existanteReuse Existing History Table
Autorisations requisesPermission Required AutorisationCONTROL dans la base de donnéesCONTROL permission in the database

AutorisationCREATE TABLE dans la base de donnéesCREATE TABLE permission in the database

AutorisationALTER sur les schémas dans lesquels la table d’historique est crééeALTER permission on the schemas into which the history table is being created
AutorisationCONTROL sur la table d’origine qui est modifiéeCONTROL permission on the original table which is altered

AutorisationCONTROL sur la table d’historique spécifiée dans le cadre de l’instruction ALTER TABLECONTROL permission on the history table specified as part of the ALTER TABLE statement
AuditAudit L’audit indique que la table temporelle a été modifiée et que la table d’historique a été créée en même temps.Audit shows that the temporal table was altered and the history table was created at the same time. L’opération peut échouer en raison d’autorisations insuffisantes pour créer une table dans la base de données, en raison d’autorisations insuffisantes pour modifier le schéma de la table d’historique, ou en raison d’autorisations insuffisantes pour modifier la table temporelle.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. L’audit indique que la table temporelle a été modifiée, mais que l’opération nécessitait l’accès à la table d’historique.Audit shows that temporal table was altered, but operation required access to history table. L’opération peut échouer en raison d’autorisations insuffisantes sur la table d’historique ou d’autorisations insuffisantes sur la table en cours.Operation may fail due to lack of permissions on the history table or lack of permissions on the current table.

Sécurité de l’instruction SELECTSecurity of SELECT Statement

L’autorisationSELECT reste inchangée pour les instructions SELECT qui n’affectent pas la table d’historique.SELECT permission is unchanged for SELECT statements that do not affect the history table. Pour les instructions SELECT qui affectent la table d’historique, l’autorisation SELECT est nécessaire sur la table en cours et la table d’historique.For SELECT statements that affect the history table, SELECT permission is required on both the current table and the history table.

Voir aussiSee Also