Sécurité de la table temporelle

S’applique à : SQL Server 2016 (13.x) et versions ultérieures Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Pour sécuriser les tables temporelles, vous devez comprendre les principes de sécurité qui s’y appliquent. Après avoir compris ces principes, vous pouvez appliquer la sécurité aux 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 requièrent l’autorisation CONTROL à la fois sur la table actuelle et sur la table d’historique.
Les données d’historique ne peuvent pas être modifiées directement Quand SYSTEM_VERSIONING est ON, les utilisateurs ne peuvent pas modifier les données d’historique, indépendamment de leurs permissions sur la table actuelle ou 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. Vous devez activer explicitement l’audit pour la table d’historique. Après l’avoir activé, l’audit de la table d’historique capture toutes les tentatives directes d’accès aux données, qu’elles réussissent ou non.

SELECT avec l’extension de requête temporelle indique que l’opération a affecté la table d’historique.

CREATE/ALTER La table temporelle indique que la vérification des autorisations s’effectue également sur la table d’historique. Le fichier d'audit contient des enregistrements supplémentaires pour la table d'historique.

Les opérations de langage de manipulation de données (DML) sur la table actuelle révèlent que l’opération a affecté la table d’historique, mais additional_information fournit le contexte nécessaire (DML était le résultat de SYSTEM_VERSIONING).

1 Si vous avez ALTER la permission sur la table actuelle et la table historique, et que vous supprimez une colonne dans la table courante, la colonne associée dans la table 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 interdites ALTER SCHEMA

Operation Tableau actuel Table d’historique
DROP TABLE Rejeté Rejeté
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 Rejeté N/A
ALTER TABLE...ADD PERIOD N/A Rejeté

Opérations autorisées ALTER TABLE

Operation 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
Autorisation requise Autorisation CREATE TABLE dans la base de données

ALTER Permission sur les schémas où vous créez les tables actuelles et historiques
Autorisation CREATE TABLE dans la base de données

ALTER Permission sur le schéma où vous créez la table actuelle.

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 faute d’autorisations pour créer une table dans la base de données, ou faute d’autorisations pour modifier les schémas de l’une ou l’autre table. 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 de la table SET temporelle (SYSTEM_VERSIONING)

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.

ALTER Permission sur les schémas où vous créez la table d’historique.
CONTROL Permission sur la table originale que vous modifiez.

CONTROL autorisation sur la table d’historique spécifiée dans 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’un manque d’autorisations pour créer une table dans la base de données, d’un manque d’autorisations pour modifier le schéma de la table d’historique, ou d’une absence d’autorisation 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, vous devez disposer de l’autorisation SELECT sur la table actuelle et sur la table d’historique.