在本快速入门中,你将使用 PowerShell 创建和激活Azure Key Vault托管 HSM(硬件安全模块)。 托管 HSM 是一种完全托管、高度可用、符合标准的单租户云服务,可用于使用 FIPS 140-3 级别 3 验证的 HSM 来保护云应用程序的加密密钥。 若要详细了解托管 HSM,可参阅概述。
如果选择在本地安装和使用 PowerShell,本教程需要Azure PowerShell模块版本 1.0.0 或更高版本。 键入 $PSVersionTable.PSVersion 即可查找版本。 如果需要升级,请参阅 Install Azure PowerShell 模块。 如果在本地运行 PowerShell,则还需要运行 Connect-AzAccount -Environment AzureChinaCloud 来创建与 Azure 的连接。
Connect-AzAccount -Environment AzureChinaCloud
创建资源组
资源组是在其中部署和管理Azure资源的逻辑容器。 使用 Azure PowerShell New-AzResourceGroup cmdlet 在 <resource-group> 位置创建名为 <location> 的资源组。
New-AzResourceGroup -Name "<resource-group>" -Location "<location>"
获取主体 ID
若要创建托管 HSM,需要 Microsoft Entra 主体 ID。 若要获取 ID,请使用 Azure PowerShell Get-AzADUser cmdlet,并将电子邮件地址传递给 UserPrincipalName 参数:
Get-AzADUser -UserPrincipalName "<user-principal-name>"
您的主体 ID 将以“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”格式返回。
创建托管 HSM
创建托管 HSM 的过程分为两步:
- 配置托管 HSM 资源。
- 通过下载名为安全域的工件来激活托管 HSM。
配置托管 HSM
使用 Azure PowerShell New-AzKeyVaultManagedHsm cmdlet 创建新的托管 HSM。 提供以下信息:
托管 HSM 名称:只能包含数字(0-9)、字母(a-z、A-Z)和连字符(-)的 3 到 24 个字符的字符串。
重要
每个托管 HSM 都必须有唯一名称。 在以下示例中,将
<hsm-name>替换为您自己的唯一托管 HSM 名称。资源组名称:
<resource-group>.位置:所选位置。
主体 ID:将上一节中获取的Microsoft Entra主体 ID 传递给“Administrator”参数。
New-AzKeyVaultManagedHsm -Name "<hsm-name>" -ResourceGroupName "<resource-group>" -Location "<location>" -Administrator "<principal-id>" -SoftDeleteRetentionInDays "<retention-days>"
注意
运行 create 命令可能需要几分钟的时间。 成功返回后,即可激活 HSM。
此 cmdlet 的输出会显示新创建的托管 HSM 的属性。 记下以下两个属性:
- 名称:您提供的托管 HSM 名称。
-
HsmUri:HSM 的 URI(例如
https://<hsm-name>.managedhsm.chinacloudapi.cn/)。 通过其 REST API 使用保管库的应用程序必须使用此 URI。
此时,Azure帐户是唯一有权对此新 HSM 执行任何操作的帐户。
激活托管 HSM
在激活 HSM 之前,所有数据平面命令都处于禁用状态。 你将无法创建密钥或分配角色。 只有在 create 命令期间分配的指定管理员才能激活 HSM。 必须下载安全域才能激活 HSM。
您若要激活 HSM,您需要:
- 至少三个 RSA 密钥对(最大 10 个)
- 解密安全域所需的最小密钥数(称为 法定数量)
至少向 HSM 发送 3 个 (最大 10) RSA 公钥。 HSM 利用这些密钥对安全域进行加密,并将其发回。 安全域下载成功完成后,HSM 即可使用。 您还需要指定法定人数,这是解密安全域所需的最小私钥数。
以下示例演示如何用于 openssl 生成三个自签名证书:
openssl req -newkey rsa:2048 -nodes -keyout cert_0.key -x509 -days 365 -out cert_0.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_1.key -x509 -days 365 -out cert_1.cer
openssl req -newkey rsa:2048 -nodes -keyout cert_2.key -x509 -days 365 -out cert_2.cer
证书过期日期不会影响安全域操作,甚至“已过期”证书仍可用于还原安全域。
重要
这些 RSA 私钥是您托管 HSM 的信任根。 对于生产环境,请使用空封系统或本地 HSM 生成这些密钥,并安全地存储这些密钥。 有关详细指南,请参阅 安全域最佳做法 。
若要激活 HSM,请向 HSM 发送至少 3 个(最多 10 个)RSA 公钥。 HSM 利用这些密钥对安全域进行加密,并将其发回。 一旦成功完成此安全域下载,HSM 便可使用。 您还需要指定法定人数,即解密安全域所需的最小私钥数量。
以下示例演示如何使用 openssl(可用于 Windows here) 生成三个自签名证书。
使用 Azure PowerShell Export-AzKeyVaultSecurityDomain cmdlet 下载安全域并激活托管 HSM。 下面的示例使用 3 个 RSA 密钥对组(此命令只需要公钥),并将仲裁数设置为 2。
Export-AzKeyVaultSecurityDomain -Name "<hsm-name>" -Certificates "cert_0.cer", "cert_1.cer", "cert_2.cer" -OutputPath "<hsm-name>-SD.json" -Quorum 2
请安全地存储安全域文件和 RSA 密钥对。 你需要它们进行灾难恢复,还需要用它们再创建一个共享同一安全域的托管 HSM,这样二者才可共享密钥。
成功下载安全域后,HSM 将处于活动状态并可供使用。
清理资源
本系列中的其他快速入门和教程是在本快速入门的基础上制作的。 如果打算继续使用其他快速入门和教程,则可能需要保留这些资源。
不再需要时,可以使用 Azure PowerShell Remove-AzResourceGroup cmdlet 删除资源组和所有相关资源。
Remove-AzResourceGroup -Name "myResourceGroup"
警告
删除资源组会将托管 HSM 置于软删除状态。 托管 HSM 将继续计费,直到被清除。 请参阅托管 HSM 软删除和清除保护
后续步骤
在本快速入门中,你创建并激活了托管 HSM。 若要详细了解托管 HSM 以及如何将其与应用程序集成,请继续阅读以下文章:
- 查看 保护Azure托管 HSM 部署。
- 阅读 Azure 托管 HSM 的 概述。
- 请参阅 Azure PowerShell Key Vault cmdlet 的参考。