Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Crittografia del backup del database di SQL Server

Per gestire la sicurezza dei dati di cui è stato eseguito il backup dal file system come file di backup del database, SQL Server fornisce la funzionalità di crittografia del backup. In questo articolo parleremo delle opzioni di crittografia disponibili in SQL Server per i backup dei database. Esamineremo più da vicino i dettagli sull'utilizzo, i vantaggi e le pratiche consigliate per la crittografia del backup del database di SQL Server durante il processo di backup.

Cos'è la crittografia del backup del database?

La necessità di mantenere i dati al sicuro cresce notevolmente. Insieme ai dati, devi assicurarti che anche i file di backup del database siano protetti, in particolare quelli su un file system del server. I dati all'interno dei file di backup nativi di SQL Server vengono archiviati come testo normale nel file system. Puoi leggerlo senza alcuno sforzo utilizzando un editor di testo.
A seconda dei tipi di dati utilizzati nelle tabelle, alcuni dati sono molto più facili da leggere rispetto ad altri. L'immagine seguente mostra il file di backup aperto nell'editor di testo del Blocco note:

Come puoi vedere, il codice T-SQL è visibile e di facile lettura. Tuttavia, una volta creato il backup con una crittografia, nessuno avrà la possibilità di mettersi sotto il cofano.

L'immagine seguente mostra lo stesso AdventureWorks2014.bak con una crittografia.

A partire da SQL Server 2014, il motore di database può crittografare i dati durante la creazione di un file di backup. È possibile specificare l'algoritmo di crittografia e il dispositivo di crittografia, un certificato o una chiave asimmetrica, durante la creazione di un backup. La funzionalità di crittografia del backup migliora la sicurezza e funziona in qualsiasi dominio in cui è possibile utilizzare SQL Server stesso.

Cosa è richiesto?

Per crittografare il backup del database, è necessario specificare un algoritmo di crittografia e un encryptor. Sono disponibili due opzioni di crittografia supportate:

  • Algoritmo di crittografia:AES_128, AES_192, AES_256 e Triple_DES_3Key
  • Encryptor:un certificato o una chiave asimmetrica

Se perdi accidentalmente il certificato o la chiave asimmetrica, non avrai mai la possibilità di ripristinare il file di backup. Pertanto, è molto importante conservare il certificato o la chiave asimmetrica in un luogo sicuro.

Vantaggi della crittografia del backup del database

  • Aiuta a proteggere i dati.
  • Può essere applicato ai database crittografati con l'aiuto della Transparent Data Encryption (TDE).
  • Supportato per i backup creati dal backup gestito di SQL Server in Microsoft Azure che fornisce ulteriore sicurezza per i backup fuori sede.
  • Supporta numerosi algoritmi di crittografia fino a AES 256 bit. Ciò ti consente di selezionare un algoritmo che soddisfi le tue esigenze.
  • Possibile integrare le chiavi di crittografia con i provider di Extended Key Management (EKM).

Modifiche alle tabelle di sistema

Durante la creazione del backup crittografato, alcune informazioni vengono registrate nel MSDB database di sistema:l'algoritmo della chiave, il tipo di crittografia e l'identificazione personale di crittografia utilizzati.
Il set di backup la tabella contiene informazioni per ogni set di backup. Un set di backup contiene il backup per una singola operazione di backup riuscita.
Le seguenti colonne:key_algorithm , encryptor_thumprint , tipo_crittore di questo DMV archivia le informazioni sul fatto che il backup è crittografato, il tipo di crittografia e l'identificazione personale della crittografia.

SELECT TOP 5
    name,
    key_algorithm,
    encryptor_thumbprint,
    encryptor_type
FROM msdb.dbo.backupset AS backupset with (NOLOCK)
WHERE type IN ('D', 'I') AND database_name = 'AdventureWorks2014'
ORDER BY backupset.backup_start_date  DESC
GO

Ecco cosa vedrai:

Per ottenere maggiori informazioni sulla tabella backupset, leggere la seguente pagina della documentazione MSDN:backupset (Transact-SQL)

Il backupmediaset la tabella contiene informazioni per ogni set di supporti di backup. La colonna is_encrypted indica se il backup è crittografato o meno. 0 – non crittografato e 1 – crittografato. Inizialmente, questo valore è impostato su NULL che indica backupmediaset non crittografato.

SELECT TOP 5
    media_set_id,
    is_encrypted, 
    is_compressed
FROM msdb.dbo.backupmediaset AS mediaset with (NOLOCK)
ORDER BY mediaset.media_set_id DESC
GO

Il set di risultati:

Metodi di crittografia del backup del database

1. Con l'aiuto di dbForge Studio per SQL Server

È possibile creare la crittografia del backup del database con l'aiuto di SSMS, ma personalmente ho preferito bForge Studio per SQL Server, un potente IDE per la gestione, l'amministrazione, lo sviluppo, il reporting dei dati e l'analisi di SQL Server. Questo IDE è come un coltello svizzero per gli sviluppatori di database. Lo strumento fornisce funzionalità essenziali racchiuse in una GUI ben progettata e intuitiva. Per conoscere le funzionalità chiave, vedere il video introduttivo di dbForge Studio per SQL Server – Panoramica (04:03 min):

Dopo aver scaricato e installato lo strumento, è necessario creare la connessione al database.

