共用方式為


使用 Azure Key Vault 進行可延伸金鑰管理的受控識別支援

適用於:只適用於 Windows 的 Azure VM 上的 SQL Server

本文說明如何使用受控識別進行可延伸金鑰管理 (EKM) 與 Azure 虛擬機上 SQL Server 上的 Azure Key Vault (AKV)

概述

從 SQL Server 2022 中的累積更新 17(CU17)開始,Azure VM 上的 SQL Server EKM 功能現在支援使用 Azure Key Vault (AKV)和受控硬體安全模組(HSM)的受控識別。 受控識別是建議的驗證方法,可讓不同的 Azure 服務在 Azure VM 資源上驗證 SQL Server,而不需使用密碼或秘密。 如需受控識別的詳細資訊,請參閱受控識別類型。

注意

受控識別僅支援 Azure VM 上的 SQL Server,而不支援 SQL Server 內部部署。

如需設定內部部署 SQL Server 的 TDE 可延伸密鑰管理 (EKM) 與 Azure Key Vault (AKV) 的資訊,請參閱 使用 Azure Key Vault 設定 SQL Server TDE 可延伸密鑰管理

先決條件

  • 具有 SQL Server 2022 CU17 或更新版本的 Azure VM 上的 SQL Server,使用 Microsoft Entra 驗證設定
  • 在金鑰保存庫中建立的 Azure Key Vault 和密鑰。 如需詳細資訊,請參閱 建立金鑰儲存庫
  • 對於使用 Azure Key Vault (AKV) 的 EKM 來說,支援受管理的識別。 Azure VM 上的 SQL Server 主要受管識別需求:
    • 使用使用者指派的受控識別或系統指派的受控識別來指派。 如需詳細資訊,請參閱 在 Azure 虛擬機上設定受控識別啟用 Microsoft Entra 驗證
    • 如果您使用 Azure 角色型存取控制解除包裝金鑰,並 使用保存庫存取原則,則為指派給密鑰保存庫的主要受控識別 角色。
  • 從 Microsoft 下載中心下載 最新版本的 SQL Server 連接器。

新增 EKM 提供者的登錄機碼

在您使用受控識別建立認證之前,需新增登錄機碼以啟用EKM 提供者使用受控識別。 此步驟必須由計算機管理員執行。 如需詳細步驟,請參閱 步驟 4:新增登錄機碼以支援 EKM 提供者

使用受控識別建立伺服器認證

下列範例示範如何為受控識別建立認證,以搭配 AKV 使用:

CREATE CREDENTIAL [<akv-name>.vault.azure.net] 
    WITH IDENTITY = 'Managed Identity'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov

您可以查詢 sys.credentials來檢查 AKV 名稱:

SELECT name, credential_identity
FROM sys.credentials

WITH IDENTITY = 'Managed Identity' 子句需要指派給 Azure VM 上 SQL Server 的主要受控識別。

如需使用 AKV 設定 EKM 的詳細資訊,請參閱 使用 Azure Key Vault設定 SQL Server TDE 可延伸密鑰管理。

建立憑證以搭配管理硬體安全模組(HSM)使用

若要建立與 Azure Key Vault 受控硬體安全性模組 (HSM) 搭配使用的認證,請使用下列語法:

CREATE CREDENTIAL [<akv-name>.managedhsm.azure.net] 
    WITH IDENTITY = 'Managed Identity'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov

如需使用 AKV 設定 EKM 的詳細資訊,請參閱 使用 Azure Key Vault設定 SQL Server TDE 可延伸密鑰管理。

用來升級現有 EKM 組態以使用受控識別的 T-SQL 命令

如果您目前的設定是使用 EKM 搭配 AKV 使用秘密,您必須卸除現有的認證,並使用受控識別建立新的認證。 下列 T-SQL 命令示範如何升級現有的 EKM 組態以使用受控識別:

  1. 使用受控識別建立認證:

    CREATE CREDENTIAL [<akv-name>.vault.azure.net] 
        WITH IDENTITY = 'Managed Identity'
        FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov
    
  2. 如果有認證使用與 SQL Server 管理員網域登入相關聯的密碼,請刪除現有的認證:

    ALTER LOGIN [<domain>\<login>]
    DROP CREDENTIAL [<existing-credential-name>]
    
  3. 將新的認證與 SQL Server 系統管理網域登入產生關聯:

    ALTER LOGIN [<domain>\<login>]
    ADD CREDENTIAL [<akv-name>.vault.azure.net]
    

您可以使用下列查詢來檢查加密的資料庫檢視,以確認資料庫加密:

SELECT * 
FROM sys.dm_database_encryption_keys 
WHERE database_id=db_id('<your-database-name>')

如需使用 AKV 設定 EKM 的詳細資訊,請參閱 使用 Azure Key Vault設定 SQL Server TDE 可延伸密鑰管理。

錯誤訊息

追蹤旗標 4675 可用來檢查使用受管理的身份建立的認證。 如果在未啟用追蹤旗標 4675 的情況下執行 CREATE CREDENTIAL 語句,如果未為伺服器設定主要受控識別,則不會發出任何錯誤訊息。 若要針對此情況進行疑難排解,啟用追蹤旗標後,必須刪除並重新建立憑證。

未分配主要管理識別符號

如果未將主要受控識別指派給 Azure VM 上的 SQL Server,備份和還原作業將會失敗,並出現錯誤訊息,指出未選取受控識別。

Msg 37563, Level 16, State 2, Line 14
The primary managed identity is not selected for this server. Enable the primary managed identity for Microsoft Entra authentication for this server. For more information see (https://aka.ms/sql-server-managed-identity-doc).`

SQL Server 連接器版本不支援使用 AKV 的 EKM 受控識別

如果使用先前的 SQL Server 連接器版本,在搭配受控識別的伺服器認證執行 T-SQL CREATE ASYMMETRIC KEY 語句時,會發生下列錯誤:

Msg 37576, Level 16, State 2, Line 60
The current SQL Server Connector version for Microsoft Azure Key Vault does not support the managed identity (see https://aka.ms/sql-server-managed-identity-doc). Upgrade the SQL Server Connector to its latest version

局限性

  • 伺服器層級的受控身分識別僅支援 Azure VM 上的 SQL Server,不適用於內部部署的 SQL Server。 Linux 不支援伺服器層級受控識別。
  • 使用 AKV 和 備份和還原至 URL 的受控識別支援, 是唯一支援 Azure VM 上 SQL Server 受控識別的 Azure 服務。
    • 使用 AKV 的 EKM 受控識別支援需要最新的 SQL Server 連接器版本。 請務必從 Microsoft 下載中心下載並安裝最新版本。
  • Microsoft Entra 驗證只能針對 Azure VM 上的 SQL Server 啟用一個主要受控識別。 主要受控識別會用於 VM 上的所有 SQL Server 實例。