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

将受 HSM 保护的密钥导入 Key Vault (BYOK)

为了提高使用 Azure Key Vault 时的可靠性,可以在硬件安全模块 (HSM) 中导入或生成密钥;该密钥永远不会离开 HSM 边界。 此场景通常被称为创建自己的密钥 (BYOK)。 Key Vault 使用经过 FIPS 140 验证的 HSM 来保护密钥。

使用本文中的信息,可帮助规划、生成并传输自己的受 HSM 保护的密钥,以便与 Azure Key Vault 一起使用。

注意

此功能不适用于由 21Vianet 运营的 Microsoft Azure。

此导入方法仅适用于支持的 HSM

有关详细信息,以及有关如何开始使用 Key Vault 的教程(包括如何为 HSM 保护的密钥创建密钥保管库),请参阅什么是 Azure Key Vault?

概述

这里是编写过程的概述。 本文后面将介绍要完成的具体步骤。

  • 在 Key Vault 中,生成一个密钥(称为密钥交换密钥 (KEK))。 KEK 必须是仅具有 import 密钥操作的 RSA-HSM 密钥。 只有 Key Vault 高级版和托管 HSM 支持 RSA-HSM 密钥。
  • 以 .pem 文件形式下载 KEK 公钥。
  • 将 KEK 公钥传输到连接到本地 HSM 的脱机计算机。
  • 在脱机计算机中,使用 HSM 供应商提供的 BYOK 工具来创建 BYOK 文件。
  • 目标密钥通过 KEK 进行加密,且在传输到 Key Vault HSM 之前一直处于加密状态。 只有加密版本的密钥会离开本地 HSM。
  • Key Vault HSM 内生成的 KEK 不可导出。 HSM 执行的规则是 Key Vault HSM 之外不存在 KEK 的明文版本。
  • KEK 必须位于将导入目标密钥的同一密钥保管库中。
  • 将 BYOK 文件上传到 Key Vault 时,Key Vault HSM 使用 KEK 私钥来解密目标密钥材料,并将其作为 HSM 密钥导入。 此操作完全在 Key Vault HSM 内发生。 目标密钥始终保留在 HSM 保护边界内。

先决条件

下表列出了在 Azure Key Vault 中使用 BYOK 的先决条件:

要求 更多信息
Azure 订阅 若要在 Azure Key Vault 中创建密钥保管库,需要 Azure 订阅。 注册免费试用版
用于导入受 HSM 保护的密钥的 Key Vault 高级版和托管 HSM 有关 Azure Key Vault 的服务层级和功能的详细信息,请参阅 Key Vault 定价
受支持的 HSM 列表中的 HSM 以及 HSM 供应商提供的 BYOK 工具和说明 必须具有 HSM 的权限并掌握如何使用 HSM 的基本知识。 请参阅支持的 HSM
Azure CLI 2.1.0 或更高版本 请参阅安装 Azure CLI

支持的 HSM

供应商名称 供应商类型 支持的 HSM 模型 详细信息
Cryptomathic ISV(企业密钥管理系统) 多个 HSM 品牌和型号,包括
  • nCipher
  • Thales
  • Utimaco
有关详细信息,请参阅 Cryptomathic 站点
Entrust 制造商,
HSM 即服务
  • HSM 的 nShield 系列
  • nShield 即服务
nCipher 新的 BYOK 工具和文档
Fortanix 制造商,
HSM 即服务
  • 自防御密钥管理服务 (SDKMS)
  • Equinix SmartKey
将 SDKMS 密钥导出到 BYOK 的云提供程序 - Azure Key Vault
IBM 制造商 IBM 476x, CryptoExpress IBM Enterprise Key Management Foundation
Marvell 制造商 所有具有以下固件版本的 LiquidSecurity HSM
  • 固件版本 2.0.4 或更高版本
  • 固件版本 3.2 或更高版本
Marvell BYOK 工具和文档
nCipher 制造商,
HSM 即服务
  • HSM 的 nShield 系列
  • nShield 即服务
nCipher 新的 BYOK 工具和文档
Securosys SA 制造商,
HSM 即服务
Primus HSM 系列,Securosys Clouds HSM Primus BYOK 工具和文档
StorMagic ISV(企业密钥管理系统) 多个 HSM 品牌和型号,包括
  • Utimaco
  • Thales
  • nCipher
