使用 Azure Key Vault 設定 SQL Server TDE 可延伸金鑰管理
適用於:SQL Server
在本文中,您將安裝及設定適用於 Azure Key Vault 的 SQL Server 連接器。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
從 SQL Server 2022 (16.x) Cumulative Update 12 開始,使用 Azure Key Vault (AKV) 的可延伸金鑰管理可用於 Linux 上的 SQL Server 環境。 請遵循相同的指示,但略過步驟 3 和 4。
必要條件
在開始搭配 SQL Server 執行個體使用 Azure Key Vault 前,請確認已符合下列必要條件:
您必須擁有 Azure 訂用帳戶。
建立 Microsoft Entra 租用戶。
檢閱具備 Azure Key Vault (SQL Server) 的 EKM,以熟悉使用 Azure Key Vault 的可延伸金鑰管理 (EKM) 儲存體主體。
可以修改 SQL Server 電腦上的登錄。
根據正在執行的 SQL Server 版本安裝 Visual Studio C++ 可轉散發套件版本:
SQL Server 版本 Visual Studio C++ 可轉散發套件版本 2008、2008 R2、2012、2014 適用於 Visual Studio 2013 的 Visual C++ 可轉散發套件 2016、2017、2019、2022 適用於 Visual Studio 2015 的 Visual C++ 可轉散發套件 如果您計劃在防火牆後或利用 Proxy 伺服器來使用適用於 Microsoft Azure Key Vault 的 SQL Server 連接器,請熟悉在防火牆後存取 Azure Key Vault。
注意
在 SQL Server 2022 (16.x) CU 14 和更新版本中,Linux 上的 SQL Server 支援使用 Azure Key Vault 的 TDE 可延伸金鑰管理。 本指南中的步驟 3 和 4 不需要 Linux 上的 SQL Server。
步驟 1:設定 Microsoft Entra 服務主體
若要將 SQL Server 執行個體存取權限授與 Azure Key Vault,您需要 Microsoft Entra ID 中的服務主體帳戶。
登入 Azure 入口網站並執行下列任一步驟:
選取 [Microsoft Entra ID] 按鈕。
選取 [更多服務],然後在 [所有服務] 窗格中鍵入 [Microsoft Entra ID]。
透過執行以下操作,使用 Microsoft Entra ID 註冊應用程式。 如需詳細的逐步指示,請參閱 Azure Key Vault 部落格文章 Azure Key Vault – 逐步解說中取得應用程式的身分識別一節。
在 [Microsoft Entra ID] 資源的 [管理] 部分中,選取 [應用程式註冊]。
在應用程式註冊頁面上,選取新增註冊。
在 [註冊應用程式] 窗格中,輸入應用程式的使用者對應名稱,然後選取 [註冊]。
在左側窗格中,選取 [憑證和祕密] > [用戶端密碼] > [新增用戶端密碼]。
在 [新增用戶端密碼] 中輸入描述和適當的到期日,然後選取 [新增]。 您無法選擇超過 24 個月的到期期間。 如需詳細資訊,請參閱新增用戶端密碼。
在 [憑證和祕密] 窗格的 [值] 下方,選取用戶端密碼值旁的 [複製] 按鈕,以便在 SQL Server 中用於建立非對稱金鑰。
在左窗格中選取 [概觀],然後在 [應用程式 (用戶端) 識別碼] 方塊中,複製要用來在 SQL Server 中建立非對稱金鑰的值。
步驟 2:建立金鑰保存庫
選取要用來建立金鑰保存庫的方法。
使用 Azure 入口網站來建立金鑰保存庫
您可使用 Azure 入口網站來建立金鑰保存庫,並在其中新增 Microsoft Entra 主體。
建立資源群組。
您透過 Azure 入口網站所建立所有 Azure 資源都必須包含在可建立用來存放金鑰保存庫的資源群組中。 此範例中的資源名稱為 DocsSampleRG。 請自行選擇資源群組和金鑰保存庫名稱,因為所有金鑰保存庫名稱都是全域唯一的。
在 [建立資源群組] 窗格的 [專案詳細資料] 下方輸入值,然後選取 [檢閱 + 建立]。
在 Azure 入口網站中,搜尋或選取金鑰保存庫服務以建立金鑰保存庫。 選取 建立。
在 [建立金鑰保存庫] 窗格中,選取 [基本] 索引標籤,輸入索引標籤的適當值。建議也啟用清除保護。
在 [存取組態] 索引標籤上,可以選取 [Azure 角色型存取控制] 或 [保存庫存取原則]。 我們會討論這兩個選項,但建議使用 [Azure 角色型存取控制] 選項。 如需詳細資訊,請參閱存取模型概觀。
選取 [檢閱 + 建立] 按鈕並建立金鑰保存庫。
Azure 角色型存取控制
建議使用 Azure 角色型存取控制 (RBAC) 將權限指派給金鑰保存庫。 此方法可讓您在更細微的層級將權限指派給使用者、群組和應用程式。 可以在管理平面 (Azure 角色指派) 和資料平面 (金鑰保存庫存取原則) 將權限指派給金鑰保存庫。 如果只能使用存取原則,則可以略過本節並移至保存庫存取原則一節。 如需 Azure Key Vault RBAC 權限的詳細資訊,請參閱 Key Vault 資料平面操作的 Azure 內建角色。
移至您所建立的金鑰保存庫資源,然後選取 [存取控制] (IAM) 設定。
選取 [新增>][新增角色指派]。
EKM 應用程式需要 [金鑰保存庫密碼編譯服務加密使用者] 角色,才能執行包裝和解除包裝操作。 搜尋 [金鑰保存庫密碼編譯服務加密使用者]並選取角色。 選取 [下一步]。
在 [成員] 索引標籤中,選取 [選取成員] 選項,然後搜尋您在步驟 1 中建立的 Microsoft Entra 應用程式。 選取應用程式,然後選擇 [選取] 按鈕。
選取兩次 [檢閱 + 指派],以完成角色指派。
建立金鑰的使用者需要 [金鑰保存庫管理員] 角色。 搜尋 [金鑰保存庫管理員],然後選取角色。 選取 [下一步]。
就像先前的步驟一樣,新增可建立金鑰的成員並指派角色。
保存庫存取原則
注意
如果使用 [Azure 角色型存取控制] 選項,則可以略過本節。 如果要變更權限模型,可以移至金鑰保存庫的 [存取設定] 功能表。 確保您擁有管理金鑰保存庫的正確權限。 如需詳細資訊,請參閱在金鑰保存庫中啟用 Azure RBAC 權限。
從 [存取組態] 索引標籤中,選取 [保存庫存取原則]。 如果使用現有的金鑰保存庫,可以從金鑰保存庫資源中選取 [存取原則] 功能表,然後選取 [建立]。
在 [建立存取原則] 窗格中,從 [金鑰管理操作] 選項中選取 [取得] 和 [列出] 權限。 從 [密碼編譯操作] 選項中選取 [解除包裝金鑰] 和 [包裝金鑰] 權限。 選取下一個
在 [主體] 索引標籤中,選取在步驟 1 中建立的應用程式。
選取 [下一步],然後選取 [建立]。
建立金鑰
在 [金鑰保存庫] 窗格中,選取 [金鑰],然後選取 [產生/匯入] 選項。 這會開啟 [建立金鑰] 窗格。 輸入金鑰保存庫名稱。 選取 [產生] 選項,然後輸入金鑰名稱。 SQL Server 連接器需要金鑰名稱僅使用字元 "a-z"、"A-Z"、"0-9" 和 "-",且長度限制為 26 個字元。
使用金鑰類型 RSA,RSA 金鑰大小為 2048。 EKM 目前僅支援 RSA 金鑰。 根據需要設定啟用日期和到期日,並將 [啟用] 設為 [是]。
最佳作法
若要確保快速修復金鑰,且能夠在 Azure 之外存取資料,建議採用下列最佳做法︰
在本機硬體安全模組 (HSM) 裝置上建立加密金鑰。 請務必使用非對稱的 RSA 2048 或 3072 金鑰,以便獲得 SQL Server 支援。
將加密金鑰匯入至 Azure 金鑰保存庫。 下一節將描述這個程序。
在第一次使用 Azure 金鑰保存庫金鑰之前,請先利用
Backup-AzureKeyVaultKey
PowerShell Cmdlet 備份 Azure 金鑰保存庫金鑰。每當對金鑰進行任何變更時 (例如新增 ACL、新增標籤、新增金鑰屬性),請務必先另行備份 Azure Key Vault 金鑰。
注意
備份金鑰是 Azure Key Vault 金鑰作業,它會傳回可儲存在任何位置的檔案。
在防火牆或 Proxy 伺服器後方使用適用於 Microsoft Azure Key Vault 的 SQL Server 連接器時,如果流量延遲或遭封鎖,可能會影響效能。 熟悉在防火牆後存取 Azure Key Vault,以便確保正確規則已就緒。
步驟 3:安裝 SQL Server 連接器
從 Microsoft 下載中心下載 SQL Server 連接器。 下載應該由 SQL Server 電腦的系統管理員來完成。
注意
- SQL Server 連接器 1.0.0.440 版和更舊版本已被取代,在生產環境中已不再受到支援,並且使用 [SQL Server 連接器維護和疑難排解] 頁面中 [SQL Server 連接器升級] 下的指示。
- 從 1.0.3.0 版開始,SQL Server 連接器會相關的錯誤訊息報告至 Windows 事件記錄,以供疑難排解之用。
- 從 1.0.4.0 版開始已支援私人 Azure 雲端,包括世紀互聯營運的 Azure、Azure 德國和 Azure Government。
- 1.0.5.0 版中的憑證指紋演算法有重大變更。 您在升級至 1.0.5.0 之後可能會遇到資料庫還原失敗。 如需詳細資訊,請參閱知識庫文章 447099。
- 從 1.0.5.0 版開始 (時間戳記:2020 年 9 月),SQL Server 連接器支援篩選訊息和網路要求重試邏輯。
- 從更新的 1.0.5.0 版開始 (時間戳記:2020 年 11 月),SQL Server 連接器支援 RSA 2048、RSA 3072、RSA-HSM 2048 及 RSA-HSM 3072 金鑰。
- 從更新的 1.0.5.0 版開始 (時間戳記:2020 年 11 月),可以參考 Azure Key Vault 中的特定金鑰版本。
按照預設,連接器會安裝在 C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault
。 這個位置可以在安裝期間變更。 如果將其變更,請調整下一節中的指令碼。
連接器沒有介面,但如果安裝成功,即會在電腦上安裝 Microsoft.AzureKeyVaultService.EKM.dll
。 此組件是密碼編譯的 EKM 提供者 DLL,需要使用 CREATE CRYPTOGRAPHIC PROVIDER
陳述式向 SQL Server 註冊。
SQL Server 連接器安裝也可讓您選擇性地下載 SQL Server 加密的範例指令碼。
若要檢視 SQL Server Connector 的錯誤碼說明、組態設定或維護工作,請參閱:
步驟 4:新增登錄機碼以支援 EKM 提供者
警告
修改登錄應由確切知道其執行作業的使用者執行。 如果您未正確修改登錄,可能會發生嚴重問題。 為增加保護起見,請先備份登錄,再進行修改。 如果發生問題,您可以還原登錄。
請確定 SQL Server 已安裝且正在執行。
執行 regedit 以開啟登錄編輯程式。
在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
上建立SQL Server Cryptographic Provider
登錄機碼。 完整路徑為HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
。以滑鼠右鍵按一下
SQL Server Cryptographic Provider
登錄機碼,然後選取 [權限]。向執行 SQL Server 服務的使用者帳戶提供
SQL Server Cryptographic Provider
登錄機碼的 [完全控制] 權限。選取 [套用],然後選取 [確定]。
關閉登錄編輯程式,然後重新啟動 SQL Server 服務。
注意
如果您在容錯移轉叢集實例使用 TDE 與 EKM 或 Azure Key Vault,您必須完成額外步驟,才能將
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
新增至「叢集登錄檢查點」常式,讓登錄可跨節點同步。 同步處理可協助在容錯移轉及金鑰輪替之後進行資料庫復原。若要將登錄機碼新增至「叢集登錄檢查點」常式,請在 PowerShell 執行下列命令:
Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
步驟 5:設定 SQL Server
如需本節中每個動作所需最小權限等級的附註。請參閱 B. 常見問題集。
設定 master
資料庫
執行 sqlcmd 或開啟 SQL Server Management Studio。
執行下列 Transact-SQL 指令碼,將 SQL Server 設定為使用 EKM:
-- Enable advanced options. USE master; GO EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider EXEC sp_configure 'EKM provider enabled', 1; GO RECONFIGURE;
向 SQL Server 註冊 SQL Server 連接器作為 EKM 提供者。
使用 SQL Server 連接器來建立密碼編譯提供者,它是 Azure Key Vault 的 EKM 提供者。 在此範例中,提供者名稱為
AzureKeyVault_EKM
。CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
注意
檔案路徑長度不能超過 256 個字元。
設定 SQL Server 登入的 SQL Server 登入認證,以便使用金鑰保存庫。
必須將認證新增至每個將使用金鑰保存庫中金鑰來執行加密的登入。 這可能包括:
使用金鑰保存庫以設定和管理 SQL Server 加密案例的 SQL Server 系統管理員登入。
可能會啟用 TDE 或其他 SQL Server 加密功能的其他 SQL Server 登入。
認證與登入之間的一對一對應。 也就是說,每個登入都必須具有唯一的認證。
利用下列方式修改此 Transact-SQL 指令碼:
編輯
IDENTITY
引數 (DocsSampleEKMKeyVault
),以指向您的 Azure 金鑰保存庫。- 如果使用的是全域 Azure,請使用 Azure Key Vault 名稱來取代
IDENTITY
引數 (步驟 2:建立金鑰保存庫)。 - 如果使用的是私人 Azure 雲端 (例如 Azure Government、世紀互聯營運的 Microsoft Azure 或 Azure 德國),請將
IDENTITY
引數取代為使用 PowerShell 建立金鑰保存庫和金鑰一節的步驟 3 中所傳回保存庫 URI。 請不要在金鑰保存庫 URI 中包含https://
。
- 如果使用的是全域 Azure,請使用 Azure Key Vault 名稱來取代
將
SECRET
引數的第一部分取代為步驟 1:設定 Microsoft Entra 服務主體中的 Microsoft Entra 用戶端識別碼。 在此範例中,用戶端識別碼為d956f6b9xxxxxxx
。重要
請務必移除應用程式 (用戶端) 識別碼中的連字號。
使用用戶端密碼完成
SECRET
引數的第二個部分 (步驟 1:設定 Microsoft Entra 服務主體)。 在此範例中,用戶端密碼為yrA8X~PldtMCvUZPxxxxxxxx
。SECRET
引數的最終字串將是一長串字母和數字,不含連字號 (用戶端密碼部分除外,以防用戶端密碼包含任何連字號)。USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'DocsSampleEKMKeyVault', -- for public Azure -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.microsoftazure.de', -- for Azure Germany --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret--> SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM; -- Add the credential to the SQL Server administrator's domain login ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL sysadmin_ekm_cred;
如需針對
CREATE CREDENTIAL
引數使用變數及以程式設計方式從用戶端識別碼移除連字號的範例,請參閱 CREATE CREDENTIAL (Transact-SQL)。在 SQL Server 執行個體中開啟 Azure Key Vault 金鑰。
無論建立了新的金鑰,或匯入了如步驟 2:建立金鑰保存庫中所述的非對稱金鑰,都需要開啟金鑰。 請在下列 Transact-SQL 指令碼提供金鑰名稱來開啟金鑰。
重要
請務必先完成此步驟的登錄必要條件。
- 請將
EKMSampleASYKey
取代為您想在 SQL Server 使用的金鑰名稱。 - 將
ContosoRSAKey0
取代為 Azure Key Vault 中金鑰的名稱。 以下是無版本金鑰的範例。
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0', CREATION_DISPOSITION = OPEN_EXISTING;
從更新的 SQL Server 連接器 1.0.5.0 版開始,您可以參考 Azure Key Vault 的特定金鑰版本:
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379', CREATION_DISPOSITION = OPEN_EXISTING;
在上述範例指令碼中,
1a4d3b9b393c4678831ccc60def75379
代表將使用的金鑰特定版本。 若您使用此指令碼,則是否使用新版本更新金鑰並不重要。 例如,在資料庫作業中會一律採用金鑰版本1a4d3b9b393c4678831ccc60def75379
。- 請將
請利用上個步驟所建立的 SQL Server 非對稱金鑰來建立新登入。
--Create a Login that will associate the asymmetric key to this login CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY EKMSampleASYKey;
從 SQL Server 中的非對稱金鑰來建立新登入。 卸除步驟 5:設定 SQL Server 的認證資訊對應,以便認證可對應至新登入。
--Now drop the credential mapping from the original association ALTER LOGIN [<domain>\<login>] DROP CREDENTIAL sysadmin_ekm_cred;
改變新的登入,並將 EKM 認證對應至新的登入。
--Now add the credential mapping to the new Login ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
設定要加密的使用者資料庫
建立將使用 Azure Key Vault 金鑰來進行加密的測試資料庫。
--Create a test database that will be encrypted with the Azure Key Vault key CREATE DATABASE TestTDE;
利用
ASYMMETRIC KEY
(EKMSampleASYKey
) 來建立資料庫加密金鑰。USE <DB Name>; --Create an ENCRYPTION KEY using the ASYMMETRIC KEY (EKMSampleASYKey) CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
加密測試資料庫。 設定
ENCRYPTION ON
以便啟用 TDE。--Enable TDE by setting ENCRYPTION ON ALTER DATABASE TestTDE SET ENCRYPTION ON;
登錄詳細資料
在
master
資料庫中執行下列 Transact-SQL 查詢,以顯示使用的非對稱金鑰。SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;
此陳述式會傳回:
name algorithm_desc thumbprint EKMSampleASYKey RSA_2048 <key thumbprint>
在使用者資料庫 (
TestTDE
) 中,執行下列 Transact-SQL 查詢,以顯示使用的非對稱金鑰。SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('TestTDE');
此陳述式會傳回:
encryptor_type encryption_state_desc encryptor_thumbprint ASYMMETRIC KEY ENCRYPTED <key thumbprint>
清理
清除測試物件。 刪除在此測試指令碼中建立的所有物件。
-- CLEAN UP USE master; GO ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [TestTDE]; GO ALTER LOGIN [TDE_Login] DROP CREDENTIAL [sysadmin_ekm_cred]; DROP LOGIN [TDE_Login]; GO DROP CREDENTIAL [sysadmin_ekm_cred]; GO USE master; GO DROP ASYMMETRIC KEY [EKMSampleASYKey]; DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM]; GO
如需範例指令碼,請參閱 SQL Server 透明資料加密和使用 Azure Key Vault 進行可延伸金鑰管理部落格文章 (英文)。
刪除某個金鑰或所有 EKM 金鑰後,不會自動清理
SQL Server Cryptographic Provider
登錄機碼。 必須手動清理。 清理登錄機碼時應非常小心,因為過早清理登錄可能會破壞 EKM 功能。 若要清理登錄機碼,請刪除SQL Server Cryptographic Provider
上的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
登錄機碼。
疑難排解
如果未建立登錄機碼 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
或未授與必要的權限,下列 DDL 陳述式會失敗:
CREATE ASYMMETRIC KEY EKMSampleASYKey
FROM PROVIDER [AzureKeyVault_EKM]
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
CREATION_DISPOSITION = OPEN_EXISTING;
Msg 33049, Level 16, State 2, Line 65
Key with name 'ContosoRSAKey0' does not exist in the provider or access is denied. Provider error code: 2058. (Provider Error - No explanation is available, consult EKM Provider for details)
即將到期的用戶端密碼
如果認證中包含即將到期的用戶端密碼,可將新密碼指派至登入資訊。
更新在步驟 1:設定 Microsoft Entra 服務主體中所建立的原始密碼。
利用相同的身分識別來變更認證,並利用下列程式碼來變更新密碼。 將
<New Secret>
取代為您的新秘密:ALTER CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'DocsSampleEKMKeyVault', SECRET = '<New Secret>';
重新啟動 SQL Server 服務。
注意
如果您在可用性群組 (AG) 使用 EKM,您必須改變認證,並在 AG 的所有節點重新啟動 SQL Server 服務。
以新的 AKV 金鑰或新的 AKV 金鑰版本輪替非對稱密鑰
注意
- 手動輪替 AKV 金鑰時,SQL Server 同時支援 AKV 無版本金鑰或有版本金鑰,而且不需要使用不同的 AKV 金鑰。
- 可以輪替原始 AKV 金鑰,從而建立新版本,以取代在 SQL Server 中建立的先前的金鑰。
- 若要進行手動金鑰輪替,必須建立新的 SQL Server 非對稱金鑰,以參考在 AKV 中輪替的無版本金鑰或有版本金鑰。 針對新的 SQL Server 非對稱金鑰,系統會使用 AKV 中的最高金鑰版本來自動選擇無版本 AKV 金鑰。 針對有版本的金鑰,必須使用語法
WITH PROVIDER_KEY_NAME = <key_name>/<version>
指出 AKV 中的最高版本。 可改變資料庫加密金鑰,以使用新的非對稱金鑰重新加密。 相同的金鑰名稱 (有版本或無版本) 可以搭配 AKV 輪替原則使用。 針對有版本金鑰,必須新增目前的版本。 針對無版本金鑰,請使用相同的金鑰名稱。
SQL Server 沒有機制可自動輪替用於 TDE 的非對稱金鑰。 手動輪換非對稱密鑰的步驟如下。
在初始設定中所使用的認證 (
sysadmin_ekm_cred
) 也可供金鑰輪替重複使用。 或者,為新的非對稱金鑰建立新的認證。CREATE CREDENTIAL <new_credential_name> WITH IDENTITY = <key vault>, SECRET = 'existing/new secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
將認證新增至主體:
ALTER LOGIN [domain\userName]; ADD CREDENTIAL <new_credential_name>;
根據新金鑰來建立新的非對稱金鑰 (輪替金鑰之後)。 新金鑰可以是無版本金鑰 (範例中的
ContosoRSAKey0
) 或有版本金鑰 (ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379
,其中1a4d3b9b393c4678831ccc60def75379
是 AKV 中已更新金鑰的版本):CREATE ASYMMETRIC KEY <new_ekm_key_name> FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = <new_key_from_key_vault>, CREATION_DISPOSITION = OPEN_EXISTING;
從新的非對稱金鑰來建立新登入:
CREATE LOGIN <new_login_name> FROM ASYMMETRIC KEY <new_ekm_key_name>;
從主體中卸除認證:
ALTER LOGIN [domain\username] DROP CREDENTIAL <new_credential_name>;
將 AKV 認證對應至新登入:
ALTER LOGIN <new_login_name>; ADD CREDENTIAL <new_credential_name>;
改變資料庫加密金鑰 (DEK),以使用新的非對稱金鑰重新加密:
USE [databaseName]; GO ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
可以驗證資料庫中使用的新的非對稱金鑰和加密金鑰:
SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('databaseName');
此指紋應該符合路徑
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\<key_vault_url>\<thumbprint>
底下的登錄機碼,並為您的輪替金鑰提供KeyUri
。
重要
輪換伺服器的邏輯 TDE 保護裝置,即表示切換至可保護資料庫加密金鑰 (DEK) 的新非對稱式金鑰或憑證。 金鑰輪換是一項線上作業,應可在幾秒內完成,因為此作業只會解密和重新 DEK,而不是整個資料庫。
輪換後,請不要刪除先前版本的金鑰。 輪換金鑰後,有些資料仍會使用之前的金鑰加密,例如較舊的資料庫備份、已備份的記錄檔、虛擬記錄檔 (VLF) 和交易記錄檔。 資料庫恢復或資料庫還原可能需要先前的金鑰。
相關內容
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: