Partage via


Sécurité de la table temporelle

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Base de données Azure SQL Azure SQL Managed Instance

Pour comprendre la sécurité appliquée aux tables temporelles, vous devez comprendre les principes de sécurité qui s'appliquent aux tables temporelles. 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 TABLE, et SELECT.

Principes de sécurité

Le tableau suivant décrit les principes de sécurité qui s’appliquent aux tables temporelles :

Principe Description
L'activation/désactivation de la version du système requiert les privilèges les plus élevés sur les objets concernés L’activation et la désactivation de SYSTEM_VERSIONING nécessitent l’autorisation CONTROL sur la table en cours et la table d’historique.
Les données d’historique ne peuvent pas être modifiées directement 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. Cette limitation inclut les modifications de schéma et des données. 1
L’interrogation des données d’historique nécessite l’autorisation SELECT sur la table d’historique Un utilisateur disposant d’une autorisation SELECT sur la table actuelle n’a pas automatiquement l’autorisation SELECT sur la table d’historique.
L'audit révèle les opérations qui affectent la table d'historique de manière spécifique Les paramètres d’audit de la table actuelle ne sont pas appliqués automatiquement à la table d’historique. L’audit doit être activé explicitement pour la table d’historique. 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é).

SELECT avec une extension de requête temporelle indique que la table d’historique a été affectée par cette opération.

La table temporelle CREATE/ALTER expose les informations relatives à la vérification d’autorisation sur la table d’historique également. Le fichier d'audit contient des enregistrements supplémentaires pour la table d'historique.

Les opérations DML sur la table actuelle indiquent que la table d’historique a été affectée, mais additional_information fournit le contexte nécessaire (DML était le résultat de SYSTEM_VERSIONING).

1 Si vous disposez d’une autorisation ALTER sur la table actuelle et la table d’historique et que vous supprimez une colonne dans la table actuelle, la colonne associée dans la table d’historique est également supprimée, même si SYSTEM_VERSIONING est ON.

Effectuer des opérations sur le diagramme

Lorsque SYSTEM_VERSIONING est défini sur ON, les opérations de modification de schéma sont limitées.

Opérations de schéma ALTER interdites

Operation Table actuelle Table d’historique
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION SWITCH IN uniquement (consultez Partition avec des tables temporelles) SWITCH OUT uniquement (consultez Partition avec des tables temporelles)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Opérations ALTER TABLE autorisées

Operation Actuel Historique
ALTER TABLE...REBUILD Autorisé (indépendamment) Autorisé (indépendamment)
CREATE INDEX Autorisé (indépendamment) Autorisé (indépendamment)
CREATE STATISTICS Autorisé (indépendamment) Autorisé (indépendamment)

Sécurité de l’instruction CREATE table temporelle

Fonctionnalité Créer une nouvelle table d’historique Réutiliser la table d’historique existante
Autorisation requise Autorisation CREATE TABLE dans la base de données

Autorisation ALTER sur les schémas dans lesquels les tables en cours et d’historique sont créées
Autorisation CREATE TABLE dans la base de données

Autorisation ALTER sur le schéma dans lequel la table en cours va être créée.

Autorisation CONTROL sur la table d’historique spécifiée dans le cadre de l’instruction CREATE TABLE qui crée la table temporelle.
Audit L’audit révèle que les utilisateurs ont essayé de créer deux objets. L’opération peut échouer en raison d’autorisations insuffisantes pour créer une table dans la base de données, ou d’autorisations insuffisantes pour modifier les schémas des tables. L’audit indique que la table temporelle a été créée. 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 d’autorisations insuffisantes sur la table d’historique.

Sécurité de l’instruction ALTER table temporelle SET (SYSTEM_VERSIONING ON/OFF)

Fonctionnalité Créer une nouvelle table d’historique Réutiliser la table d’historique existante
Autorisation requise Autorisation CONTROL dans la base de données.

Autorisation CREATE TABLE dans la base de données.

Autorisation ALTER sur les schémas dans lesquels la table d’historique est créée.
Autorisation CONTROL sur la table d’origine qui est modifiée.

Autorisation CONTROL sur la table d’historique spécifiée dans le cadre de l’instruction ALTER TABLE.
Audit 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. Cette 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. 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. L’opération peut échouer en raison d’autorisations insuffisantes sur la table d’historique ou d’autorisations insuffisantes sur la table en cours.

Sécurité de l’instruction SELECT

L’autorisation SELECT reste inchangée pour les instructions SELECT qui n’affectent pas la table d’historique. 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.