CREATE MASTER KEY (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Crea una chiave master del database nel database.

Importante

  • È consigliabile eseguire il backup della chiave master usando BACKUP MASTER KEY e archiviarlo in un percorso esterno sicuro.
  • In SQL Server è anche consigliabile eseguire il backup della chiave master del servizio usando BACKUP SERVICE MASTER KEY e archiviarlo in un percorso esterno sicuro.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]

Argomenti

PASSWORD ='password'

Password usata per crittografare la chiave master nel database. password deve soddisfare i requisiti per i criteri password di Windows del computer che esegue l'istanza di SQL Server. L'uso di password è facoltativo nel database SQL e in Azure Synapse Analytics.

Osservazioni:

La chiave master del database è una chiave simmetrica usata per proteggere le chiavi private di certificati e chiavi asimmetriche presenti nel database e nei segreti nelle credenziali con ambito database. Al momento della creazione, la chiave master viene crittografata con l'algoritmoAES_256 e una password specificata dall'utente. In SQL Server 2008 (10.0.x) e SQL Server 2008 R2 (10.50.x), viene usato l'algoritmo Triple DES. Per abilitare la decrittografia automatica della chiave master, una copia della chiave viene crittografata usando la chiave master del servizio e archiviata sia nel database sia in master. In genere, la copia archiviata in master viene aggiornata in modo automatico ogni volta che la chiave master viene modificata. È possibile modificare questa impostazione predefinita usando l'opzione DROP ENCRYPTION BY SERVICE MASTER KEY dell'istruzione ALTER MASTER KEY. Una chiave master non crittografata dalla chiave master del servizio deve essere aperta usando l'istruzione OPEN MASTER KEY e una password.

La colonna is_master_key_encrypted_by_server della vista del catalogo sys.databases in master indica se la chiave master del database è crittografata tramite la chiave master del servizio.

Le informazioni sulla chiave master del database sono visibili nella vista del catalogo sys.symmetric_keys.

Per SQL Server e Parallel Data Warehouse, la chiave master in genere è protetta dalla chiave master del servizio e da almeno una password. Nel caso in cui il database venga fisicamente spostato in un server diverso (log shipping, ripristino di backup e così via), il database conterrà una copia della chiave master crittografata dalla chiave master del servizio server originale (a meno che la crittografia non sia stata rimossa in modo esplicito tramite ALTER MASTER KEY DDL) e una copia crittografata da ogni password specificata durante le operazioni CREATE MASTER KEY o ALTER MASTER KEY DDL successive. Per ripristinare la chiave master e tutti i dati crittografati usando la chiave master come radice nella gerarchia di chiavi dopo lo spostamento del database, l'utente dovrà usare l'istruzione OPEN MASTER KEY con una delle password usate per proteggere la chiave master, ripristinare un backup della chiave master o ripristinare un backup della chiave master del servizio originale nel nuovo server.

Per database SQL e Azure Synapse Analytics, la protezione password non è considerata un meccanismo di sicurezza per evitare una perdita di dati in situazioni in cui il database può essere spostato da un server a un altro, poiché la protezione della chiave master del servizio nella chiave master viene gestita dalla piattaforma Microsoft Azure. La password della chiave master è quindi facoltativa nel database SQL e in Azure Synapse Analytics.

Per database SQL, la chiave master del database può essere creata automaticamente per proteggere i segreti nelle credenziali con ambito database usate per il controllo e altre funzionalità che richiedono credenziali con ambito database per l'autenticazione a una risorsa esterna, ad esempio un account Archiviazione di Azure. La chiave master viene creata con una password complessa selezionata in modo casuale. Gli utenti non possono creare la chiave master in un database logico master . La password della chiave master è sconosciuta a Microsoft e non è individuabile dopo la creazione. Per questo motivo, è consigliabile creare una chiave master del database prima di creare credenziali con ambito database.

Le chiavi master del servizio e del database vengono protette mediante l'algoritmo AES-256.

Autorizzazioni

È richiesta l'autorizzazione CONTROL per il database.

Esempi

Usare l'esempio seguente per creare una chiave master del database in un database. La chiave viene crittografata usando una password.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO

Verificare la presenza della nuova chiave, ##MS_DatabaseMasterKey##:

SELECT * FROM sys.symmetric_keys;
GO