适用于: 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 资源进行身份验证。 有关托管标识的详细信息,请参阅 托管标识类型。
先决条件
- 将 SQL Server 实例连接到 Azure Arc。有关详细信息,请参阅 自动将 SQL Server 连接到 Azure Arc。
- 为 SQL Server 2025 预览版启用托管标识。
- 在密钥保管库中创建了一个 Azure Key Vault 和一个密钥。 有关详细信息,请参阅创建密钥保管库。
- 如果使用的是 Azure 基于角色的访问控制,则由 Azure Arc 启用的 SQL Server 的托管标识需要
Key Vault Crypto Service Encryption User
将角色分配给密钥保管库;如果使用保管库访问策略,则需要使用“解包密钥”和“包装密钥”权限。 - 下载并安装最新版本的 SQL Server 连接器。
步骤 1:为 EKM 提供程序添加注册表项
在使用托管标识创建凭据之前,需要添加注册表项,使 EKM 提供程序能够使用托管标识。 此步骤需要由计算机管理员执行。 有关详细步骤,请参阅 步骤 4:添加注册表项以支持 EKM 供应商。
步骤 2:配置 master
数据库
打开 SQL Server Management Studio。
通过运行以下 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
在 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 配置以使用托管标识:
使用托管标识创建凭据:
CREATE CREDENTIAL [<akv-name>.vault.azure.net] WITH IDENTITY = 'Managed Identity' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
如果凭据使用与 SQL Server 管理域登录关联的机密,请删除现有凭据:
ALTER LOGIN [<___domain>\<login>] DROP CREDENTIAL [<existing-credential-name>];
将新凭据与 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 连接器预览版。