Si TDE n'a pas beaucoup évolué depuis 2008, la version SQL 2019 en revanche propose une évolution intéressante : la possibilité de mettre en pause le processus de chiffrement.
Cela permet notamment de libérer les performances pour l'activité nominale de la base (impact business) puis reprendre le processus de chiffrement lorsque la base sera moins sollicitée.
Très utile pour les bases volumineuses ! Je vous propose dans cet article de découvrir cette nouveauté (je ne reviens pas sur la fonctionnalité TDE en elle même).
Rappel
SQL Server permet le chiffrement des données stockées ("at rest") via la fonctionnalité Transparent Data Encryption (TDE).
TDE permet de se prémunir contre le vol des fichiers de bases de données (mdf, ndf et ldf) et des fichiers de Backup.
Lorsque TDE est activé, ces fichiers deviennent inexploitables sans clé de déchiffrement : impossible donc de remonter les bases à partir de ces fichiers sur une instance tierce, sans préalablement avoir chargé les clés de déchiffrement. Le vol des fichiers de données et de backup devient inutile.
Lorsque l'on active TDE sur une base de données, le chiffrement est effectué en arrière plan, par des threads dédiés qui vont lire toutes les pages de données en mémoire avant de les réécrire chiffrées sur disque. Cette opération peut prendre un certain temps suivant la volumétrie de la base et, vous vous en doutez, aura un impact sur les performances et sur les IO en particulier.
Démonstration
Soit une base de données Test_OMA.
Nous allons créer la DMK puis le certificat qui servira à chiffrer la DEK :
USE master;
GO
--création de la DMK
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'M0nM0td3P#ss3F0rt';
GO
--Création du certificat
CREATE CERTIFICATE Cert_TestTDE_OMA WITH SUBJECT = 'Certficat test TDE';
GO
--Création de la DEK
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE Cert_TestTDE_OMA;
GO
On peut alors démarrer le chiffrement de la base :
--Activation du chiffrement TDE de la base
ALTER DATABASE Test_OMA SET ENCRYPTION ON;
La DMV sys.dm_database_encryption_keys permet de suivre l'état d'avancement du chiffrement (colonne percent_complete) et depuis la version SQL 2019, la colonne encryption_scan_state_desc permet de connaitre le statut du processus du chiffrement (RUNNING, SUSPENDED ou ABORTED) :
Dans notre l'exemple ci-dessus, on constate que le chiffrement de la base Test_OMA est en cours...
Mettons le process de chiffrement en pause, et voyons ce qu'il se passe :
ALTER DATABASE Test_OMA SET ENCRYPTION SUSPEND;
Un coup d’œil sur les performances montre que l'activité IO a bien cessé :
Relançons le chiffrement et observons la suite :
ALTER DATABASE Test_OMA SET ENCRYPTION RESUME;
Le chiffrement reprend bien là où il en était, jusqu'à son terme :
On constate en parallèle que l'activité IO repart, le temps du chiffrement :
Conclusion
Voilà une fonction intéressante et qui permet de contrôler le processus de chiffrement sur les bases de production à gros volume. On garde le contrôle du process, que l'on peux jouer sans crainte en heures ouvrées, et suspendre à volonté lors des pics d'utilisation de la base de données. Et il est intéressant de noter que cela fonctionne également sur Azure SQL Database.
Bon SQL :)
O.
Partage
Gardez un oeil sur tout
Recevez des notifications dès la publication d’un nouvel article et restez informé de l’actualité Cloud !
Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
Fonctionnel
Toujours activé
L’accès ou le stockage technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
L’accès ou le stockage technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’internaute.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
L’accès ou le stockage technique est nécessaire pour créer des profils d’internautes afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.