Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

SQL Server – Utiliser TDE (Transparent Data Encryption) sur SQL Server 2012 pour chiffrer vos bases de données

Introduction

Disponible depuis SQL Server 2008 Enterprise TDE permet de chiffrer un base de données de manière totalement transparente pour les application qui s’en appuient. A l’aide de TDM, les fichier .mdf et .ldf ainsi que les sauvegardes sont chiffrées avec les standards AES ou 3DES.

Le chiffrement est réalisé au niveau de la page. La donnée est chiffrée lors de son écriture sur le disque et déchiffrée lors de sa lecture, chiffrer et déchiffrer l’information au niveau de la page permet aux applications clientes de ne pas nécessiter de prérequis.

Dans le cas où la base de donnée est utilisée dans un mode de réplication (AlwaysOn, Mirroring ou Log Shipping), toutes les bases participant à la réplication seront chiffrées.

Attention, TDM chiffre la donnée au niveau de son support physique ce qui permet de la protéger en d’accès au disque contenant la base de donnée, les communications (client/server) ne sont elles pas chiffrées, une connexion SSL client/server doit être utilisée dans ce cas.

Prérequis et commandes utilisées

Réalisation

1.Créer la “Master Key” de la base de donnée

USE Master;
GO
CREATE MASTER KEY ENCRYPTION
BY PASSWORD=’Password’;
GO

Afin d’activer TDE, il est nécessaire de créer une master key. La master key doit être créée depuis la base master.

Microsoft recommande de la clé principale à l’aide de l’instruction BACKUP MASTER KEY et stocker la sauvegarde en lieu sûr.

2. Créer un certificat pour proteger “Master Key” créé précédemment

CREATE CERTIFICATE MyCert
WITH SUBJECT=’MyDatabase DEK’;
GO

Créer un certificat appelé “MyDatabase” dans l’exemple plus haut.

3. Créer la “Database Encryption Key”

USE MyDatabase
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyCert;
GO

Se positionner sur la base à chiffrer.

Créer la clé utilisée pour protéger la base de donnée, cette clé est appelée DEK (Database Encryption Key), cette clé est sécurisée à l’aide du certificat créé précédemment.

Les algorithmes de chiffrement suivant sont proposés :

  • AES_128
  • AES_192
  • AES_256
  • TRIPLE_DES_3KEY

4. Activer le chiffrement au niveau de la base à chiffrer

ALTER DATABASE MyDatabase
SET ENCRYPTION ON;
GO

Durant le chiffrement la base est toujours accessible le processus de chiffrement étant réalisé en arrière-plan, cependant, des dégradation des performances sont à prévoir.

Vérification

La commande suivante permet de vérifier la progression du chiffrement :

SELECT db_name(database_id),encryption_state,percent_complete,
key_algorithm,key_length
FROM sys.dm_database_encryption_keys

 

Exploitation

En plus des tâches de sauvegarde usuelles, l’utilisation de TDM impose la sauvegarde du certificat utilisé pour le chiffrement de la base. Sans ce certificat, il est impossible d’accéder aux données chiffrée, même depuis une sauvegarde (le chiffrement s’appliquant au niveau de la page).

Le script suivant est un exemple qui présente comment sauvegarder le certificat ainsi que la clé privée (inutile de préciser l’emplacement entre parenthèses dans le switch “WITH PRIVATE KEY” si l’on souhaite exporter le certificat avec sa clé privée) utilisés pour le chiffrement :

— Use master car la master key est stockée dans la base master
USE Master
GO

BACKUP CERTIFICATE MyCert
TO FILE = ‘C:\_cert\MyCert’
WITH PRIVATE KEY (file=’C:\_cert\MyCertPrivateKey’,
ENCRYPTION BY PASSWORD=’Password’)

SQL–Restauration et déplacement des bases de données chiffrées par TDM

Introduction

Afin de déplacer ou restaurer une base de donnée chiffrée à l’aide de TDE (Transparent Data Encryption), il est nécessaire de restaurer le certificat utilisé pour le chiffrement de la base sur la future instance SQL hôte.

Prérequis et commandes utilisées

Réalisation

Le script suivant permet de créer une master key depuis la base master de l’instance SQL cible :

USE Master
GO

CREATE MASTER KEY ENCRYPTION
BY PASSWORD = ‘Password’

 

Avant de restaurer la base, le certificat (avec la clé privée) provenant de l’instance source doivent être restaurés :

CREATE CERTIFICATE MyCert
FROM FILE=’c:\_cert\MyCert’
WITH PRIVATE KEY (
FILE = ‘c:\_cert\MyCertPrivateKey’,
DECRYPTION BY PASSWORD=’Password’)

 

La base peut maintenant être restaurée.

Vérification

La commande suivante requête la vue sys.certificates et la vue sys.dm_database_encryption_keys afin de retourner les bases chiffrées (dont l’encryption state est à “3”)

USE master
GO
SELECT * FROM sys.certificates
SELECT * FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;

Upgrade d’Edition SQL Server 2012R2

Introduction

Afin de profiter de nouvelles fonctionnalités sur un serveur SQL existant il est souvent possible de passer par l’upgrade d’Edition et ce de manière très rapide avec un temps d’inactivité minime (juste le temps de rebooter les services SQL).

La procédure suivante décrit comment upgrader une version Standard de SQL Server 2012 SP2 en version Enterprise, voici le lien décrivant les chemins supportés d’upgrade : https://msdn.microsoft.com/en-us/library/ms143393.aspx

Réalisation

Monter l’ISO : correspondant à votre version d’ et double-cliquer sur “setup.exe” :

clip_image001

Depuis l’onglet maintenance, cliquer sur ‘”Edition Upgrade” :

clip_image002

Patienter durant la vérification des prérequis :

clip_image005

clip_image006

Une fois les prérequis valider, entrer la clé de la nouvelle licence :

clip_image007

Accepter les termes et licences :

clip_image008

Sélectionner l’instance à upgrader

image

Patienter durant la validation :

clip_image010

Cliquer sur “Upgrade” :

clip_image011

L’upgrade est terminé, cliquer sur “OK” et rebooter si c’est demandé :

image

Vérification

 

SELECT SERVERPROPERTY(‘productversion’), SERVERPROPERTY (‘productlevel’), SERVERPROPERTY (‘edition’)

 

clip_image013

Sources : https://msdn.microsoft.com/en-us/library/cc707783.aspx