IBM Cloud Docs
在 Event Streams 中管理加密

在 Event Streams 中管理加密

默认情况下,IBM® Event Streams for IBM Cloud® 中的消息有效载荷数据使用随机生成的密钥进行静态加密。 虽然此缺省加密模型提供了静态安全性,但您可能需要更高级别的控制。 对于这些使用案例,Event Streams 通过以下 IBM Cloud® 密钥管理服务支持客户管理的加密:

  • IBM® Key Protect for IBM Cloud® (自带密钥——BYOK)可帮助您为 服务中的应用程序提供加密密钥。IBM Cloud 在管理车钥匙的生命周期时,您会了解到车钥匙由FIPS 140-2三级认证的云端硬件安全模块(HSM)保护,可防止信息被盗,从而从中受益。 有关使用 Key Protect的更多信息,请参阅 入门教程
  • Hyper Protect Crypto Services(保管自己的密钥 - KYOK)是由您控制的单租户专用 HSM。 该服务在通过 FIPS 140-2 级别 4 认证的硬件上构建,该级别是行业内任何云提供者提供的最高级别。 有关使用 Hyper Protect Crypto Services的更多信息,请参阅 入门教程

这些服务允许使用客户提供的密钥来控制加密。 禁用或删除该密钥后,您将无法再访问服务存储的数据,因为无法对其进行解密。

如果您需要以下功能,请考虑使用客户管理密钥:

  • 静态数据加密由您自己的密钥控制。
  • 对静态存储的数据生命周期进行明确控制。

客户管理的密钥在企业套餐上可用,并且仅在 2019 年 10 月之后创建的集群上可用。

删除客户管理的密钥是不可恢复的,这将导致丢失存储在 Event Streams 实例中的任何数据。

客户管理的加密未涵盖的内容

如果选择了客户管理的加密功能,请注意此加密仅涵盖 **** 消息有效内容数据。Event Streams 对与使用服务相关的其他静态数据进行加密。 但是,虽然已加密,但 使用客户管理的加密对非消息有效内容数据进行加密。 示例包括客户机元数据,例如主题名称,主题配置数据,存储在模式注册表中的模式以及与企业实例配置相关的元数据。

因此,请勿在此类客户机元数据中使用机密信息。

客户管理的加密的运作方式

Event Streams 使用一种称为信封加密的概念来实现客户管理的密钥。

包络加密是指使用一个加密密钥对另一个加密密钥进行加密的做法。 用于加密实际数据的密钥称为数据加密密钥 (DEK)。 DEK本身不会被存储,而是由第二个密钥(称为密钥加密密钥(KEK))进行包装,以创建一个包装的DEK。

要解密数据,必须首先对包装的 DEK 解包才能获取 DEK。 此过程只能通过访问 KEK 来实现,在本例中,KEK 是存储在 Key ProtectHyper Protect Crypto Services中的根密钥。

您拥有 KEK,此密钥由您在 Hyper Protect Crypto Services 或 Key Protect 服务中创建为根密钥。 Event Streams 服务绝不会看到根 (KEK) 密钥。 此密钥的存储和管理以及使用此密钥来打包和解包 DEK 完全在密钥管理服务中执行。 如果禁用或删除密钥,那么无法再解密数据。

为 Event Streams 启用客户管理的密钥

要供应 Event Streams 实例以使用客户管理的密钥,请完成以下步骤:

  1. 供应 Key ProtectHyper Protect Crypto Services的实例。
  2. 创建授权策略以允许 Event Streams 服务以“读取者”身份访问密钥管理服务实例。 更多信息,请参阅“使用授权在服务之间授予访问权限”。
  3. 创建根密钥或将其导入密钥管理服务实例中。
  4. 使用密钥管理服务实例 GUI 中的查看 CRN 选项,检索密钥的云资源名称(CRN)。
  5. 供应 Event Streams 的实例。 仅企业套餐上支持此功能。

如果通过 IBM Cloud® 控制台进行供应,请选择密钥管理服务实例,然后从该实例中选择根密钥。

如果通过CLI进行配置,请使用以下命令:

ibmcloud resource service-instance-create EVENT-STREAMS-INSTANCE-NAME messagehub ibm.message.hub.enterprise.3nodes.2tb REGION -p '{"kms_key_crn":"KMS_KEY_CRN"}'

无法更新没有客户管理密钥的现有群集,因为这种操作具有破坏性,会导致所有消息和主题定义丢失。 您必须删除实例,并使用加密密钥重新创建。

使用客户管理的密钥

在向 Event Streams 实例提供客户管理的密钥后,它具有以下附加功能。

阻止对数据的访问

要临时阻止访问,请禁用根密钥。 这样,Event Streams 就无法再访问数据,因为它无法再访问密钥。

要永久删除访问权限,请删除密钥。 但是,您必须极为谨慎,因为此操作不可恢复。 您无法访问存储在 Event Streams 实例中的任何数据。 这些数据无法恢复。

在这两种情况下,Event Streams 实例都会关闭,不再接受或处理连接。 系统将生成一个 Activity Tracker 事件来报告操作。 有关更多信息,请参阅 Activity Tracker 事件

授权将始终保留在 Event Streams 与密钥管理服务实例之间,即使在删除服务实例之后也是如此。Event Streams 将继续需要服务到位的服务策略来注销密钥。 要确定何时可以安全地除去服务到服务策略,请检查 KMS 根密钥上的关联资源。 如果根密钥仍与 Event Streams 实例相关联,请将策略保留在适当位置。 虽然除去此授权会阻止 Event Streams 将来访问您的数据,但已在使用的数据在一段时间内仍然可用。

在您使用 IBM Cloud 控制台或CLI取消 Event Streams 实例之前,您需要为其付费。 即使您选择阻止访问数据,仍会应用这些费用。

复原对数据的访问

仅当未删除密钥时,才能复原访问权。 要恢复访问权,请重新启用根密钥。 在经过很短的一段初始化时间后,Event Streams 实例会重新启动并再次开始接受连接。 这将保留所有数据,但会受实例中配置的正常保留时间限制的制约。

这将生成 Activity Tracker 事件以报告相应操作。 有关更多信息,请参阅 Activity Tracker 事件

轮换密钥

Key Protect 和 Hyper Protect Crypto Services 支持根据需求或按安排轮换根密钥。 轮换密钥时,Event Streams 通过重新包装 DEK 来采用新密钥,如 客户管理的加密工作方式 中所述。

这将生成 Activity Tracker 事件以报告相应操作。 有关更多信息,请参阅 Activity Tracker 事件

禁用客户管理的加密

启用客户管理加密后,无法将其关闭。 您必须改为删除服务实例,然后创建新实例。