web-dev-qa-db-ja.com

Azure Key VaultのSQLコネクタ-複数のKey Vaultを使用することはできません

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モデルを許可したりするための代替ソリューションはありますか?

1
blizz

愚かなことに、SQL Studioで新しいタブを開くと問題が修正されました。クレデンシャルを作成するとき、同じタブ内で2つ目のクレデンシャルを作成してバインドした場合でも、クレデンシャルが作成されたタブに「固執」しているようです。同じコマンドを新しいタブで実行するとうまくいきました。

0
blizz