Condividi tramite


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

In questo argomento viene descritto come proteggere un database tramite TDE (Transparent Data Encryption) e spostare il database in un'altra istanza di SQL Server tramite SQL Server Management Studio o Transact-SQL. 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.

Contenuto dell'argomento

  • Prima di iniziare:

    Limitazioni e restrizioni

    Sicurezza

  • Per creare un database protetto con TDE utilizzando:

    SQL Server Management Studio

    Transact-SQL

  • Per spostare un database utilizzando:

    SQL Server Management Studio

    Transact-SQL

Prima di iniziare

Limitazioni e restrizioni

  • 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 Transparent Data Encryption (TDE).

  • Ai fini del recupero del certificato, è necessario mantenere copie sia del file del certificato sia del file della chiave privata. La password per la chiave primaria non deve essere uguale a quella della chiave master del database.

  • SQL Server archivia i file creati per impostazione predefinita qui in C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA. I nomi e i percorsi dei file possono essere diversi.

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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Per creare un database protetto con TDE

Utilizzo di SQL Server Management Studio

  1. Creare una chiave master del database e il certificato nel database master. Per ulteriori informazioni, vedere Utilizzo di Transact-SQL di seguito.

  2. Creare un backup del certificato del server nel database master. Per ulteriori informazioni, vedere Utilizzo di Transact-SQL di seguito.

  3. In Esplora oggetti fare clic con il pulsante destro del mouse sulla cartella Database e selezionare Nuovo database.

  4. Nella finestra di dialogo Nuovo database digitare il nome del nuovo database nella casella Nome database.

  5. Nella casella Proprietario digitare il nome del proprietario del nuovo database. In alternativa, fare clic sui puntini di sospensione (...) per aprire la finestra di dialogo Seleziona proprietario database. Per ulteriori informazioni sulla creazione di un nuovo database, vedere Creare un database.

  6. In Esplora oggetti fare clic sul segno più per espandere la cartella Database.

  7. Fare clic con il pulsante destro del mouse sul database creato, scegliere Attività e quindi fare clic su Gestione crittografia del database.

    Nella finestra di dialogo Gestione crittografia del database sono disponibili le opzioni indicate di seguito.

    • Algoritmo di crittografia
      Visualizza o imposta l'algoritmo da utilizzare per la crittografia del database. L'algoritmo predefinito è AES128. Il campo non può essere vuoto. Per ulteriori informazioni sugli algoritmi di crittografia, vedere Scelta di un algoritmo di crittografia.

    • Usa certificato server
      Imposta la sicurezza della crittografia mediante un certificato. Selezionarne uno dall'elenco. Se non si dispone dell'autorizzazione VIEW DEFINITION per i certificati del server, l'elenco sarà vuoto. Se viene selezionato un metodo certificato di crittografia, il valore non può essere vuoto. Per ulteriori informazioni sui certificati, vedere Certificati SQL Server e chiavi simmetriche.

    • Usa chiave asimmetrica server
      Imposta la sicurezza della crittografia mediante una chiave asimmetrica. Vengono visualizzate solo le chiavi asimmetriche disponibili. Solo una chiave asimmetrica protetta da un modulo EKM può crittografare un database tramite Transparent Data Encryption.

    • Attiva crittografia del database
      Modifica il database per abilitare (se selezionata) o disabilitare la funzionalità TDE (se deselezionata).

  8. Al termine, fare clic su OK.

Utilizzo di Transact-SQL

  1. In Esplora oggetti connettersi a un'istanza del Motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

    -- Create a database master key and a certificate in the master database.
    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    -- Create a backup of the server certificate in the master database.
    -- The following code stores the backup of the certificate and the private key file in the default data location for this instance of SQL Server 
    -- (C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA).
    
    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'
    );
    GO
    -- Create a database to be protected by TDE.
    CREATE DATABASE CustRecords ;
    GO
    -- Switch to the new database.
    -- Create a database encryption key, that is protected by the server certificate in the master database. 
    -- Alter the new database to encrypt the database using 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
    

Per ulteriori informazioni, vedere:

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Per spostare un database

