Spostamento di un database protetto da TDE in un'altra istanza di SQL Server

In questo argomento verranno descritti i passaggi per proteggere un database di SQL Server tramite TDE (Transparent Data Encryption) e per spostare il database in un'altra istanza di SQL Server.

In questo argomento

  • Prima di iniziare:

    Background

    Sicurezza

  • Esempio:

    Per creare un database protetto con TDE

    Per spostare un database protetto con TDE in un nuova istanza di SQL Server

  • Completamento: passaggi da effettuare dopo aver spostato un database protetto con TDE in una nuova istanza di SQL Server

Background

TDE consente di eseguire la crittografia e la decrittografia I/O in tempo reale dei file di dati e di log. Per la crittografia viene utilizzata una chiave di crittografia del database (DEK), archiviata nel record di avvio del database affinché sia disponibile durante le operazioni di recupero. La chiave di decrittografia è una chiave simmetrica protetta tramite un certificato archiviato nel database master del server o una chiave asimmetrica protetta da un modulo EKM. Quando si sposta il database protetto con TDE, è necessario spostare anche la chiave asimmetrica o il certificato utilizzato per aprire la chiave di decrittografia. La chiave asimmetrica o il certificato deve essere installato nel database master del server di destinazione in modo che in SQL Server sia possibile accedere ai file del database. Per ulteriori informazioni, vedere Informazioni sulla crittografia trasparente dei dati (TDE, Transparent Data Encryption).

Sicurezza

Autorizzazioni

È richiesta l'autorizzazione CONTROL DATABASE per il database master per creare la chiave master del database.

È richiesta l'autorizzazione CREATE CERTIFICATE per il database master per creare il certificato che consente di proteggere la chiave di decrittografia.

Sono richieste l'autorizzazione CONTROL DATABASE per il database crittografato e l'autorizzazione VIEW DEFINITION per la chiave asimmetrica o il certificato utilizzato per crittografare la chiave di crittografia del database.

[Torna all'inizio]

Creazione di un database protetto con TDE

Per creare un database protetto con TDE utilizzando una chiave di crittografia del database protetta da un certificato nel database master.

Per creare un database protetto con TDE

  1. Nell'editor di query immettere i seguenti comandi Transact-SQL per creare una chiave master del database e un certificato nel database master.

    Nota sulla sicurezzaNota sulla sicurezza

    Sostituire gli asterischi con una password. Non utilizzare una password vuota. Utilizzare una password complessa.

    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
  2. Creare un backup del certificato del server nel database master. Se il certificato utilizzato per proteggere la chiave di crittografia del database viene perso, non sarà possibile accedere ai dati in un database protetto con TDE. Nell'esempio seguente viene illustrata l'archiviazione del backup dei file del certificato e della chiave privata nel percorso dei dati predefinito per questa istanza di SQL Server (C:\Programmi\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA).

    Nota sulla sicurezzaNota sulla sicurezza

    È necessario mantenere copie sia del file del certificato sia del file della chiave privata al fine di recuperare il certificato. La password per la chiave primaria non deve essere uguale a quella della chiave master del database.

    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '**************'
    );
    GO
    
  3. Creare un database da proteggere con TDE.

    CREATE DATABASE CustRecords ;
    GO
    
  4. Passare al nuovo database. Creare una chiave di crittografia del database protetta dal certificato del server nel database master. Successivamente modificare il nuovo database per crittografare il database tramite TDE.

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

    Nota

    Per effettuare questo passaggio utilizzando SQL Server Management Studio, in Esplora oggetti fare clic con il pulsante destro del mouse sul database, scegliere le attività, quindi fare clic su Gestione crittografia del database. Utilizzare la finestra di dialogo Gestione crittografia del database per selezionare una chiave di crittografia del database e attivare la crittografia del database.

  5. Creare una tabella semplice. Immettere dati nella tabella, quindi effettuare una selezione dalla tabella per testare il database.

    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
    

[Torna all'inizio]

Spostamento di un database protetto con TDE

Per spostare un database protetto con TDE in un nuova istanza di SQL Server

  1. Scollegare il database protetto con TDE dal server di origine.

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

    Nota

    Per effettuare questo passaggio utilizzando Management Studio, in Esplora oggetti fare clic con il pulsante destro del mouse sul database, scegliere le attività, quindi fare clic su Scollega. Fare clic su OK.

  2. Utilizzando Esplora risorse spostare o copiare i file del database dal server di origine nello stesso percorso nel server di destinazione.

    Nota

    In genere i due file del database (CustomerRecords.mdf e CustomerRecords_log.LDF) si trovano nel percorso predefinito C:\Programmi\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. I nomi e i percorsi dei file devono essere diversi.

  3. Utilizzando Esplora risorse spostare o copiare il backup dei file del certificato del server e della chiave privata dal server di origine nello stesso percorso nel server di destinazione. Nell'esempio questi file vengono archiviati nella cartella dei dati predefinita in C:\Programmi\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.

  4. Creare una chiave master del database nell'istanza di destinazione di SQL Server. La password non deve essere uguale a quella del server di origine.

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    
  5. Ricreare il certificato del server utilizzando il file di backup del certificato del server originale. La password deve essere uguale a quella utilizzata durante la creazione del backup.

    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '**************'
    );
    GO
    
  6. Collegare il database in fase di spostamento. Il percorso dei file del database deve corrispondere al percorso in cui sono stati archiviati i file del database.

    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
    

    Nota

    Per effettuare questo passaggio utilizzando Management Studio, in Esplora oggetti fare clic con il pulsante destro del mouse sui Database, quindi fare clic su Collega. Fare clic su Aggiungi per individuare il file CustRecords.mdf, quindi scegliere OK.

  7. Testare l'accesso al database selezionando i dati dalla tabella.

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

    [Torna all'inizio]

Completamento: passaggi da effettuare dopo aver spostato un database protetto con TDE in una nuova istanza di SQL Server

Eseguire il backup del database master

  • L'installazione del certificato e il collegamento del database hanno modificato le informazioni nel database master, pertanto è necessario creare un nuovo backup del database master.

[Torna all'inizio]