你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
Key Vault 支持两种类型的资源:密钥保管库和托管硬件安全模块(HSM)。 本文介绍托管 HSM。 若要了解如何管理保管库,请参阅 使用 Azure CLI 管理 Key Vault。
有关托管 HSM 的概述,请参阅 什么是托管 HSM?
先决条件
若要完成本文中的步骤,必须准备好以下项:
- Microsoft Azure 订阅。 如果没有,可以注册 免费试用版。
- Azure CLI 版本 2.25.0 或更高版本。 运行
az --version即可查找版本。 如果需要安装或升级,请参阅 安装 Azure CLI。 - 订阅中的托管 HSM。 请参阅快速入门:使用 Azure CLI 预配和激活托管 HSM,了解如何预配和激活托管 HSM。
Azure Cloud Shell
Azure 托管 Azure Cloud Shell,这是一个可以通过浏览器使用的交互式 shell 环境。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用,以使用 Azure 服务。 可以使用 Cloud Shell 预安装命令运行本文中的代码,而无需在本地环境中安装任何内容。
若要启动 Azure Cloud Shell,请执行以下操作:
| 选项 | 示例/链接 |
|---|---|
| 在代码或命令块的右上角选择“试用”。 选择“试用”不会自动将代码或命令复制到 Cloud Shell。 |
|
| 转到 https://shell.azure.com或选择 “启动 Cloud Shell ”按钮,在浏览器中打开 Cloud Shell。 |
|
| 选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 |
|
若要使用 Azure Cloud Shell,请执行以下操作:
启动 Cloud Shell。
选择代码块(或命令块)上的“复制”按钮以复制代码或命令。
通过在 Windows 和 Linux 上按 Ctrl+Shift+V,或在 macOS 上按 Cmd+Shift+V,将代码或命令粘贴到 Cloud Shell 会话中。
选择 Enter 以运行代码或命令。
登录到 Azure
键入以下命令,使用 CLI 登录到 Azure:
az login
有关通过 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.azure.net/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.azure.net/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.azure.net/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.azure.net/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.azure.net/
删除密钥
使用 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.azure.net/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.azure.net/
恢复(撤销删除)已删除的密钥
使用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.azure.net/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.azure.net/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.azure.net/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.azure.net/deletedKeys/myrsakey --file myrsakey.backup
从文件中导入密钥
使用 az keyvault key import 命令从文件中导入密钥(仅限于 RSA 和 EC 类型)。 证书文件必须具有私钥,并且必须使用 PEM 编码(如 RFC 1421、1422、1423、1424 所定义)。
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.azure.net/deletedKeys/myrsakey --pem-file mycert.key --password 'mypassword'
若要将密钥从本地 HSM 导入托管 HSM,请参阅 将受 HSM 保护的密钥导入托管 HSM (BYOK)
后续步骤
- 有关密钥保管库命令的完整 Azure CLI 参考,请参阅 Key Vault CLI 参考。
- 有关编程参考,请参阅 Azure Key Vault 开发人员指南
- 详细了解托管 HSM 角色管理
- 详细了解 如何保护 Azure 托管 HSM 部署