Utilizzo di SQL Server Management Studio

  1. In Esplora oggetti fare clic con il pulsante destro del mouse sul database crittografato in precedenza, scegliere Attività e fare clic su Scollega….

    Nella finestra di dialogo Scollega database sono disponibili le opzioni seguenti.

    • Database da scollegare
      Consente di visualizzare i database da scollegare.

    • Nome database
      Consente di visualizzare il nome del database da scollegare.

    • Interrompi connessioni
      Consente di interrompere le connessioni al database specificato.

      [!NOTA]

      Non è possibile scollegare un database con connessioni attive.

    • Aggiorna statistiche
      Per impostazione predefinita, con l'operazione di scollegamento è possibile mantenere eventuali statistiche di ottimizzazione non aggiornate prima di scollegare il database. Per aggiornare le statistiche di ottimizzazione esistenti, fare clic su questa casella di controllo.

    • Mantieni cataloghi full-text
      Per impostazione predefinita, con l'operazione di scollegamento è possibile mantenere eventuali cataloghi full-text associati al database. Per rimuoverli, deselezionare la casella di controllo Mantieni cataloghi full-text. Questa opzione è visualizzata solo quando si aggiorna un database da SQL Server 2005.

    • Stato
      Consente di visualizzare uno degli stati seguenti: Pronto o Non pronto.

    • Messaggio
      Nella colonna Messaggio possono essere visualizzate informazioni sul database simili alle seguenti:

      • Quando un database è coinvolto nella replica, lo Stato è Non pronto e nella colonna Messaggio viene visualizzato Database replicato.

      • Quando un database dispone di una o più connessioni attive, lo Stato è Non pronto e nella colonna Messaggio viene visualizzato Connessioni attive: <number_of_active_connections>, ad esempio Connessioni attive: 1. Prima di poter scollegare il database è necessario disconnettere tutte le connessioni attive selezionando Interrompi connessioni.

      Per ottenere ulteriori informazioni su un messaggio, fare clic sul testo del collegamento ipertestuale per aprire Monitoraggio attività.

  2. Scegliere OK.

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

  4. 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.

  5. Creare una chiave master del database nell'istanza di destinazione di SQL Server. Per ulteriori informazioni, vedere Utilizzo di Transact-SQL di seguito.

  6. Ricreare il certificato del server utilizzando il file di backup del certificato del server originale. Per ulteriori informazioni, vedere Utilizzo di Transact-SQL di seguito.

  7. In Esplora oggetti in SQL Server Management Studio, fare clic con il pulsante destro del mouse sulla cartella Database e selezionare Collega….

  8. Nella finestra di dialogo Collega database, in Database da collegare fare clic su Aggiungi.

  9. Nella finestra di dialogo Individua file di database - server_name selezionare il file di database da collegare al nuovo server e fare clic su OK.

    Nella finestra di dialogo Collega database sono disponibili le opzioni seguenti.

    • Database da collegare
      Consente di visualizzare informazioni sui database selezionati.

    • <nessuna intestazione di colonna>
      Consente di visualizzare un'icona che indica lo stato dell'operazione di collegamento. Le icone possibili sono illustrate di seguito nella descrizione di Stato.

    • Percorso file MDF
      Consente di visualizzare il percorso e il nome del file MDF selezionato.

    • Nome database
      Consente di visualizzare il nome del database.

    • Collega come
      Facoltativamente, è possibile specificare un nome diverso per il database da collegare.

    • Proprietario
      Consente di visualizzare un elenco a discesa di possibili proprietari del database in cui è possibile selezionare un proprietario diverso.

    • Stato
      Consente di visualizzare lo stato del base in base alla tabella seguente.

      Icona

      Testo Stato

      Descrizione

      (Nessuna icona)

      (Nessun testo)

      L'operazione di collegamento non è stata avviata o può essere sospesa per questo oggetto. È il valore predefinito all'apertura della finestra di dialogo.

      Triangolo verde che punta a destra

      In corso

      L'operazione di collegamento è stata avviata ma non ancora completata.

      Segno di spunta verde

      Esito positivo

      L'oggetto è stato collegato.

      Cerchio rosso con croce bianca

      Errore

      Si è verificato un errore durante l'operazione. Il collegamento non è stato completato.

      Cerchio con due quadranti neri a destra e a sinistra e due quadranti bianchi in alto e in basso

      Arrestato

      L'operazione di collegamento non è stata completata perché l'utente ne ha arrestato l'esecuzione.

      Cerchio con freccia curva che punta in senso antiorario.

      È stato eseguito il rollback

      L'operazione di collegamento è stata completata ma ne è stato eseguito il rollback a causa di un errore durante il collegamento di un altro oggetto.

    • Messaggio
      Non viene visualizzato alcun messaggio oppure viene visualizzato il collegamento ipertestuale "Impossibile trovare il file".

    • Aggiungi
      Consente di individuare i file principali del database necessari. Se l'utente seleziona un file con estensione mdf, le informazioni appropriate vengono inserite automaticamente nei rispettivi campi della griglia Database da collegare.

    • Rimuovi
      Consente di rimuovere il file selezionato dalla griglia Database da collegare.

    • Dettagli database " <database_name> "
      Consente di visualizzare i nomi dei file da collegare. Per esaminare o modificare il percorso di un file, fare clic sul pulsante Sfoglia ().

      [!NOTA]

      Se il file non esiste, nella colonna Messaggio verrà visualizzato il testo "File non trovato". Se non rilevato, un file di log può trovarsi in un'altra directory o essere stato eliminato. È necessario aggiornare il percorso del file nella griglia Dettagli database in modo che indichi la posizione corretta oppure rimuovere il file di log dalla griglia. Se non viene rilevato un file di dati con estensione ndf, è necessario aggiornare il percorso nella griglia in modo che indichi la posizione corretta.

    • Nome file originale
      Consente di visualizzare il nome del file collegato appartenente al database.

    • Tipo file
      Indica il tipo di file, ovvero Dati o Log.

    • Percorso file corrente
      Consente di visualizzare il percorso del file di database selezionato. Il percorso può essere modificato manualmente.

    • Messaggio
      Non viene visualizzato alcun messaggio oppure viene visualizzato il collegamento ipertestuale "Impossibile trovare il file".

Utilizzo di Transact-SQL

  1. In Esplora oggetti connettersi a un'istanza del Motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.

    -- Detach the TDE protected database from the source server. 
    USE master ;
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    -- Move or copy the database files from the source server to the same location on the destination server. 
    -- Move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server. 
    -- Create a database master key on the destination instance of SQL Server. 
    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';
    GO
    -- Recreate the server certificate by using the original server certificate backup file. 
    -- The password must be the same as the password that was used when the backup was created.
    
    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '*rt@40(FL&dasl1'
    );
    GO
    -- Attach the database that is being moved. 
    -- The path of the database files must be the location where you have stored the database files.
    CREATE DATABASE [CustRecords] ON 
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )
    FOR ATTACH ;
    GO
    

Per ulteriori informazioni, vedere:

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Vedere anche

Concetti

Collegamento e scollegamento di un database (SQL Server)