In SQL Server, le chiavi sono un concetto fondamentale per garantire l'integrità dei dati, come visto nei passati articoli a livello di tabelle. Esiste però quando si parla di chiave (key) il concetto di Master Key o Database Master Key che spesso può suscitare confusione, anche per il nome scelto dal team di Microsoft.
Master key
Le caratteristiche della master key
- Livello: database
- Tipo: Simmetrica
- Scopo: protezione di altre chiavi
- Dimensione: fino a 255 byte.
A cosa serve la master key in SQL Server?
- Chiavi private di certificati. I certificati vengono utilizzati per autenticare gli utenti e i computer. La master key protegge le chiavi private dei certificati, in modo che solo gli utenti autorizzati possano utilizzarli.
- Chiavi private di chiavi asimmetriche. Le chiavi asimmetriche vengono utilizzate per crittografare e de-crittografare i dati. La master key protegge le chiavi private delle chiavi asimmetriche, in modo che solo gli utenti autorizzati possano utilizzarle.
- Dati sensibili. La master key può essere utilizzata per crittografare i dati sensibili, come dati finanziari o dati di clienti. Questo aiuta a proteggere i dati da accessi non autorizzati.
Come creare una master key
- ALGORITHM. L'algoritmo di crittografia utilizzato per proteggere la master key. L'algoritmo predefinito è AES_256.
- PASSWORD. La password utilizzata per proteggere la master key.
CREATE MASTER KEY ALGORITHM = AES_256 WITH PASSWORD = 'MySecurePassword';
Come proteggere la master key
È importante proteggere la password della master key con cura. La password dovrebbe essere lunga e complessa e non dovrebbe essere condivisa con nessuno. È anche consigliabile archiviare la password in un luogo sicuro, come ad esempio un'unità di archiviazione cloud crittografata.
Conclusione e best practices
- Chiave primaria o esterna (Primary Key / Foreign Key): quando si parla di chiavi di protezione relative a tabelle e relazioni tra tabelle
- Database di sistema “master”: la DMK non è chiave di protezione di questo specifico database, bensì la chiave principale (master) di tutte le chiavi di sicurezza di ciascun database. Non fa quindi riferimento in particolare al database “master”.