请参阅 StorMagic 站点以了解详细信息
SvKMS 和 Azure Key Vault BYOK
Thales 制造商
  • 固件版本为 7.3 或更高版本的 Luna HSM 7 系列
Luna BYOK 工具和文档
Utimaco 制造商,
HSM 即服务
u.trust Anchor, CryptoServer Utimaco BYOK 工具和集成指南

支持的密钥类型

项名 密钥类型 密钥大小/曲线 说明
密钥交换密钥 (KEK) RSA 2,048 位
3,072 位
4,096 位
Azure Key Vault HSM 在 Azure Key Vault 中生成的由 HSM 支持的 RSA 密钥对
目标密钥
RSA 2,048 位
3,072 位
4,096 位
供应商 HSM 要传输到 Azure Key Vault HSM 的密钥
EC P-256
P-384
P-521
供应商 HSM 要传输到 Azure Key Vault HSM 的密钥

生成密钥并将其传输到 Key Vault 高级版 HSM 或托管 HSM

若要生成密钥并将其传输到 Key Vault 高级版或托管 HSM,请执行以下操作:

生成 KEK

KEK 是在 Key Vault 高级版或托管 HSM 中生成的 RSA 密钥。 KEK 用于对要导入的密钥(目标密钥)进行加密。

KEK 必须满足以下条件:

  • RSA-HSM 密钥(2,048 位;3,072 位;或 4,096 位)
  • 在你打算导入目标密钥的同一密钥保管库中生成
  • 在允许的关键操作设置为 import 的情况下创建

注意

KEK 必须将“import”作为唯一允许的密钥操作。 “import”与所有其他密钥操作是互斥的。

使用 az keyvault key create 命令创建将密钥操作设置为 import 的 KEK。 记录从以下命令返回的密钥标识符 (kid)。 (你将使用步骤 3 中的 kid 值。)

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --vault-name ContosoKeyVaultHSM

对于托管 HSM:

az keyvault key create --kty RSA-HSM --size 4096 --name KEKforBYOK --ops import --hsm-name ContosoKeyVaultHSM

下载 KEK 公钥

使用 az keyvault key download 将 KEK 公钥下载到 .pem 文件。 导入的目标密钥是使用 KEK 公钥进行加密的。

az keyvault key download --name KEKforBYOK --vault-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem

对于托管 HSM:

az keyvault key download --name KEKforBYOK --hsm-name ContosoKeyVaultHSM --file KEKforBYOK.publickey.pem

将 KEKforBYOK.publickey.pem 文件传输到脱机计算机。 下一步骤需要用到该文件。

生成并准备要传输的密钥

请参阅 HSM 供应商的文档,下载并安装 BYOK 工具。 按照 HSM 供应商提供的说明生成目标密钥,然后创建密钥传输包(BYOK 文件)。 BYOK 工具将使用步骤 1 中的 kid步骤 2 中下载的 KEKforBYOK.publickey.pem 文件在 BYOK 文件中生成加密的目标密钥。

将 BYOK 文件传输到连接的计算机。

注意

不支持导入 RSA 1,024 位密钥。 支持导入带有曲线 P-256K 的椭圆曲线密钥。

已知问题:仅固件版本 7.4.0 或更高版本支持从 Luna HSM 导入 RSA 4K 目标密钥。

将密钥传输到 Azure Key Vault

若要完成密钥导入,请将密钥传输包(BYOK 文件)从断开连接的计算机传输到连接到 Internet 的计算机。 使用 az keyvault key import 命令将 BYOK 文件上传到 Key Vault HSM。

若要导入 RSA 密钥,请使用以下命令。 --kty 参数可选,默认值为“RSA-HSM”。

az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok

对于托管 HSM

az keyvault key import --hsm-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok

若要导入 EC 密钥,必须指定密钥类型和曲线名称。

az keyvault key import --vault-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --kty EC-HSM --curve-name "P-256" --byok-file KeyTransferPackage-ContosoFirstHSMkey.byok

对于托管 HSM

az keyvault key import --hsm-name ContosoKeyVaultHSM --name ContosoFirstHSMkey --byok-file --kty EC-HSM --curve-name "P-256" KeyTransferPackage-ContosoFirstHSMkey.byok

如果上传成功,Azure CLI 将显示导入密钥的属性。

后续步骤

现在可以在密钥保管库中使用此受 HSM 保护的密钥。 有关详细信息,请参阅此价格和功能比较