Azure Key Vault 和 Azure 托管 HSM 不允许导出密钥,以保护密钥材料,并确保无法更改密钥的 HSM 属性。
如果希望密钥高度可移植,最好在受支持的 HSM 中创建密钥并将其导入 Azure Key Vault 或 Azure 托管 HSM。
注释
无导出规则的唯一例外是创建具有特定 密钥发布策略的密钥。 此策略仅允许将密钥导出到您明确定义的受信任机密计算环境(安全隔离区)。 这种有限的导出功能专为特定的安全计算方案设计,与常规用途密钥导出不同。
有几个方案需要迁移关键工作负荷:
- 切换安全边界,例如在订阅、资源组或所有者之间切换时。
- 由于给定区域中存在合规性边界或风险而移动区域。
- 更改为新产品/服务,例如从 Azure Key Vault 更改为 Azure 托管 HSM,后者提供比 Key Vault Premium 更高的安全性、隔离性和合规性。
下面我们讨论了将工作负载迁移到使用新密钥的几种方法,这些密钥可以迁移到新保管库或新的托管 HSM 中。
使用客户管理的密钥的 Azure 服务
对于使用 Key Vault 中的密钥的大多数工作负荷,将密钥迁移到新位置(不同订阅或区域中的新托管 HSM 或新密钥保管库)的最有效方法是:
- 在新保管库或托管 HSM 中创建新密钥。
- 通过将工作负荷的托管标识分配给 Azure Key Vault 或 Azure 托管 HSM 中的相应 RBAC 角色,授予工作负荷对新密钥的访问权限。
- 更新工作负荷以使用新密钥作为客户管理的加密密钥。
- 保留旧密钥,直到不再需要该密钥最初保护的工作负载数据备份。
示例:将 Azure 存储迁移到新的客户管理的密钥
如果对 Azure 存储使用客户管理的密钥,可以按照以下步骤迁移到新密钥:
- 在目标密钥保管库或托管 HSM 中创建新密钥。
- 按照 配置现有存储帐户的客户管理的密钥 中的说明更新存储帐户以使用新密钥。
- 将以前的客户管理的密钥保持可用状态,直到存储服务完全转换为新密钥。
- 确认所有作都使用新密钥正常工作后,可以安全地停用上一个密钥(但如果你需要访问旧备份,请不要删除它)。
此模式适用于支持客户管理的密钥的许多 Azure 服务。
自定义应用程序和客户端加密
对于使用 Key Vault 中的密钥直接加密数据的客户端加密或自定义应用程序,此过程有所不同:
- 创建新的密钥保管库或托管 HSM,并创建新的密钥加密密钥 (KEK)。
- 使用新密钥重新加密旧密钥加密的任何密钥或数据。 (如果密钥保管库中的密钥直接加密数据,可能需要一些时间,因为必须使用新密钥读取、解密和加密所有数据。尽可能使用 信封加密 ,使此类密钥轮换更快。
重新加密数据时,建议使用三级密钥层次结构,这将使未来的 KEK 轮换更容易:1. 存储在 Azure Key Vault 或托管 HSM 中的密钥加密密钥(KEK) 2. 主密钥 3. 从主密钥派生的数据加密密钥
- 在迁移后(以及删除之前)验证数据。
- 在不再需要与旧密钥/密钥保管库关联的数据备份之前,请勿删除旧密钥/密钥保管库。
在 Azure 信息保护中迁移租户密钥
在 Azure 信息保护中迁移租户密钥称为“重新生成密钥”或“密钥轮换”。 客户管理的 - AIP 租户密钥生命周期操作 提供了关于如何执行此操作的详细说明。
在不再需要使用旧租户密钥保护的内容或文档之前,删除旧租户密钥是不安全的。 如果要迁移受新密钥保护的文档,必须:
- 从使用旧租户密钥保护的文档中删除保护。
- 再次应用保护,这将使用新的租户密钥。