Chiavi di crittografia del database e di SQL Server (Motore di database)

SQL Server consente di utilizzare chiavi di crittografia per proteggere dati, credenziali e informazioni di connessione archiviati in un database server. SQL Server dispone di due tipi di chiavi: simmetrico e asimmetrico. Le chiavi simmetriche utilizzano la stessa password per crittografare e decrittografare i dati. Le chiavi asimmetriche utilizzano una password per crittografare i dati (detta chiave pubblica) e un'altra per decrittografare i dati (detta chiave privata).

In SQL Server, le chiavi di crittografia sono costituite da una combinazione di chiavi pubbliche, private e simmetriche utilizzate per proteggere dati riservati. La chiave simmetrica viene creata durante l'inizializzazione SQL Server quando si avvia per la prima volta l'istanza SQL Server. La chiave è utilizzata da SQL Server per crittografare dati riservati archiviati in SQL Server. Le chiavi pubblica e privata vengono create dal sistema operativo e sono utilizzate per proteggere la chiave simmetrica. Per ogni istanza SQL Server che contiene dati riservati in un database viene creata una coppia di chiavi pubblica e privata.

Applicazioni per chiavi del SQL Server e del database

In SQL Server esistono due applicazioni principali per le chiavi: una chiave master di servizio (SMK) generata su e per un'istanza SQL Server e una chiave master del database (DMK) utilizzata per un database.

La SMK viene generata automaticamente la prima volta che viene avviata e utilizzata l'istanza SQL Server per crittografare la password, le credenziali o la chiave master del database di un server collegato. La SMK viene crittografata usando la chiave locale del computer che utilizza l'API Windows Data Protection (DPAPI). Il DPAPI utilizza una chiave derivata dalle credenziali Windows dell'account di servizio SQL Server e le credenziali del computer. La chiave master del servizio può essere decrittografata solo dall'account del servizio con cui è stata creata o da un'entità autorizzata ad accedere alle credenziali della macchina.

La chiave master del database è una chiave simmetrica utilizzata per proteggere le chiavi private dei certificati e le chiavi asimmetriche presenti nel database. Si può utilizzare anche per crittografare dati, ma ha limitazioni di lunghezza che la rendono meno pratica per i dati rispetto all'utilizzo di una chiave simmetrica.

Al momento della creazione, la chiave master viene crittografata con l'algoritmo Triple DES e una password specificata dall'utente. Per attivare la decrittografia automatica della chiave master, viene crittografata una copia della chiave utilizzando la SMK. Viene archiviata in entrambi i database dove è utilizzata e nel database master di sistema.

La copia della DMK archiviata nel database master di sistema viene aggiornata automaticamente ogni qualvolta la DMK è modificata. Tuttavia, questa impostazione predefinita può essere modificata utilizzando l'opzione DROP ENCRYPTION BY SERVICE MASTER KEY dell'istruzione ALTER MASTER KEY. Per aprire una DMK non crittografata con la chiave master del servizio, è necessario utilizzare l'istruzione OPEN MASTER KEY e una password.

Gestione delle chiavi del SQL Server e del database

La gestione delle chiavi di crittografia comprende la creazione di nuove chiavi di database, la creazione di un backup delle chiavi server e del database e informazioni su quando e come ripristinare, eliminare o modificare le chiavi.

Per la gestione delle chiavi simmetriche è possibile utilizzare gli strumenti inclusi in SQL Server per eseguire le operazioni seguenti:

  • Backup di una copia delle chiavi del server e del database per poterle utilizzare per il recupero dell'installazione di un server di report o come parte di una migrazione pianificata.

  • Ripristino di una chiave precedentemente salvata in un database. Consente a una nuova istanza del server l'accesso a dati esistenti che non erano stati crittografati in origine.

  • Eliminazione dei dati crittografati in un database nel caso molto improbabile in cui non sia più possibile accedere a tali dati.

  • Ricreazione delle chiavi e riesecuzione della crittografia dei dati nel caso molto improbabile in cui la chiave risulti compromessa. Come procedura di protezione consigliata, ricreare le chiavi periodicamente, ad esempio dopo qualche mese, per proteggere il server da attacchi informatici mirati alla decrittazione delle chiavi.

  • Aggiunta o rimozione di un'istanza del server da una distribuzione del server con scalabilità orizzontale in cui più server condividono sia un unico database sia la chiave che consente la crittografia reversibile per quel database.

Importanti informazioni relative alla protezione

L'accesso a oggetti protetti dalla chiave master del servizio richiede l'account di servizio SQL Server utilizzato per creare la chiave o l'account del computer. In altre parole, il computer è legato al sistema sul quale la chiave è stata creata. È possibile modificare l'account di servizio SQL Servero l'account del computer senza perdere l'accesso alla chiave. Tuttavia, se si modificano entrambi, si perderà l'accesso alla chiave master del servizio. Se si verifica tale perdita senza disporre di uno di questi due elementi, non sarà possibile decrittografare i dati e gli oggetti crittografati utilizzando la chiave originale.

Non è possibile ripristinare connessioni protette con la chiave master del servizio se non si dispone della stessa.

L'accesso a oggetti e dati protetti con la chiave master del database richiede solo la password utilizzata per proteggere la chiave.

Nota di attenzioneAttenzione

Se si perde ogni accesso alle chiavi descritte in precedenza, si perderà l'accesso agli oggetti, alle connessioni e ai dati protetti da quelle chiavi. È possibile ripristinare la chiave master del servizio, come viene descritto nei collegamenti qui riportati, oppure è possibile ritornare al sistema di crittografa originale per recuperare l'accesso. Non è possibile recuperare l'accesso in altro modo.

Contenuto della sezione