Sql-Server

Azure Key Vault 的 SQL 連接器 - 不能使用多個 Key Vault

  • August 27, 2019

我正在使用 SQL Server 2016 Enterprise Edition 和用於 Azure Key Vault 的 SQL 連接器。我正在嘗試將多個 Key Vault 附加到我的 SQL 實例,但它不起作用。

按照這些說明設置 EKM 提供程序並創建憑據,從非對稱密鑰創建新的數據庫加密密鑰等,用於第一個密鑰庫 - testkeyvault1。我正在嘗試使用為第二個密鑰庫配置的第二個憑據重複這些相同的操作 -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 中打開一個新選項卡解決了這個問題。我猜在創建憑據時,它似乎“粘”在創建它的選項卡上,即使在同一個選項卡中創建和綁定第二個憑據也是如此。在新選項卡中執行相同的命令有效。

引用自:https://dba.stackexchange.com/questions/246307