Déplacement d'une base de données protégée par le chiffrement transparent des données vers un autre SQL Server

Cette rubrique explique comment protéger une base de données SQL Server à l'aide du chiffrement transparent des données, puis la déplacer vers une autre instance de SQL Server.

Dans cette rubrique

  • Avant de commencer :

    Historique

    Sécurité

  • Exemple :

    Pour créer une base de données protégée par le chiffrement transparent des données

    Pour déplacer une base de données protégée par le chiffrement transparent des données vers une nouvelle instance de SQL Server

  • Suivi : mesures à prendre après avoir déplacé une base de données protégée par le chiffrement transparent des données vers une nouvelle instance de SQL Server

Historique

Le chiffrement transparent des données effectue le chiffrement et le déchiffrement d'E/S en temps réel des données et des fichiers journaux. Le chiffrement utilise une clé de chiffrement de base de données (DEK), stockée dans l'enregistrement de démarrage de base de données pour être disponible pendant la récupération. La clé de chiffrement de base de données est une clé symétrique sécurisée à l'aide d'un certificat stocké dans la base de données master du serveur ou une clé asymétrique protégée par un module de la gestion de clés extensible. Lors du déplacement d'une base de données protégée par chiffrement transparent des données, vous devez également déplacer le certificat ou la clé asymétrique qui sert à ouvrir la clé DEK. Le certificat ou la clé asymétrique doit être installé dans la base de données master du serveur de destination, afin que SQL Server puisse accéder aux fichiers de base de données. Pour plus d'informations, consultez Présentation du chiffrement transparent des données (TDE).

Sécurité

Autorisations

Requiert l'autorisation CONTROL DATABASE sur la base de données master pour créer la clé principale de base de données.

Requiert l'autorisation CREATE CERTIFICATE sur la base de données master pour créer le certificat qui protège la clé DEK.

Requiert l'autorisation CONTROL DATABASE sur la base de données chiffrée et l'autorisation VIEW DEFINITION sur le certificat ou la clé asymétrique qui sert à chiffrer la clé de chiffrement de la base de données.

[Haut de la page]

Création d'une base de données protégée par le chiffrement transparent des données

Pour créer une base de données protégée par le chiffrement transparent des données, en utilisant une clé de chiffrement de base de données protégée par un certificat dans la base de données master.

Pour créer une base de données protégée par le chiffrement transparent des données

  1. Dans l'éditeur de requête, entrez les commandes Transact-SQL suivantes pour créer une clé principale de base de données et un certificat dans la base de données master.

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Remplacez les astérisques par un mot de passe. N'utilisez pas de mot de passe vide. Utilisez un mot de passe fort.

    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
  2. Créez une sauvegarde du certificat de serveur dans la base de données master. Si le certificat utilisé pour protéger la clé de chiffrement de base de données est perdu, vous ne serez pas en mesure d'accéder aux données d'une base de données protégée par le chiffrement transparent des données. L'exemple suivant stocke la sauvegarde du certificat et le fichier de clé privée, dans l'emplacement par défaut des données de cette instance de SQL Server (C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA).

    Remarque relative à la sécuritéRemarque relative à la sécurité

    Vous devez conserver des copies du fichier de certificat et du fichier de clé privée pour permettre la récupération du certificat. Le mot de passe de la clé privée ne doit pas forcément être le même que le mot de passe de la clé principale de la base de données.

    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '**************'
    );
    GO
    
  3. Créez une base de données à protéger par le chiffrement transparent des données.

    CREATE DATABASE CustRecords ;
    GO
    
  4. Basculez sur la nouvelle base de données. Créez une clé de chiffrement de base de données, protégée par le certificat de serveur dans la base de données master. Modifiez ensuite la nouvelle base de données pour chiffrer la base de données à l'aide du chiffrement transparent des données.

    USE CustRecords;
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_128
    ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert;
    GO
    ALTER DATABASE CustRecords
    SET ENCRYPTION ON;
    GO
    

    Notes

    Pour réaliser cette étape en utilisant SQL Server Management Studio, dans l'Explorateur d'objets, cliquez avec le bouton droit sur la base de données, pointez sur les tâches, puis cliquez sur Gérer le chiffrement de base de données. Utilisez la boîte de dialogue Gérer le chiffrement de base de données pour sélectionner une clé de chiffrement de base de données et définir le chiffrement de la base de données sur.

  5. Créez une table simple. Introduisez les données dans la table puis faites une sélection dans la table pour tester la base de données.

    CREATE TABLE CustomerRecord
        (CustomerID int PRIMARY KEY,
        SecretData nvarchar(100) NOT NULL) ;
    GO
    INSERT CustomerRecord (CustomerID,SecretData)
    VALUES (23997, 'Plain text data') ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

[Haut de la page]

Déplacement d'une base de données protégée par le chiffrement transparent des données

Pour déplacer une base de données protégée par le chiffrement transparent des données vers une nouvelle instance de SQL Server

  1. Détachez du serveur source la base de données protégée par le chiffrement transparent des données.

    USE master ;
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    

    Notes

    Pour réaliser cette étape à l'aide de Management Studio, dans l'Explorateur d'objets, cliquez avec le bouton droit sur la base de données, pointez sur les tâches, puis cliquez sur Détacher. Cliquez sur OK.

  2. À l'aide de l'Explorateur Windows, déplacez ou copiez les fichiers de base de données depuis le serveur source vers le même emplacement sur le serveur de destination.

    Notes

    Normalement les deux fichiers de base de données (CustomerRecords.mdf et CustomerRecords_log.LDF) se trouveront dans l'emplacement par défaut C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. Vos noms et emplacements de fichier peuvent être différents.

  3. À l'aide de l'Explorateur Windows, déplacez ou copiez la sauvegarde du certificat de serveur et le fichier de clé privée depuis le serveur source vers le même emplacement sur le serveur de destination. Dans notre exemple, ces fichiers sont stockés dans le dossier de données par défaut dans C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.

  4. Créez une clé principale de base de données sur l'instance de destination de SQL Server. Le mot de passe ne doit pas forcément être le même que le serveur source.

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    
  5. Recréez le certificat de serveur à l'aide du fichier de sauvegarde du certificat de serveur d'origine. Le mot de passe doit être le même que le mot de passe qui a été utilisé lorsque la sauvegarde a été créée.

    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '**************'
    );
    GO
    
  6. Attachez la base de données déplacée. Le chemin d'accès des fichiers de base de données doit correspondre à l'emplacement dans lequel vous avez stocké les fichiers de base de données.

    CREATE DATABASE [CustRecords] ON 
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )
    FOR ATTACH ;
    GO
    

    Notes

    Pour réaliser cette étape en utilisant Management Studio, dans l'Explorateur d'objets, cliquez avec le bouton droit sur les Bases de données, puis cliquez sur Joindre. Cliquez sur Ajouter pour trouver le fichier CustRecords.mdf, puis cliquez sur OK.

  7. Testez l'accès à la base de données en sélectionnant des données de la table.

    USE CustRecords ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

    [Haut de la page]

Suivi : mesures à prendre après avoir déplacé une base de données protégée par le chiffrement transparent des données vers une nouvelle instance de SQL Server

Sauvegarder la base de données master

  • L'installation du certificat et l'attachement de la base de données ont modifié les informations dans la base de données master. Vous devez créer une nouvelle sauvegarde de la base de données master.

[Haut de la page]