使用 Azure Key Vault 对可扩展密钥管理的托管标识支持

适用于: SQL Server 2025 (17.x) 预览版

本文介绍如何在由 Azure Arc 启用的 SQL Server 上,通过 Azure Key Vault (AKV) 使用托管标识来进行可扩展密钥管理(EKM)。

概述

从 SQL Server 2025 (17.x) 预览版开始,通过 Azure Arc 启用的 SQL Server 对 AKV 和托管硬件安全模块 (HSM) 的 EKM 进行托管标识支持。托管标识是推荐的身份验证方法,允许不同的 Azure 服务在不使用密码或机密的情况下对由 Azure Arc 启用的 SQL Server 资源进行身份验证。 有关托管标识的详细信息,请参阅 托管标识类型

先决条件

步骤 1:为 EKM 提供程序添加注册表项

在使用托管标识创建凭据之前,需要添加注册表项,使 EKM 提供程序能够使用托管标识。 此步骤需要由计算机管理员执行。 有关详细步骤,请参阅 步骤 4:添加注册表项以支持 EKM 供应商

步骤 2:配置 master 数据库

  1. 打开 SQL Server Management Studio。

  2. 通过运行以下 Transact-SQL 脚本,将 SQL Server 配置为使用 EKM:

    -- Enable advanced options.
    USE master;
    GO
    
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXECUTE sp_configure 'EKM provider enabled', 1;
    GO
    
    RECONFIGURE;
    GO
    
  3. 在 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 个字符。

步骤 3:使用托管标识创建服务器凭据

以下示例演示如何为要用于 Azure Key Vault 的托管标识创建凭据:

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

可以通过查询 sys.credentials来检查 AKV 名称:

SELECT name, credential_identity
FROM sys.credentials;

WITH IDENTITY = 'Managed Identity' 子句要求为通过 Azure Arc 启用的 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;

有关使用 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;
    
  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 Arc 启用的 SQL Server 2025,而不支持在本地 SQL Server 上。 Linux 不支持服务器级托管标识。
  • 使用 AKV 对 EKM 的托管标识支持需要最新的 SQL Server 连接器预览版