通过


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

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

在本快速入门中,你将使用 Azure CLI 创建和激活Azure 密钥保管库托管 HSM(硬件安全模块)。 托管 HSM 是一种完全托管、高度可用、符合标准的单租户云服务,可用于使用 FIPS 140-3 级别 3 验证的 HSM 来保护云应用程序的加密密钥。 有关托管 HSM 的详细信息,请查看 概述

Prerequisites

需要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:

选项 示例/链接
选择代码或命令块右上角的“试用”。 选择 Try It不会自动将代码或命令复制到Cloud Shell。 显示 Azure Cloud Shell 的“尝试一下”示例的屏幕截图。
转到 https://shell.azure.com,或选择 Launch Cloud Shell 按钮在浏览器中打开Cloud Shell。 用于启动 Azure Cloud Shell 的按钮。
选择Azure门户右上角菜单栏上的Cloud Shell按钮 屏幕截图,显示 Azure 门户中的“Cloud Shell”按钮

若要使用Azure Cloud Shell,

  1. 启动 Cloud Shell。

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

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

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

登录到 Azure

若要使用 CLI 登录到Azure,请输入:

az login

有关通过 CLI 进行身份验证选项的详细信息,请参阅 Sign with Azure CLI

创建资源组

资源组是在其中部署和管理Azure资源的逻辑容器。 使用 az group create 命令在 eastus 位置创建一个名为 myResourceGroup 的资源组 。

az group create --name "myResourceGroup" --location "EastUS"

创建托管 HSM

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

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

预配托管 HSM

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

若要创建托管 HSM 资源,请提供以下输入:

  • 托管 HSM 名称:只能包含数字(0-9)、字母(a-z、A-Z)和连字符(-)的 3 到 24 个字符的字符串。

    重要

    每个托管 HSM 都必须有唯一名称。 在以下示例中,将 <hsm-name> 替换为您自己的唯一托管 HSM 名称。

  • 资源组名称:myResourceGroup

  • 位置: EastUS

  • 初始管理员的列表。

以下示例在资源组 <hsm-name> 中创建一个 HSM,该 HSM 驻留在 EastUS 位置,当前已登录的用户是唯一的管理员,以及软删除的 7 天保留期。 你将继续为托管 HSM 付费,直到在软删除期间被清除。 有关详细信息,请参阅托管 HSM 软删除和清除保护,并阅读有关托管 HSM 软删除的详细信息。

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

注意

如果将托管标识用作托管 HSM 的初始管理员,请在 --administrators 后输入托管标识的 OID/PrincipalID,而不是 ClientID。

注意

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

警告

托管 HSM 实例始终可用。 如果使用标志启用清除保护 --enable-purge-protection ,则需支付整个保留期的费用。

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

  • 名称:指定的名称。 会在其他命令中使用此名称。
  • hsmUri:HSM 的 URI(例如 https://<hsm-name>.managedhsm.azure.net)。 通过其 REST API 使用 HSM 的应用程序必须使用此 URI。

您的 Azure 帐户现在有权执行此托管 HSM 上的任何操作。 到目前为止,尚未授权其他任何人。

激活托管 HSM

在激活 HSM 之前,将禁用所有数据平面命令。 无法创建密钥或分配角色。 只有你在创建命令期间分配的指定管理员才能激活 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 处于活动状态,可供你使用。

清理资源

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

如果不再需要资源组和所有相关资源,可以使用 Azure CLI az group delete 命令删除资源组和所有相关资源:

az group delete --name "myResourceGroup"

警告

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

后续步骤

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