Condividi tramite


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 e sql2 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

  1. Copiare il connettore SQL Server per Key Vault 1.0.4.0 o una versione precedente nel server di sql2 istanza.

  2. Eseguire la query seguente nel sql2 server per modificare la CRYPTOGRAPHIC 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'
    
    1. Riavviare SQL Server.

    2. 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
      
  3. È possibile verificare l'esistenza di entrambe le chiavi asimmetriche usando la query seguente:

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. 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;
    
  5. È ora possibile ripristinare il backup.

  6. Eseguire la query seguente su sql2 per ripristinare la CRYPTOGRAPHIC 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'
    
  7. Riavviare SQL Server.

  8. 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>