Home > News > Breaking News > SQL Server Backup Encryption

SQL Server Backup Encryption

I database aziendali rappresentano il luogo in cui le informazioni sono memorizzate per guidare i processi produttivi dell’azienda. Tera di dati, decine di database, milioni di righe, l’intera attività dipende da questo e la sicurezza delle informazioni non può più essere un optional, si parla quindi di sicurezza by design e sicurezza by default.

Se gli ambienti sono all-on-premise la protezione dei dati appare più semplice rispetto ad ambienti ibridi o completamente cloud ma cosa succede se i backup dei database sono archiviati off-site o nel cloud? Scenari di questo tipo richiedono qualche precauzione in più, i dati risiedono letteralmente sull’infrastruttura di qualcun altro! Se qualcuno ottenesse l’accesso non autorizzato al sito, potrebbe semplicemente ripristinare una copia dei vostri database da un backup. A che serve, allora, proteggere in modo maniacale il perimetro aziendale se i backup possono essere archiviati all’esterno senza precauzioni? Le pratiche di sicurezza devono essere implementate non solo nell’ambiente di produzione ma anche all’interno della strategia di backup!

In questo articolo parleremo della crittografia dei backup e di come questa funzionalità viene applicata con le ultime versioni di SQL Server.

A partire da SQL Server 2014, SQL Server ha la possibilità di crittografare i dati durante la creazione di un backup. È possibile creare un backup crittografato specificando l’algoritmo di crittografia e il certificato per proteggere la chiave crittografica. Sono supportate tutte le destinazioni di archiviazione, in locale e in Azure.

Gli algoritmi di crittografia supportati in SQL Server 2022 sono:

  • AES 128
  • AES 192
  • AES 256
  • Triple DES

È molto importante eseguire il backup del certificato o della chiave asimmetrica, utilizzato per la crittografia, in un percorso diverso dal file di backup. Senza il certificato o la chiave asimmetrica, non è possibile ripristinare il backup.

Di seguito verranno descritti i passaggi per crittografare i dati durante il backup.

Se non già presente nel master database, è necessario creare una chiave master. La chiave master è una chiave simmetrica utilizzata per proteggere le chiavi private dei certificati e le chiavi asimmetriche presenti nel database. Per maggiori dettagli consultare SQL Server and Database Encryption Keys (Database Engine).

Il seguente frammento di codice T-SQL crea la master key nel database master.

-- Create a database master key
-- The database master key is a symmetric key that is used to protect the private keys
-- of certificates and asymmetric keys that are present in the database
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'SQLProtectionEncryption2023';
GO

Dopo aver creato la master key è necessario creare un certificato o una chiave asimmetrica da utilizzare per la crittografia dei backup. Consiglio di creare certificati o chiavi asimmetriche diverse per il backup di ogni database in modo da aumentare il livello di sicurezza.

Il seguente frammento di codice T-SQL crea il certificato AdventureWorksBackupCertificate specifico per il backup del database AdventureWorks.

-- Create a database certificate for backup
CREATE CERTIFICATE [AdventureWorksBackupCertificate] WITH SUBJECT = 'Certificate for AdventureWorks backup encryption';
GO

Dopo aver creato la master key e il certificato da utilizzare per la crittografia, eseguire il backup di quest’ultimo e posizionarlo all’interno di un’area riservata. Il backup del certificato su file system dedicato ha lo scopo di proteggere i dati da eventuali failure del server SQL.

Eseguiamo il backup del certificato utilizzando il comando BACKUP CERTIFICATE, il nome del certificato per il database AdventureWorks è AdventureWorksBackupCertificate, il backup verrà salvato in una posizione protetta su unità remota. Esporteremo anche il file della chiave privata (.key) che crittograferà il file del certificato, il tutto protetto da password.

-- Export the backup certificate to a file
BACKUP CERTIFICATE [AdventureWorksBackupCertificate]
  TO FILE = 'X:\SQL\DBs\Backup\Certificate\AdventureWorksBackupCertificate.cert'
  WITH PRIVATE KEY (
                     FILE = 'X:\SQL\DBs\Backup\Certificate\AdventureWorksBackupCertificate.key'
                     ,ENCRYPTION BY PASSWORD = 'royalbreeze489'
                   );
GO

Siamo ora in grado di eseguire il backup del database AdventureWorks con i protocolli di crittografia abilitati. Consiglio di scegliere l’algoritmo di crittografia AES_256. Il backup verrà quindi crittografato con il certificato AdventureWorksBackupCertificate che abbiamo appena creato.

BACKUP DATABASE [AdventureWorks2022]
  TO DISK = N'C:\SQL\DBs\Backup\AdventureWorks2022-with-encryption.bak'
  WITH COMPRESSION, ENCRYPTION(ALGORITHM = AES_256, SERVER CERTIFICATE = [AdventureWorksBackupCertificate]);
GO

Ripristino del backup crittografato

Per ripristinare un backup crittografato non è necessario specificare alcun parametro di crittografia. È necessario che la chiave asimmetrica o il certificato utilizzato per crittografare il file di backup sia disponibile nell’istanza in cui viene eseguito il ripristino. In aggiunta, l’account utente che esegue il ripristino deve disporre delle autorizzazioni VIEW DEFINITION per il certificato o la chiave.

La sequenza delle operazioni da eseguire per ripristinare un backup crittografato in una nuova posizione è la seguente:

  • Backup del certificato (su file) nel server SQL precedente
  • Creazione della master key, se non già presente, nel server SQL in cui si desidera ripristinare il backup del database
  • Ripristino del certificato dal backup su file importato in un percorso nel nuovo server SQL in cui si desidera ripristinare il backup del database
  • Ripristino del database nel nuovo server SQL

Non vi resta che aggiungere la crittografia nella vostra strategia di backup, chi utilizza SQL Server Maintenance Plan può partire da qui.

Chi è Sergio Govoni

Sergio Govoni è laureato in Scienze e Tecnologie Informatiche. Da oltre 16 anni lavora presso una software house che produce un noto sistema ERP, distribuito a livello nazionale ed internazionale, multi azienda client/server su piattaforma Win32. Attualmente si occupa di progettazione e analisi funzionale, coordina un team di sviluppo ed è responsabile tecnico di prodotto. Lavora con SQL Server dalla versione 7.0 e si è occupato d'implementazione e manutenzione di database relazionali in ambito gestionale, ottimizzazione delle prestazioni e problem solving. Nello staff di UGISS si dedica alla formazione e alla divulgazione in ambito SQL Server e tecnologie a esso collegate, scrivendo articoli e partecipando come speaker ai workshop e alle iniziative del primo e più importante User Group Italiano sulla tecnologia SQL Server. Ha conseguito la certificazione MCP, MCTS SQL Server. Per il suo contributo nelle comunità tecniche e per la condivisione della propria esperienza con altri, dal 2010 riceve il riconoscimento SQL Server MVP (Microsoft Most Valuable Professional). Nel corso dell'anno 2011 ha contribuito alla scrittura del libro SQL Server MVP Deep Dives Volume 2 (http://www.manning.com/delaney/).

Leggi Anche

1nn0va Saturday 2024 – Agenda pubblicata!

L’agenda dell’evento 1nn0va Saturday 2024 è stata pubblicata ed è disponibile qui. Ospitato nelle aule …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

sixty one − fifty two =

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.