你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 Azure CLI 预配和激活托管 HSM

本快速入门使用 Azure CLI 创建和激活 Azure Key Vault 托管 HSM(硬件安全模块)。 托管 HSM 是一项完全托管、高度可用、单租户、符合标准的云服务,通过该服务,你可以使用 FIPS 140-2 级别 3 验证的 HSM 保护云应用程序的加密密钥。 若要详细了解托管 HSM,可参阅概述

先决条件

若要完成本文中的步骤,必须具备:

  • Microsoft Azure 订阅。 如果没有该帐户,可以注册免费试用版
  • Azure CLI 版本 2.25.0 或更高版本。 运行 az --version 即可查找版本。 如需进行安装或升级,请参阅安装 Azure CLI

Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 Screenshot that shows an example of Try It for Azure Cloud Shell.
转到 https://shell.azure.com 或选择启动 Cloud Shell 按钮可在浏览器中打开 Cloud Shell。 Button to launch Azure Cloud Shell.
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 Screenshot that shows the Cloud Shell button in the Azure portal

若要使用 Azure Cloud Shell,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块(或命令块)上的“复制”按钮以复制代码或命令。

  3. 在 Windows 和 Linux 上选择 Ctrl+Shift+V,或在 macOS 上选择 Cmd+Shift+V 将代码或命令粘贴到 Cloud Shell 会话中。

  4. 选择“Enter”运行代码或命令。

登录 Azure

若要使用 CLI 登录到 Azure,可以键入:

az login

创建资源组

资源组是在其中部署和管理 Azure 资源的逻辑容器。 以下示例会在 eastus2 位置创建一个名为 ContosoResourceGroup 的资源组。

az group create --name "ContosoResourceGroup" --location eastus2

创建托管 HSM

创建托管 HSM 的过程分为两步:

  1. 预配“托管 HSM”资源。
  2. 下载名为安全域的项目来激活托管 HSM。

预配托管 HSM

使用 az keyvault create 命令创建托管 HSM。 此脚本包含 3 个必需参数:资源组名称、HSM 名称和地理位置。

需提供以下输入才能创建“托管 HSM”资源:

  • 要将其放置在订阅中的资源组。
  • Azure 位置。
  • 初始管理员的列表。

以下示例会在资源组 ContosoResourceGroup 中创建一个名为 ContosoMHSM 的 HSM,该 HSM 位于美国东部 2 位置,以当前已登录用户为唯一管理员,其软删除保留期为 7 天。 托管 HSM 将继续计费,直到在软删除期间将其清除。 有关详细信息,请参阅托管 HSM 软删除和清除保护,并阅读有关托管 HSM 软删除的详细信息。

oid=$(az ad signed-in-user show --query id -o tsv)
az keyvault create --hsm-name "ContosoMHSM" --resource-group "ContosoResourceGroup" --location "eastus2" --administrators $oid --retention-days 7

注意

如果使用托管标识作为托管 HSM 的初始管理员,则应在“--administrators”后面输入托管标识的 OID/PrincipalID,而不是 ClientID。

注意

运行 create 命令可能需要几分钟的时间。 它成功返回输出后,便可激活 HSM。

警告

托管 HSM 实例被视为始终在使用中。 如果选择使用 --enable-purge-protection 标志启用清除保护,则整个保留期都会计费。

此命令的输出会显示创建的托管 HSM 的属性。 两个最重要的属性是:

  • 名称:在本示例中,名称为 ContosoMHSM。 将在其他命令中使用此名称。
  • hsmUri:在本示例中,URI 为“https://contosohsm.managedhsm.azure.net.” 通过其 REST API 使用 HSM 的应用程序必须使用此 URI。

Azure 帐户现已获得授权,可在此托管 HSM 上执行任何作业。 到目前为止,尚未授权其他任何人。

激活托管 HSM

在激活 HSM 之前,所有数据平面命令都处于禁用状态。 例如,你将无法创建密钥或分配角色。 只有在 create 命令期间分配的指定管理员才能激活 HSM。 必须下载安全域才能激活 HSM。

若要激活 HSM,需执行以下操作:

  • 提供至少 3 个(至多 10 个)RSA 密钥对
  • 指定解密安全域所需的最小密钥数(称为“仲裁”)

若要激活 HSM,请向 HSM 发送至少 3 个(最多 10 个)RSA 公钥。 HSM 利用这些密钥对安全域进行加密,并将其发回。 一旦成功完成此安全域下载,HSM 便可使用。 还需要指定仲裁,即解密安全域所需的最小私钥数。

下面的示例演示如何使用 openssl 生成 3 个自签名证书。

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 密钥对和安全域文件。

使用 az keyvault security-domain download 命令下载安全域并激活托管 HSM。 下面的示例使用 3 个 RSA 密钥对(此命令只需要公钥),并将仲裁设置为 2。

az keyvault security-domain download --hsm-name ContosoMHSM --sd-wrapping-keys ./certs/cert_0.cer ./certs/cert_1.cer ./certs/cert_2.cer --sd-quorum 2 --security-domain-file ContosoMHSM-SD.json

请安全地存储安全域文件和 RSA 密钥对。 你需要它们进行灾难恢复,还需要用它们再创建一个共享同一安全域的托管 HSM,这样二者才可共享密钥。

成功下载安全域后,HSM 将处于活动状态并可供使用。

清理资源

本系列中的其他快速入门和教程是在本快速入门的基础上制作的。 如果打算继续使用后续的快速入门和教程,则可能需要保留这些资源。

如果不再需要资源组和所有相关的资源,可以使用 az group delete 命令将其删除。 可以删除资源,如下所示:

az group delete --name ContosoResourceGroup

警告

删除资源组会将托管 HSM 置于软删除状态。 托管 HSM 将继续计费,直到被清除。 请参阅托管 HSM 软删除和清除保护

后续步骤

在本快速入门中,你预配并激活了托管 HSM。 若要详细了解托管 HSM 以及如何将其与应用程序集成,请继续阅读以下文章。