SQL Server 2016 Enterprise EditionとAzure Key Vault用SQLコネクタを使用しています。 SQLインスタンスに複数のKey Vaultをアタッチしようとしていますが、機能しません。
最初に、EKMプロバイダーをセットアップして資格情報を作成し、非対称キーから新しいデータベース暗号化キーを作成するなど、 これらの手順 を実行しましたキーコンテナー-_testkeyvault1
_。 2番目のキーコンテナーに構成されている2番目の資格情報を使用して、これらの同じアクションを繰り返します-_testkeyvault2
_
ただし、次のエラーが発生し続けます。
メッセージ33049、レベル16、状態2、行70名前が「test2rsakey0」のキーがプロバイダーに存在しないか、アクセスが拒否されました。プロバイダーエラーコード:3112。(プロバイダーエラー-説明はありません。詳細については、EKMプロバイダーにお問い合わせください)
SQL Serverは明らかに間違ったキーコンテナーを調べています。イベントビューアを見ると、これも表示されます。
_Vault Name: testkeyvault1.vault.Azure.net
Operation: getKeyByName
Key Name: test2rsakey0
Message: [error:112, info:404, state:0] The server responded 404, because the key name was not found. Please make sure the key name exists in your vault.
_
最初に_testkeyvault2
_を追加し、次に_testkeyvault1
_のプロセスを繰り返すと、結果が逆になります。したがって、SQLコネクタは最初に構成されたキーコンテナーでのみキーを検索するようです。レジストリをチェックして、次のパスにある両方のキーコンテナーのキーが存在することを確認しました:_Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\
_
私たちのサーバーに保存されているデータベースを暗号化するために、独自のキーコンテナーへのアクセスを提供したいという顧客がいるため、複数のキーコンテナーを使用できるようにする必要があります。
これを回避する方法はありますか?複数のキーコンテナーを使用したり、顧客にBYOKモデルを許可したりするための代替ソリューションはありますか?
愚かなことに、SQL Studioで新しいタブを開くと問題が修正されました。クレデンシャルを作成するとき、同じタブ内で2つ目のクレデンシャルを作成してバインドした場合でも、クレデンシャルが作成されたタブに「固執」しているようです。同じコマンドを新しいタブで実行するとうまくいきました。