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éesAutorisation 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éesAutorisation 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.
Contenu connexe
- Tables temporelles
- Bien démarrer avec les tables temporelles avec versions gérées par le système
- Vérifications de cohérence système des tables temporelles
- Partition avec des tables temporelles
- Considérations et limitations liées aux tables temporelles
- Gérer la rétention des données d'historique dans les tables temporelles avec contrôle de version par le système
- Tables temporelles avec version gérée par le système avec tables à mémoire optimisée
- Vues et fonctions des métadonnées des tables temporelles