注意事项
密钥保管库支持两种类型的资源:保管库和托管 HSM。 本文介绍托管硬件安全模块 (HSM)。 若要了解如何管理保管库,请参阅 Quickstart:使用 Azure CLI。
有关托管 HSM 的概述,请参阅什么是托管 HSM?
先决条件
需要一个 Azure 订阅。 如果没有帐户,请在开始之前创建 一个免费帐户 。
还需要:
注意事项
下面的所有命令都显示了 CLI 的两种用法方法。 一种方法使用 --hsm-name 和 --name (对于键名称)参数。 另一种方法使用 --id 参数,可在适当时指定整个 URL,包括密钥名称。 当调用方(用户或应用程序)在控制平面上没有读取访问权限,并且在数据平面上只有受限的访问权限时,后一种方法非常实用。
某些与密钥材料的交互需要特定的托管 HSM 本地 RBAC 权限。 有关内置托管 HSM 本地 RBAC 角色和权限的完整列表,请参阅 托管 HSM 本地 RBAC 内置角色。 若要向用户分配这些权限,请参阅 安全访问托管 HSM。
创建 HSM 密钥
注意事项
无法导出生成或导入到托管 HSM 中的密钥。 无导出规则的唯一例外是创建具有特定 密钥发布策略的密钥。 此策略仅允许将密钥导出到您明确定义的受信任机密计算环境(安全隔离区)。 这种有限的导出功能专为特定的安全计算方案设计,与常规用途密钥导出不同。 有关关键可移植性和持久性的建议最佳做法,请参阅链接的文章。
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择 “密钥”。
从“生成/导入/还原备份”下拉列表中选择“生成/导入”。
选择密钥类型(RSA-HSM、EC-HSM 或 oct-HSM),设置密钥大小或曲线、名称和允许的操作,然后选择“ 创建”。
使用 az keyvault key create 命令创建密钥。
创建 RSA 密钥
此示例演示如何创建仅用于 wrapKey 和 unwrapKey 操作的 3072 位 RSA 密钥(--ops)。
az keyvault key create --hsm-name <hsm-name> --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://<hsm-name>.managedhsm.chinacloudapi.cn/keys/myrsakey --ops wrapKey unwrapKey --kty RSA-HSM --size 3072
该 get 操作仅返回公钥和密钥属性。 它不返回私钥(如果非对称密钥)或密钥材料(如果对称密钥)。
创建 EC 密钥
以下示例演示如何使用 P-256 曲线创建 EC 密钥。 密钥仅用于 签名和验证 操作(--ops),并且具有两个标记、 用法 和 appname。 使用标记将额外的元数据添加到密钥以跟踪和管理。
az keyvault key create --hsm-name <hsm-name> --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://<hsm-name>.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 <hsm-name> --name myaeskey --ops encrypt decrypt --tags 'usage=encryption' 'appname=myapp' --kty oct-HSM --size 256
## OR
# Note the key name (myaeskey) in the URI
az keyvault key create --id https://<hsm-name>.managedhsm.chinacloudapi.cn/keys/myaeskey --ops encrypt decrypt --tags 'usage=encryption' 'appname=myapp' --kty oct-HSM --size 256
使用 Add-AzKeyVaultKey cmdlet 创建密钥。
创建 RSA 密钥
此示例演示如何创建仅用于 wrapKey 和 unwrapKey 操作的 3072 位 RSA 密钥。
Add-AzKeyVaultKey -HsmName <hsm-name> -Name myrsakey -KeyType RSA-HSM -Size 3072 -KeyOps wrapKey,unwrapKey
创建 EC 密钥
此示例演示如何使用 P-256 曲线创建 EC 密钥进行 签名和验证 操作。
Add-AzKeyVaultKey -HsmName <hsm-name> -Name myec256key -KeyType EC-HSM -CurveName P-256 -KeyOps sign,verify -Tag @{usage='signing'; appname='myapp'}
创建 256 位对称密钥
此示例演示如何创建用于加密和解密操作的 256 位对称密钥。
Add-AzKeyVaultKey -HsmName <hsm-name> -Name myaeskey -KeyType oct-HSM -Size 256 -KeyOps encrypt,decrypt -Tag @{usage='encryption'; appname='myapp'}
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择 “密钥”。
选择要查看的键。 门户显示密钥的属性、版本和标记。
az keyvault key show使用命令查看键的属性、版本和标记。
az keyvault key show --hsm-name <hsm-name> --name myrsakey
## OR
# Note the key name (myaeskey) in the URI
az keyvault key show --id https://<hsm-name>.managedhsm.chinacloudapi.cn/keys/myrsakey
使用 Get-AzKeyVaultKey cmdlet 查看密钥的属性、版本和标记。
Get-AzKeyVaultKey -HsmName <hsm-name> -Name myrsakey
列出密钥
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择 “密钥”。 门户列出了托管 HSM 中的所有密钥。
使用 az keyvault key list 命令列出托管 HSM 中的所有密钥。
az keyvault key list --hsm-name <hsm-name>
## OR
# use full URI
az keyvault key list --id https://<hsm-name>.managedhsm.chinacloudapi.cn/
使用 Get-AzKeyVaultKey cmdlet 列出托管 HSM 中的所有密钥。
Get-AzKeyVaultKey -HsmName <hsm-name>
删除密钥
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择 “密钥”。
选择要删除的密钥。
选择删除,然后确认。
az keyvault key delete使用命令从托管 HSM 中删除密钥。 软删除功能始终开启。 因此,已删除的密钥会保持已删除状态,你可以将其恢复,直到保留天数过。 之后,将清除密钥(永久删除),且无法恢复。
az keyvault key delete --hsm-name <hsm-name> --name myrsakey
## OR
# Note the key name (myaeskey) in the URI
az keyvault key delete --id https://<hsm-name>.managedhsm.chinacloudapi.cn/keys/myrsakey
使用 Remove-AzKeyVaultKey cmdlet 删除密钥。 软删除始终处于打开状态,因此,在保留期到期之前,已删除的密钥将保持可恢复状态。
Remove-AzKeyVaultKey -HsmName <hsm-name> -Name myrsakey
列出已删除的密钥
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择 “密钥”。
选择“ 管理已删除的密钥 ”以查看处于软删除状态的密钥。
使用 az keyvault key list-deleted 命令列出托管 HSM 中已删除状态中的所有密钥。
az keyvault key list-deleted --hsm-name <hsm-name>
## OR
# use full URI
az keyvault key list-deleted --id https://<hsm-name>.managedhsm.chinacloudapi.cn/
使用 Get-AzKeyVaultKey cmdlet 和 -InRemovedState 参数列出已删除的键。
Get-AzKeyVaultKey -HsmName <hsm-name> -InRemovedState
恢复(撤销删除)已删除的密钥
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择“ 密钥”,然后选择“ 管理已删除的密钥”。
选择要恢复的已删除密钥。
选择 “恢复”。
使用 az keyvault key list-deleted 命令列出托管 HSM 中已删除状态的所有密钥。 若要恢复(取消删除)密钥,请使用 --id 参数。 必须记下 recoveryId 从 az keyvault key list-deleted 命令获取的已删除密钥的值。
az keyvault key recover --hsm-name <hsm-name> --name myrsakey
## OR
# Note the key name (myaeskey) in the URI
az keyvault key recover --id https://<hsm-name>.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey
使用 Undo-AzKeyVaultKeyRemoval cmdlet 恢复已删除的密钥。
Undo-AzKeyVaultKeyRemoval -HsmName <hsm-name> -Name myrsakey
清除(永久删除)密钥
注意事项
如果托管 HSM 已启用清除保护,则不允许执行清除操作。 保留期过后,会自动清除密钥。
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择“ 密钥”,然后选择“ 管理已删除的密钥”。
选择要清除的已删除密钥。
选择“ 清除”,然后确认。
az keyvault key purge使用命令清除密钥(永久删除)。
az keyvault key purge --hsm-name <hsm-name> --name myrsakey
## OR
# Note the key name (myaeskey) in the URI
az keyvault key purge --id https://<hsm-name>.managedhsm.chinacloudapi.cn/deletedKeys/myrsakey
使用 Remove-AzKeyVaultKey cmdlet 和 -InRemovedState 参数来清除已删除的密钥。
Remove-AzKeyVaultKey -HsmName <hsm-name> -Name myrsakey -InRemovedState
创建单个密钥备份
密钥备份目前在 Azure 门户中不可用。 使用Azure CLI或Azure PowerShell。
使用 az keyvault key backup 创建密钥备份。 备份文件是一个加密的 blob,以加密方式绑定到源 HSM 的安全域。 只能在共享同一安全域的 HSM 中还原它。 详细了解安全域。
az keyvault key backup --hsm-name <hsm-name> --name myrsakey --file myrsakey.backup
## OR
# Note the key name (myaeskey) in the URI
az keyvault key backup --id https://<hsm-name>.managedhsm.chinacloudapi.cn/keys/myrsakey --file myrsakey.backup
使用 Backup-AzKeyVaultKey cmdlet 创建密钥备份。 备份文件是一个加密的 blob,以加密方式绑定到源 HSM 的安全域。
Backup-AzKeyVaultKey -HsmName <hsm-name> -Name myrsakey -OutputFile myrsakey.backup
从备份中还原单个密钥
在 Azure 门户中,导航到托管 HSM 资源。
在左侧菜单中的 “设置”下,选择 “密钥”。
选择“ 生成/导入/还原备份 ”,然后 从备份中选择“还原密钥”。
浏览到并选择备份文件,然后选择“ 还原”。
使用 az keyvault key restore 还原单个密钥。 在其中创建备份的源 HSM 必须与还原密钥的目标 HSM 共享相同的安全域。
注意事项
如果具有相同名称的密钥处于活动或删除状态,还原操作将失败。
az keyvault key restore --hsm-name <hsm-name> --name myrsakey --file myrsakey.backup
## OR
# Note the key name (myaeskey) in the URI
az keyvault key restore --id https://<hsm-name>.managedhsm.chinacloudapi.cn/keys/myrsakey --file myrsakey.backup
使用 Restore-AzKeyVaultKey cmdlet 还原单个密钥。 在其中创建备份的源 HSM 必须与目标 HSM 共享相同的安全域。
注意事项
如果具有相同名称的密钥处于活动或删除状态,还原操作将失败。
Restore-AzKeyVaultKey -HsmName <hsm-name> -InputFile myrsakey.backup
从文件中导入密钥
密钥导入目前在Azure门户中不可用。 使用Azure CLI或Azure PowerShell。
az keyvault key import使用命令从文件导入密钥(仅 RSA 和 EC)。 证书文件必须具有私钥,并且必须使用 PEM 编码(如 RFC 1421、1422、1423、1424 中定义)。
az keyvault key import --hsm-name <hsm-name> --name myrsakey --pem-file mycert.key --pem-password 'mypassword'
## OR
# Note the key name (<key-name>) in the URI
az keyvault key import --id https://<hsm-name>.managedhsm.chinacloudapi.cn/keys/<key-name> --pem-file mycert.key --password 'mypassword'
使用 Add-AzKeyVaultKey cmdlet 和 -KeyFilePath 参数,从 PEM 文件导入密钥。
Add-AzKeyVaultKey -HsmName <hsm-name> -Name myrsakey -KeyFilePath ./mycert.key -KeyFilePassword (ConvertTo-SecureString -String 'mypassword' -AsPlainText -Force) -KeyType RSA-HSM
若要将密钥从本地 HSM 导入托管 HSM,请参阅将受 HSM 保护的密钥导入托管 HSM(BYOK)。
后续步骤