Errore 33111 durante il ripristino dei backup da versioni precedenti di Connettore SQL Server per Microsoft Azure Key Vault
Numero KB originale: 4470999
Questo articolo illustra un errore che si verifica quando si tenta di ripristinare un backup di Transparent Data Encryption (TDE) eseguito nei server che usano versioni precedenti di SQL Server Connector per microsoft Azure Key Vault.
Sintomi
Si verificano problemi quando si tenta di ripristinare un backup del database da SQL Server che usa SQL Server Connector per Key Vault 1.0.4.0 o una versione precedente per Connettore SQL Server per Microsoft Azure Key Vault 1.0.5.0.
Si supponga di distribuire le istanze seguenti di Microsoft SQL Server:
SQL Server'istanza
sql1
di ha distribuito SQL Server Connector per Key Vault 1.0.4.0.SQL Server'istanza
sql2
ha SQL Server Connector per Key Vault 1.0.5.0 distribuito.Usare la query seguente per distribuire una chiave asimmetrica in entrambe le
sql1
istanze esql2
dalla stessa origine chiave asimmetrica in Key Vault:CREATE ASYMMETRIC KEY TDE_KEY FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
Se si esamina il valore delle identificazioni personali in entrambi i server, si noterà che le lunghezze dell'identificazione personale sono diverse anche se vengono create dalla stessa origine. L'identificazione personale della versione 1.0.5.0 è più lunga della versione 1.0.4.0.
Esempio di identificazione personale 1.0.4.0:
0x2C5677D76F76D77F80
Esempio di identificazione personale 1.0.5.0:
0x373B314B78E8D59A0925494558FEF14B726216C5
La modifica causa problemi durante le operazioni di backup e ripristino.
Esempio:
Si dispone di un backup del database crittografato da una chiave asimmetrica in Key Vault nell'istanza sql1
di .
L'istanza sql2
ha creato una chiave asimmetrica.
Se si tenta di ripristinare il backup nell'istanza sql2
di , l'operazione ha esito negativo e restituisce un messaggio di errore simile al messaggio seguente:
Msg 33111, Livello 16, Stato 4, LineNumber <>
Impossibile trovare la chiave asimmetrica del server con identificazione personale '0x2C5677D76F76D77F80'.
Note:
La query per recuperare l'identificazione personale di ogni chiave è la seguente:
SELECT thumbprint, * FROM master.sys.asymmetric_keys
La query per recuperare l'identificazione personale di ogni database TDE è la seguente:
SELECT DatabaseName(ddek.database_id) AS DatabaseName, ak.name
AS [Asymmetric key Name], ak.thumbprint FROM
sys.dm_database_encryption_keys ddek INNER JOIN
master.sys.asymmetric_keys ak ON
ak.thumbprint = ddek.encryptor_thumbprint
Causa
È stato introdotto un aggiornamento nella versione 1.0.5.0 di SQL Server Connector per Key Vault che modifica il modo in cui il programma calcola le identificazioni personali. Nella versione 1.0.5.0 questo calcolo corrisponde alla logica usata dal motore di programma per supportare lo scenario di migrazione seguente:
Da: Microsoft SQL Server locale che usa Extensible Key Management (EKM)
A: database SQL di Microsoft Azure che usa il supporto BYOK (Bring Your Own Key) per Transparent Data Encryption (TDE)
A causa di questa modifica, potrebbero verificarsi problemi quando si tenta di ripristinare i backup del database dalla versione 1.0.4.0 o da una versione precedente.
Risoluzione
Copiare il connettore SQL Server per Key Vault 1.0.4.0 o una versione precedente nel server di
sql2
istanza.Eseguire la query seguente nel
sql2
server per modificare laCRYPTOGRAPHIC PROVIDER
versione 1.0.4.0:ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider FROM FILE = 'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.4.0\Microsoft.AzureKeyVaultService.EKM.dll'
Riavviare SQL Server.
Creare una nuova chiave asimmetrica usando
CRYPTOGRAPHIC PROVIDER
1.0.4.0.CREATE ASYMMETRIC KEY TDE_KEY_1040 FROM PROVIDER AzureKeyVaultProvider WITH PROVIDER_KEY_NAME = 'key1', CREATION_DISPOSITION = OPEN_EXISTING
È possibile verificare l'esistenza di entrambe le chiavi asimmetriche usando la query seguente:
SELECT thumbprint,* FROM master.sys.asymmetric_keys
Aggiungere le credenziali all'account di accesso con mapping a chiave asimmetrica (TDE_Login nell'esempio seguente) usando una query simile alla query seguente:
ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
È ora possibile ripristinare il backup.
Eseguire la query seguente su
sql2
per ripristinare laCRYPTOGRAPHIC PROVIDER
versione 1.0.5.0:ALTER CRYPTOGRAPHIC PROVIDER AzureKeyVaultProvider FROM FILE = 'FilePath\FileName\SQL Server Connector for Microsoft Azure Key Vault\1.0.5.0\Microsoft.AzureKeyVaultService.EKM.dll'
Riavviare SQL Server.
Per usare la nuova identificazione personale, eseguire la query seguente usando la stessa chiave asimmetrica o la nuova chiave asimmetrica della versione.
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>