使用 Azure CLI 管理 Azure 托管 HSM 中的密钥

注意

Key Vault 支持两种类型的资源:保管库和托管 HSM。 本文介绍托管 HSM。 若要了解如何管理保管库,请参阅 使用 Azure CLI 管理 Key Vault

有关托管 HSM 的概述,请参阅什么是托管 HSM?

先决条件

若要完成本文中的步骤,必须准备好以下项:

登录 Azure

键入以下命令,使用 CLI 登录到 Azure:

az cloud set -n AzureChinaCloud
az login
# az cloud set -n AzureCloud   //means return to Public Azure.

有关通过 CLI 登录选项的详细信息,请参阅 使用 Azure CLI 登录

注意

以下所有命令都显示了两种使用方法。 一个使用 --hsm-name--name (对于密钥名称)参数,另一个使用 --id 参数,可在其中指定整个 URL,包括适当的密钥名称。 如果调用方(用户或应用程序)没有控制平面的读取访问权限,而且只有数据平面的受限访问权限,则后一种方法非常有用。

注意

某些与密钥材料的交互需要特定的托管 HSM 本地 RBAC 权限。 有关内置托管 HSM 本地 RBAC 角色和权限的完整列表,请参阅 托管 HSM 本地 RBAC 内置角色。 若要向用户分配这些权限,请参阅 安全访问托管 HSM

创建 HSM 密钥

注意

生成或导入到托管 HSM 的密钥无法导出。 无导出规则的唯一例外是创建具有特定 密钥发布策略的密钥。 此策略仅允许将密钥导出到您明确定义的受信任机密计算环境(安全隔离区)。 这种有限的导出功能专为特定的安全计算方案设计,与常规用途密钥导出不同。 请参阅建议的最佳做法,了解密钥便携性和持续性。

使用 az keyvault key create 命令来创建密钥。

创建 RSA 密钥

此示例演示如何创建仅用于 wrapKey、unwrapKey作(--ops)的 3072 位 RSA 密钥。

az keyvault key create --hsm-name ContosoMHSM --name myrsakey --ops wrapKey unwrapKey --kty RSA-HSM --size 3072

## OR
# Note the key name (myrsakey) in the URI

az keyvault key create --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/keys/myrsakey --ops wrapKey unwrapKey --kty RSA-HSM --size 3072

请注意,get 操作仅返回公钥和密钥属性。 它不返回私钥(如果非对称密钥)或密钥材料(如果对称密钥)。

创建 EC 密钥

下面的示例演示如何创建包含 P-256 曲线的 EC 密钥,该密钥将仅用于 sign 和 verify 操作 (--ops),并有两个标记 usage 和 appname 。 标记有助于你将其他元数据添加到密钥,以便进行跟踪和管理。

az keyvault key create --hsm-name ContosoMHSM --name myec256key --ops sign verify  --tags 'usage=signing] appname=myapp' --kty EC-HSM --curve P-256

## OR
# Note the key name (myec256key) in the URI

az keyvault key create --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/keys/myec256key --ops sign verify  --tags 'usage=signing] appname=myapp' --kty EC-HSM --curve P-256

创建 256 位对称密钥

此示例演示如何创建仅用于加密和解密作(--ops)的 256 位对称密钥。

az keyvault key create --hsm-name ContosoMHSM --name myaeskey --ops encrypt decrypt  --tags --kty oct-HSM --size 256

## OR
# Note the key name (myaeskey) in the URI

az keyvault key create --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/keys/myaeskey --ops encrypt decrypt  --tags 'usage=signing] appname=myapp' --kty oct-HSM --size 256

查看密钥属性和标记

使用 az keyvault key show 命令查看密钥的属性、版本和标记。

az keyvault key show --hsm-name ContosoHSM --name myrsakey

## OR
# Note the key name (myaeskey) in the URI

az keyvault key show --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/keys/myrsakey

列出密钥

使用 az keyvault key list 命令列出托管 HSM 内的所有密钥。

az keyvault key list --hsm-name ContosoHSM

## OR
# use full URI

az keyvault key list --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/

删除密钥

使用 az keyvault key delete 命令删除托管 HSM 内的密钥。 软删除始终处于打开状态。 因此,已删除的密钥保持已删除状态,并且可以恢复,直到保留天数过去,此时将清除密钥(永久删除),且无法恢复。

az keyvault key delete --hsm-name ContosoHSM --name myrsakey

## OR
# Note the key name (myaeskey) in the URI

az keyvault key delete --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/keys/myrsakey

列出已删除的密钥

使用 az keyvault key list-deleted 命令列出托管 HSM 中处于已删除状态的所有密钥。

az keyvault key list-deleted --hsm-name ContosoHSM

## OR
# use full URI

az keyvault key list-deleted --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/

恢复(撤销删除)已删除的密钥

使用 az keyvault key list-deleted 命令列出托管 HSM 中处于已删除状态的所有密钥。 如果在恢复已删除的密钥时需要使用 --id 参数恢复(撤销删除)某个密钥,必须记下从 recoveryId 命令获取的已删除密钥的 az keyvault key list-deleted 值。

az keyvault key recover --hsm-name ContosoHSM --name myrsakey

## OR
# Note the key name (myaeskey) in the URI

az keyvault key recover --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey

清除(永久删除)密钥

使用 az keyvault key purge 命令清除(永久删除)密钥。

注意

如果托管 HSM 已启用清除保护,则无法执行清除操作。 该密钥在保留期过后自动清除。

az keyvault key purge --hsm-name ContosoHSM --name myrsakey

## OR
# Note the key name (myaeskey) in the URI

az keyvault key purge --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey

创建单个密钥备份

使用 az keyvault key backup 创建密钥备份。 备份文件是一个加密的 blob,以加密方式绑定到源 HSM 的安全域。 它只能在共享同一安全域的 HSM 中还原。 详细了解安全域

az keyvault key backup --hsm-name ContosoHSM --name myrsakey --file myrsakey.backup

## OR
# Note the key name (myaeskey) in the URI

az keyvault key backup --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey  --file myrsakey.backup

从备份中还原单个密钥

使用 az keyvault key restore 还原单个密钥。 创建备份的源 HSM 必须与要在其中还原密钥的目标 HSM 共享同一安全域。

注意

如果存在处于活动或已删除状态的同名密钥,还原将不会成功。

az keyvault key restore --hsm-name ContosoHSM --name myrsakey --file myrsakey.backup

## OR
# Note the key name (myaeskey) in the URI

az keyvault key restore --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey --file myrsakey.backup

从文件中导入密钥

使用 az keyvault key import 命令从文件中导入密钥(仅限 RSA 和 EC)。 证书文件必须具有私钥,并且必须使用 PEM 编码(如 RFC 1421142214231424 所定义)。

az keyvault key import --hsm-name ContosoHSM --name myrsakey --pem-file mycert.key --pem-password 'mypassword'

## OR
# Note the key name (myaeskey) in the URI

az keyvault key recover --id https://ContosoMHSM.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey --pem-file mycert.key --password 'mypassword'

若要将密钥从本地 HSM 导入托管 HSM,请参阅 将受 HSM 保护的密钥导入托管 HSM (BYOK)

后续步骤