在本快速入门中,你将使用 Azure CLI 创建和激活Azure Key Vault托管 HSM(硬件安全模块)。 托管 HSM 是一种完全托管、高度可用、符合标准的单租户云服务,可用于使用 FIPS 140-3 级别 3 验证的 HSM 来保护云应用程序的加密密钥。 若要详细了解托管 HSM,可参阅概述。
先决条件
若要完成本文中的步骤,必须具备:
- 订阅Azure。 如果您还没有,可以注册一个试用版订阅。
- Azure CLI 版本 2.25.0 或以上版本。 运行
az --version即可查找版本。 如果需要安装或升级,请参阅 安装 Azure CLI。
登录到 Azure
若要使用 CLI 登录到Azure,可以键入:
az login
创建资源组
资源组是在其中部署和管理Azure资源的逻辑容器。 以下示例在 <resource-group> 位置创建名为 <location> 的资源组。
az group create --name "<resource-group>" --location <location>
创建托管 HSM
创建托管 HSM 的过程分为两步:
- 配置“托管 HSM”资源。
- 下载名为安全域的项目来激活托管 HSM。
配置托管 HSM
使用 az keyvault create 命令创建托管 HSM。 此脚本包含 3 个必需参数:资源组名称、HSM 名称和地理位置。
若要创建托管 HSM 资源,请提供以下输入:
- 在您的订阅中放置托管 HSM 的资源组。
- Azure 位置。
- 初始管理员的列表。
以下示例创建了名为 <hsm-name> 的 HSM,位于资源组 <resource-group> 中并驻留在指定位置,当前已登录的用户 作为唯一的管理员,以及软删除的 7 天保留期。 您将继续为托管 HSM 付费,直到在软删除期间被清除。 有关详细信息,请参阅托管 HSM 软删除和清除保护,并了解更多关于托管 HSM 软删除的信息。
oid=$(az ad signed-in-user show --query id -o tsv)
az keyvault create --hsm-name "<hsm-name>" --resource-group "<resource-group>" --location "<location>" --administrators $oid --retention-days 7
注意
如果使用托管身份作为托管 HSM 的初始管理员,请在 --administrators 后面输入托管身份的 OID/PrincipalID,而不是 ClientID。
注意
运行 create 命令可能需要几分钟的时间。 成功返回后,即可激活 HSM。
警告
托管的 HSM 实例被视为始终处于使用状态。 如果选择使用 --enable-purge-protection 标志启用清除保护,则会针对整个保留期计费。
此命令的输出显示所创建的托管 HSM 的属性。 两个最重要的属性是:
- 名称:指定的名称。 您可以使用此名称进行其他命令。
-
hsmUri:HSM 的 URI(例如
https://<hsm-name>.managedhsm.chinacloudapi.cn)。 通过其 REST API 使用 HSM 的应用程序必须使用此 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 生成这些密钥,并安全地存储这些密钥。 有关详细指南,请参阅 安全域最佳做法 。
使用 az keyvault security-domain download 命令下载安全域并激活托管 HSM。 下面的示例使用 3 对 RSA 密钥(此命令只需要公钥),并将法定人数设置为 2。
az keyvault security-domain download --hsm-name <hsm-name> --sd-wrapping-keys ./certs/cert_0.cer ./certs/cert_1.cer ./certs/cert_2.cer --sd-quorum 2 --security-domain-file <hsm-name>-SD.json
安全地存储安全域文件和 RSA 密钥对。 需要它们进行灾难恢复,或者创建共享同一安全域的另一个托管 HSM,以便两者可以共享密钥。
成功下载安全域后,HSM 将处于活动状态并可供使用。
清理资源
本系列中的其他快速入门和教程是在本快速入门的基础上制作的。 如果打算继续使用后续的快速入门和教程,则可能需要保留这些资源。
如果不再需要资源组和所有相关的资源,可以使用 az group delete 命令将其删除。 可以删除资源,如下所示:
az group delete --name <resource-group>
警告
删除资源组会将托管 HSM 置于软删除状态。 托管 HSM 将继续计费,直到被清除。 请参阅托管 HSM 的软性删除和清除保护
后续步骤
在本快速入门中,你预配并激活了托管 HSM。 若要详细了解托管 HSM 以及如何将其与应用程序集成,请继续阅读以下文章。
- 请参阅托管 HSM 概述
- 了解如何管理托管 HSM 中的密钥
- 了解托管 HSM 的角色管理
- 审查 保护 Azure 托管 HSM 部署