Sécurité de la table temporelle

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure 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. 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 .

Principes de sécurité

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

Principe Description
L’activation/la désactivation du contrôle de version système requiert des autorisations maximales sur les objets affecté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. Cela inclut les modifications de schéma et des données.
L’interrogation des données d’historique nécessite l’autorisation SELECT sur la table d’historique 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.
Opérations de surfaces d’audit qui affectent la table d’historique d’une 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 temporelleCREATE/ALTER expose les informations relatives à la vérification d’autorisation sur la table d’historique également. Le fichier d’audit contient un enregistrement supplémentaire pour la table d’historique.

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).

Exécution d’opérations de schéma

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

Opération Table en cours Table d’historique
DROP TABLE Interdit Interdit
ALTER TABLE...SWITCH PARTITION SWITCH IN uniquement (consultez Partitionnement des tables temporelles) SWITCH OUT uniquement (consultez Partitionnement des tables temporelles)
ALTER TABLE...DROP PERIOD Interdit -
ALTER TABLE...ADD PERIOD - Interdit

Opérations ALTER TABLE autorisées

Opération Current 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 Temporal TABLE

Fonctionnalité Créer une nouvelle table d’historique Réutiliser la table d’historique existante
Autorisations requises AutorisationCREATE TABLE dans la base de données

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

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

AutorisationCONTROL 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 en raison 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 en raison d’autorisations insuffisantes sur la table d’historique.

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

Fonctionnalité Créer une nouvelle table d’historique Réutiliser la table d’historique existante
Autorisations requises AutorisationCONTROL dans la base de données

AutorisationCREATE TABLE dans la base de données

AutorisationALTER sur les schémas dans lesquels la table d’historique est créée
AutorisationCONTROL sur la table d’origine qui est modifiée

AutorisationCONTROL 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. 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. 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’autorisationSELECT 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.

Voir aussi