次の方法で共有


以前のバージョンのSQL Server コネクタ for Microsoft Azure Key Vaultからバックアップを復元するときのエラー 33111

元の KB 番号: 4470999

この記事では、Microsoft Azure Key Vault に対して古いバージョンの SQL Server Connector を使用するサーバーで行われた Transparent Data Encryption (TDE) バックアップを復元しようとすると発生するエラーについて説明します。

現象

Sql Server Connector for Key Vault 1.0.4.0 以前のバージョンを使用する SQL Server から SQL Server コネクタ for Microsoft Azure Key Vault 1.0.5.0 にデータベース バックアップを復元しようとすると、問題が発生します。

Microsoft SQL Server の次のインスタンスをデプロイするとします。

  • SQL Server インスタンス sql1 には、SQL Server Connector for Key Vault 1.0.4.0 がデプロイされています。

  • SQL Server インスタンス sql2 には、SQL Server Connector for Key Vault 1.0.5.0 がデプロイされています。

  • 次のクエリを使用して、Key Vault 内の同じ非対称キー ソースの sql1 インスタンスと sql2 インスタンスの両方に非対称キーをデプロイします。

    CREATE ASYMMETRIC KEY TDE_KEY 
    FROM PROVIDER AzureKeyVaultProvider 
    WITH PROVIDER_KEY_NAME = 'key1', 
    CREATION_DISPOSITION = OPEN_EXISTING
    

両方のサーバーで拇印の値を確認すると、同じソースから作成された拇印の長さが異なることがわかります。 バージョン 1.0.5.0 の拇印がバージョン 1.0.4.0 より長くなっています。

1.0.4.0 拇印の例:

0x2C5677D76F76D77F80

1.0.5.0 拇印の例:

0x373B314B78E8D59A0925494558FEF14B726216C5

この変更により、バックアップ操作と復元操作中に問題が発生します。

例:

sql1 インスタンスの Key Vault の非対称キーによって暗号化されたデータベース バックアップがあります。

sql2 インスタンスには非対称キーが作成されています。

sql2 インスタンスでバックアップを復元しようとすると、操作は失敗し、次のメッセージのようなエラー メッセージが返されます。

メッセージ 33111、レベル 16、状態 4、行 <LineNumber>

拇印 '0x2C5677D76F76D77F80' のサーバー非対称キーが見つかりません。

注:

各キーの拇印を取得するクエリは次のとおりです。

SELECT thumbprint, * FROM master.sys.asymmetric_keys

各 TDE データベースの拇印を取得するクエリは次のとおりです。

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

原因

SQL Server Connector for Key Vault のバージョン 1.0.5.0 で更新プログラムが導入され、プログラムによる拇印の計算方法が変更されました。 バージョン 1.0.5.0 では、この計算は、次の移行シナリオをサポートするためにプログラム エンジンによって使用されるロジックと一致します。

From: Extensible Key Management (EKM) を使用するオンプレミスの Microsoft SQL Server

To: Transparent Data Encryption (TDE) に Bring Your Own Key (BYOK) サポートを使用する Microsoft Azure SQL Database

この変更のため、バージョン 1.0.4.0 以前のバージョンからデータベース バックアップを復元しようとすると、問題が発生する可能性があります。

解決方法

  1. Sql Server Connector for Key Vault 1.0.4.0 以前のバージョンを sql2 インスタンス サーバーにコピーします。

  2. sql2 サーバーで次のクエリを実行して、CRYPTOGRAPHIC PROVIDERをバージョン 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. SQL Server を再起動してください。

    2. 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. 次のクエリを使用して、両方の非対称キーの存在を確認できます。

    SELECT thumbprint,* FROM master.sys.asymmetric_keys
    
  4. 次のクエリのようなクエリを使用して、非対称キー マップログイン (次の例TDE_Login) に資格情報を追加します。

    ALTER LOGIN [Contoso\DomainUser] DROP CREDENTIAL sysadmin_ekm_cred; 
    ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
    
  5. これで、バックアップを復元できるようになります。

  6. sql2で次のクエリを実行して、CRYPTOGRAPHIC PROVIDERをバージョン 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. SQL Server を再起動してください。

  8. 新しい拇印を使用するには、同じ非対称キーまたは新しいバージョンの非対称キーを使用して、次のクエリを実行します。

    ALTER DATABASE ENCRYPTION KEY
    ENCRYPTION BY SERVER ASYMMETRIC KEY <KeyName_1.0.5.0_version>