CMEK 简介

本页面介绍如何将 CMEK 与 Apigee 搭配使用。

概览

默认情况下,Google Cloud 会使用 Google 管理的加密密钥自动加密静态数据。如果您有与保护数据的密钥相关的合规性或监管要求,则可以使用客户管理的加密密钥 (CMEK)。

如需详细了解如何将 CMEK 用于 Apigee,请参阅将 CMEK 与 Apigee 搭配使用。如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud Key Management Service 文档

使用客户管理的加密密钥 (CMEK) 不一定提供比 Google 的默认加密机制更高的安全性:但是,您可以控制密钥的生命周期和管理的更多方面,以满足安全性和合规性要求。

CMEK 的优势

如果您需要更好地控制 Google 管理的加密密钥所允许的密钥操作,可以使用客户管理的加密密钥。这些密钥是使用 Cloud Key Management Service (Cloud KMS) 创建和管理的,并且您需要将密钥作为软件密钥存储在 HSM 集群中或存储在外部

密钥管理功能由 Cloud KMS 服务提供。常见用例包括:

  • 轮替密钥。自动或手动轮替密钥。请注意,轮替密钥时,先前存储在 Apigee 中的数据不会自动使用新密钥版本重新加密,只要用于加密的先前密钥版本未停用或销毁,就可以继续访问该数据。
  • 启用或停用密钥版本。停用密钥版本后,将无法访问使用该密钥版本加密的 Apigee 数据。如需恢复对数据的访问权限,您可以重新启用该密钥。
  • 销毁密钥版本销毁密钥版本时,使用该密钥版本加密的任何 Apigee 数据都将变得不可读取且不可恢复。这是一项永久性且不可逆转的操作
  • 使用 IAM 撤消 Apigee 服务代理对密钥的访问权限。如果执行此操作,Apigee 将无法访问由任何密钥版本加密的任何控制平面数据。依赖于数据解密的 Apigee API 操作将失败。通过重新授予对密钥的访问权限可以恢复对数据的访问权限,并且解密数据的 Apigee API 操作将恢复。

配额

使用 CMEK 密钥可能会消耗某些 Cloud KMS 配额。如需了解 Cloud KMS 配额的最新信息,请参阅配额

撤消加密密钥

如果您认为 Google Cloud 中的 Apigee 数据遭到泄露,您可以撤消加密密钥。撤消运行时 CMEK 以使运行时实例出现故障,并且无法访问网关数据。撤消控制平面 CMEK,使 Apigee 无法执行分析工作和部署新的代理。

将 CMEK 与 Apigee 搭配使用

Apigee 加密密钥用于运行时和控制平面数据,并在预配过程中创建。

Apigee 控制平面数据使用与运行时数据不同的加密密钥进行加密,并且可能存储在不同的区域。根据CMEK文档所述,此加密方式仅适用于静态数据,即最终存储在磁盘上的数据。

Apigee 控制平面数据包括代理配置(软件包)、一些环境配置数据和分析数据。Apigee 运行时数据包括应用数据,例如 KVM、缓存和客户端密钥,这些数据随后存储在运行时数据库中。

如需了解加密密钥类型的说明,请参阅 Apigee 加密密钥简介

您只能在创建 Apigee 组织时添加加密密钥;分配 CMEK 后,您无法在创建组织后更改为其他 CMEK。

数据驻留控制平面 CMEK 区域

在区域化 Apigee 控制平面中,您为控制平面选择了两个加密密钥。这是因为 Apigee 控制平面底层的某些组件始终位于控制平面位置的单区域中。如需了解详情,请参阅数据驻留区域

详细信息 所需密钥

控制平面区域是控制平面的运行位置。Apigee 中的控制平面是一个抽象概念,其中多个底层组件共同构成了 Apigee 控制平面。控制平面数据是代理配置和分析存储。

其他控制平面数据(例如分析处理、门户)位于控制平面的子区域中。

所有子区域组件都将位于同一区域。

控制平面数据的一个密钥。

控制平面子区域数据的一个密钥。

如何创建加密密钥

默认情况下,Google 会在预配过程中管理加密密钥的创建:不过,您可以自己创建它们。如需了解详情,请参阅 Apigee 加密密钥简介

风险和缓解

本部分介绍潜在威胁和可以执行的操作。

  • 风险:
    • 密钥泄露:当攻击者获得对加密密钥的访问权限时(途径可能是利用 KMS 中的漏洞或针对密钥管理员发起攻击),发生这种情况。
    • 拒绝服务攻击:攻击者可以通过攻击 KMS 或存储系统来干扰对加密密钥或数据的访问。
    • 密钥丢失:意外删除或丢失密钥可能会导致数据丢失或无法访问。
  • 缓解措施:
    • 实施强大的访问权限控制和密钥管理政策。
    • 监控 KMS 日志和活动是否存在可疑行为。

问题排查

下表介绍了使用 CMEK 加密的 configstore 数据时可能出现的一些常见错误情况、Apigee API 返回的大致错误消息以及建议的问题排查步骤。

错误消息/问题 原因 要采取的步骤
Apigee does not have permission to access key "..." 用户已撤消 Apigee 对提供的 KMS 密钥的访问权限,即 通过移除 roles/cloudkms.cryptoKeyEncrypterDecrypter 角色来撤消。 用户应检查 KMS 密钥上配置的角色,并确保 Apigee 服务代理具有必要的权限。
Unable to encrypt/decrypt data. Cloud KMS Error: "..." is not enabled, current state is: DESTROYED. 用户已停用或删除用于加密/解密所请求数据的密钥版本。 如有可能,用户应重新启用该密钥版本。如果密钥或密钥版本被销毁,则数据不可恢复(设计使然)。
No new Analytics data for US/EU users 此问题的其中一个可能的原因是用户已撤消/停用/删除单区域密钥。 用户应重新启用/恢复单区域密钥访问权限。
Control plane key "..." in region "..." is not valid for this control plane instance. Supported region(s) are "…". 用户在一个区域中提供了单区域控制平面密钥,但该区域对控制平面的实例提供的区域或多区域无效或不受支持。 用户必须在其中一个受支持的区域中提供密钥,也可以选择使用其他控制平面实例。
Multi-region control plane key is not valid for this control plane instance. Specify only the "apiConsumerDataEncryptionKeyName" field. 用户在仅存在于单区域的控制平面(即,不是多区域控制平面)中提供了多区域控制平面密钥。 用户必须省略多区域密钥字段,或者选择使用多区域控制平面实例。
Multi-region control plane key is not valid for this control plane instance. Specify a multi-region key with region "..." 用户向错误的多区域控制平面实例提供了多区域控制平面密钥(例如,向“eu”控制平面实例提供“us”密钥) 用户必须在正确的多区域位置使用多区域密钥,或选择使用其他多区域控制平面实例。