次の方法で共有


古いバージョンの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の同じ非対称キー ソースの両方sql1sql2インスタンスに非対称キーをデプロイします。

    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

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

例:

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

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

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

Msg 33111、レベル 16、状態 4、Line <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

原因

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

From: 拡張キー管理 (EKM) を使用するオンプレミスの Microsoft SQL Server

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

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

解決方法

  1. Key Vault 1.0.4.0 以前のバージョンの SQL Server コネクタをインスタンス サーバーに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. 1.0.4.0 を使用 CRYPTOGRAPHIC PROVIDER して新しい非対称キーを作成します。

        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>