Si noti che la funzionalità di crittografia del backup è stata introdotta in SQL Server 2014. SQL Server Express non supporta la crittografia durante il backup.

1. Dopo esserti connesso a un'istanza di SQL Server richiesta, in Esplora database , fai clic sul nome del server per espandere la struttura del server.

2. Fare clic con il pulsante destro del mouse su un database richiesto, scegliere Attività, quindi fare clic su Backup . Viene visualizzata la finestra di dialogo Backup database.

Nella Connessione casella di riepilogo, controllare il nome della connessione. È possibile selezionare facoltativamente una connessione diversa dall'elenco.

3. Fare clic su Avanti per procedere con Opzioni multimediali .

L'opzione di crittografia è disabilitata se si seleziona di aggiungere l'opzione del set di backup esistente nella pagina Opzioni supporto della procedura guidata Backup database. Scegli il backup su un nuovo set di supporti e cancella tutti i set di backup esistenti.
Crea il certificato/la chiave prima di avviare il processo. Il certificato o la chiave asimmetrica creata prima di avviare la procedura guidata del database di backup verranno elencati nell'elenco a discesa.

Seleziona Esegui il backup su un nuovo set di supporti e cancella tutti i set di backup esistenti opzione per creare un nuovo backup. Inserisci un nome nel Nome del set di supporti casella di testo e, facoltativamente, descrivi il set di supporti nella Descrizione del set di supporti casella di testo.

4. Fare clic su Avanti per procedere con Opzioni di backup .

In questa pagina, seleziona l'opzione Crittografa backup. Selezionare l'algoritmo e il certificato o la chiave asimmetrica. Fai clic su Backup . Il processo richiede diversi secondi nel mio caso.

2. Utilizzo di istruzioni Transact-SQL

Utilizzeremo il Bdatabase di ACKUP per creare un backup del database e il BACKUP LOG per creare un file di backup del registro delle transazioni.

Backup completo del database

Questo tipo di backup esegue il backup dell'intero database. Include una parte del registro delle transazioni in modo che l'intero database possa essere ripristinato dopo il ripristino di un backup completo del database.

Il codice seguente crea un database completo crittografato backup nella posizione fornita utilizzando il certificato e l'algoritmo di crittografia specificati.

BACKUP DATABASE AdventureWorks2014
TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014.bak'
WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Full',
    FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5, COMPRESSION,
ENCRYPTION
(
    ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
)
GO

Nota:se non è mai stato eseguito il backup del certificato utilizzato per la crittografia, al completamento del backup viene visualizzato il seguente avviso. Assicurati di eseguire un backup del certificato insieme alla chiave privata associata al certificato:

Avviso :Non è stato eseguito il backup del certificato utilizzato per crittografare la chiave di crittografia del database. È necessario eseguire immediatamente il backup del certificato e della chiave privata associata al certificato. Se il certificato diventa non disponibile o se devi ripristinare o collegare il database su un altro server, devi disporre di backup sia del certificato che della chiave privata, altrimenti non sarai in grado di aprire il database.

Backup del database differenziale

Durante la creazione di questo tipo di backup, il backup del database o del file è costituito solo dalle parti del database o del file modificate dall'ultimo backup completo. Inoltre, questo tipo di backup di solito occupa meno spazio di un backup completo.

Il codice seguente crea un database differenziale crittografato backup nella posizione fornita utilizzando il certificato e l'algoritmo di crittografia specificati.

BACKUP DATABASE AdventureWorks2014
TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak'
WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Differential',
    FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5,
 COMPRESSION, DIFFERENTIAL,
ENCRYPTION
(
    ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
)
GO

Backup del registro delle transazioni del database

Il database di SQL Server contiene uno o più file di registro delle transazioni, oltre ai file di dati, che registrano tutte le transazioni e le modifiche al database apportate da ciascuna transazione. Le informazioni sulla transazione vengono raccolte solo nei database in cui la modalità di ripristino del database è impostata su pieno recupero o registrato in blocco recupero.

Il codice seguente crea il registro delle transazioni del database crittografato backup nella posizione fornita utilizzando il certificato e l'algoritmo di crittografia specificati.

BACKUP LOG AdventureWorks2014
TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_LOG.bak'
WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, TLog',
    FORMAT, INIT, SKIP, STATS = 5, COMPRESSION, ENCRYPTION
(
    ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
)
GO

3. Utilizzo di PowerShell

SQL Server 2014 consente di eseguire il backup del database utilizzando Windows Powershell. Il codice seguente crea le opzioni di crittografia e lo utilizza come valore di parametro nel comando Backup-SqlDatabase:

$encryptionOption=New-SqlBackupEncryptionOption –Algorithm Aes256 –EncryptorType ServerCertificate –EncryptorName “Cert1”
Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014” –BackupFile “D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak” –CompressionOption On –EncryptionOption $encryptionOption

Confrontando gli approcci sopra menzionati, non ci sono dubbi sul fatto che la creazione di backup di database crittografati sia un'operazione abbastanza semplice quando si dispone dello strumento giusto, come dbForge Studio per SQL Server da Devart.

Lettura aggiuntiva

Il mio amico, Pinal Dave – appassionato di tecnologia SQL Server, consulente indipendente, autore di vari libri su SQL Server e corsi Pluralsight, ha scritto un articolo eccellente, che ti consiglierei di leggere ulteriormente:SQL SERVER – A Practical Use of Backup Encryption