事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊適用於: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) 的可擴充金鑰管理,熟悉 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。
若要將 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 中建立非對稱金鑰的值。
選取要用來建立金鑰保存庫的方法。
您可使用 Azure 入口網站來建立金鑰保存庫,並在其中新增 Microsoft Entra 主體。
建立資源群組。
您透過 Azure 入口網站所建立所有 Azure 資源都必須包含在可建立用來存放金鑰保存庫的資源群組中。 此範例中的資源名稱為 DocsSampleRG。 請自行選擇資源群組和金鑰保存庫名稱,因為所有金鑰保存庫名稱都是全域唯一的。
在 [建立資源群組] 窗格的 [專案詳細資料] 下方輸入值,然後選取 [檢閱 + 建立]。
在 Azure 入口網站中,搜尋或選取金鑰保存庫服務以建立金鑰保存庫。 選取 建立。
在建立金鑰保存庫窗格中,選取基本索引標籤,輸入索引標籤的適當值。建議也啟用清除保護。
在 [存取組態] 索引標籤上,可以選取 [Azure 角色型存取控制] 或 [保存庫存取原則]。 我們會討論這兩個選項,但建議使用 [Azure 角色型存取控制] 選項。 如需詳細資訊,請參閱存取模型概觀。
您可以將 [網路] 索引標籤保留為預設值,也可以為金鑰保存庫設定網路設定。 如果您使用具有金鑰保存庫的防火牆,除非使用私人端點連線,否則必須啟用 [允許信任的 Microsoft 服務以略過防火牆] 選項。 如需詳細資訊,請參閱設定 Azure Key Vault 防火牆和虛擬網路。
選取 [檢閱 + 建立] 按鈕並建立金鑰保存庫。
建議使用 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,以便確保正確規則已就緒。
使用最新版本的 SQL Server 連接器以及 Azure SQL 時,Azure Key Vault 受控 HSM(硬體安全模組)支援 Azure 虛擬機器 上的 SQL Server 和 SQL Server。 受控 HSM 是一種完全受控、高度可用的單一租用戶 HSM 服務。 受控 HSM 為密碼編譯作業和金鑰儲存提供安全的基礎。 受控 HSM 的設計目的是要符合最嚴格的安全性和合規性需求。
在步驟 2 中,我們已瞭解如何在 Azure Key Vault 中建立金鑰保存庫和金鑰。 您可以選擇性地使用 Azure Key Vault 受控 HSM 來儲存或建立要與 SQL Server 連接器搭配使用的金鑰。 以下為其步驟:
建立 Azure Key Vault 受控 HSM。 這可以使用 Azure 入口網站完成,方法是搜尋 Azure Key Vault 受控 HSM 服務,以及建立新的資源,或使用 Azure CLI、PowerShell 或 ARM 範本。
啟用受控 HSM。 只有在建立受控 HSM命令執行期間指派的指定管理員,才可以啟用 HSM。 若要完成這項操作,可以在 Azure 入口網站 中選取受控 HSM 資源,方法是在資源的概觀功能表中選取下載安全性網域。 然後遵循其中 一個快速入門來啟用受控 HSM。
授與 Microsoft Entra 服務主體存取受控 HSM 的權限。 受控 HSM 系統管理員角色不會授與建立金鑰的許可權。 與 步驟 2 類似,EKM 應用程式需要受控 HSM 密碼編譯使用者或受控 HSM 加密服務加密使用者的角色,才能執行裝合和解除裝合作業。 新增角色指派的主體時,請選擇 [企業應用程式] 類型。 有關更多資訊,請參閱受控 HSM 的本地 RBAC 內建角色。
在 Azure Key Vault 受控 HSM 服務功能表中,於設定底下選取金鑰。 在金鑰視窗中,選取產/匯入/還原備份以建立金鑰或匯入現有的金鑰。
注意
建立認證以存取受控 HSM 時,身分識別為 <name of Managed HSM>.managedhsm.azure.net
,可在 Azure Key Vault 受控 HSM 概觀中找到,作為 Azure 入口網站中的 HSM URI。
在 Azure Key Vault 受控 HSM 中設定自動金鑰輪替。 如需詳細資訊,請參閱在 Azure Key Vault 受控 HSM 中配置金鑰自動輪替。
需要 SQL Server Connector 15.0.2000.440 版本或更新版本,才能支援 Azure Key Vault 受控 HSM。
受控 HSM 支援私人端點連線。 如需詳細資訊,請參閱整合受控 HSM 與 Azure Private Link。 在此設定中,必須針對 Azure 金鑰保存庫受控 HSM 網路設定啟用 [Microsoft 信任的服務旁路] 選項。
從 Microsoft 下載中心下載 SQL Server 連接器。 下載應該由 SQL Server 電腦的系統管理員來完成。
注意
按照預設,連接器會安裝在 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 的錯誤碼說明、組態設定或維護工作,請參閱:
警告
修改登錄應由確切知道其執行作業的使用者執行。 如果您未正確修改登錄,可能會發生嚴重問題。 為增加保護起見,請先備份登錄,再進行修改。 如果發生問題,您可以還原登錄。
請確定 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"
如需本節中每個動作所需最小權限等級的附註。請參閱 B. 常見問題集。
執行 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 金鑰保存庫。
IDENTITY
引數 (步驟 2:建立金鑰保存庫)。IDENTITY
引數取代為使用 PowerShell 建立金鑰保存庫和金鑰一節的步驟 3 中所傳回保存庫 URI。 請不要在金鑰保存庫 URI 中包含 https://
。將 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
-- WITH IDENTITY = '<name of Managed HSM>.managedhsm.azure.net', -- for Managed HSM (HSM URI in the Azure portal resource)
--<----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(建立認證)。
在 SQL Server 執行個體中開啟 Azure Key Vault 金鑰。
無論建立了新的金鑰,或匯入了如步驟 2:建立金鑰保存庫中所述的非對稱金鑰,都需要開啟金鑰。 請在下列 Transact-SQL 指令碼提供金鑰名稱來開啟金鑰。
重要
請務必先完成此步驟的登錄必要條件。
EKMSampleASYKey
取代為您想在 SQL Server 使用的金鑰名稱。ContosoRSAKey0
取代為 Azure Key Vault 中或受控 HSM的金鑰名稱。 以下是無版本金鑰的範例。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 服務。
注意
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) 和交易記錄檔。 資料庫恢復或資料庫還原可能需要先前的金鑰。
事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。
文件
搭配 Azure Key Vault 使用 SQL Server 連接器加密 - SQL Server
了解如何搭配一般加密功能使用 SQL Server 連接器,例如 TDE、加密備份以及使用 Azure Key Vault 的資料行層級加密。
使用 Azure Key Vault 進行可延伸金鑰管理 - SQL Server
搭配適用於 SQL Server 的 Azure Key Vault,使用 SQL Server 連接器進行可延伸金鑰管理。
使用 Azure Key Vault 啟用 SQL TDE - Azure SQL Database & SQL Managed Instance & Azure Synapse Analytics
了解如何設定 Azure SQL Database 和 Azure Synapse Analytics,以透過 PowerShell 或 Azure CLI 開始使用透明資料加密 (TDE) 進行待用加密。