Apigee CMEK 的最佳实践

本页介绍了使用 Apigee 的 CMEK 最佳实践。

风险防范

目前,Apigee 支持一组受限的客户管理的加密密钥功能。为避免意外删除 CMEK 密钥或密钥版本,我们建议您执行以下操作:

  • 加强访问权限控制:仅限可信的管理员或高级团队成员使用 roles/cloudkms.admin 角色或密钥销毁/更新权限。
  • 定期审核权限:确保权限不会随着时间的推移而无意扩大。
  • 自动删除密钥:请勿设置自动化功能来自动删除/停用密钥。

设置密钥销毁时长和轮替

  • 考虑延长默认的销毁时长:默认的预定销毁时长为 30 天。在创建密钥时设置自定义销毁时长,或通过组织政策强制执行更长的时长,可以在意外删除密钥时提供更多恢复时间。如果您认为销毁时间越长,风险越大,请注意,销毁时间越长,您就越有可能不小心删除密钥。您可以权衡好收益和风险,看看哪种时长最适合您。
  • 要求在销毁密钥之前先停用密钥:我们建议您在安排销毁密钥版本之前先停用密钥版本。这有助于验证密钥是否正在使用,也是确定是否可以安全地销毁密钥版本的重要步骤。
  • 实现密钥轮替:定期轮替密钥可限制密钥泄露的影响。如果密钥被破解,则定期轮替会限制容易被破解的实际消息数量。

Apigee 中的密钥轮替

密钥轮替的主要目的是减少使用单个密钥加密的数据量,而不是完全替换旧密钥版本。对于运行时密钥和控制平面密钥,原始密钥版本从创建之时起就一直与资源相关联。

说明性示例

  • Apigee 实例始终会使用在创建时处于活跃状态的主要 CMEK 密钥版本,即使在密钥轮替后也是如此。
  • 代理软件包将继续使用首次创建时处于活跃状态的主要 CMEK 密钥版本。但是,如果此代理捆绑包在密钥轮替后被修改,则其中的所有新数据都将使用新的主密钥版本进行加密。

当前限制:不支持自动重新加密

请务必注意,Apigee 目前不支持在轮替密钥时自动重新加密现有数据。系统将使用新的主密钥版本加密少量新数据。大多数数据(例如分析数据、运行时磁盘数据和旧版代理修订版本)仍将使用旧密钥版本进行加密。

密钥停用

停用或销毁密钥会中断 Apigee 功能。如果您先停用密钥,则可以将其重新启用,以防误报。

如果您怀疑密钥(或密钥版本)遭到破解,请执行以下操作:

  • 高风险场景:如果您认为 Apigee 数据属于敏感数据,并且攻击者很有可能利用这些数据,请立即停用密钥撤消对其的访问权限。您应先停用密钥,然后再重新创建 apigee 实例和 apigee 组织。
  • 低风险场景:如果尽量缩短停机时间比潜在风险更重要,您应先重新创建 apigee 实例和 apigee 组织,然后再停用/删除 CMEK。请参阅下文,了解如何通过投资备份/恢复来主动防止停机
  • 与支持团队联系:如果您认为某个密钥已遭泄露,需要将其停用,建议您与 Google Cloud Customer Care 联系。

请查看下文中有关停用/撤消/销毁密钥的影响。停用密钥后,您需要重新创建 apigee 组织/实例。请参阅最佳实践

  • 运行时 CMEK 遭到破解:使用新的 CMEK 创建新实例,然后在流量迁移后删除原始实例以及旧的运行时 CMEK。
  • 所有 CMEK 遭到破解:使用新的 CMEK 密钥创建新的 apigee 组织,复制您的配置,转移流量,然后关闭旧组织并停用/删除原始 CMEK。
  • Google Cloud Customer Care 团队联系:如果用于删除/重新创建实例或 apigee 组织的 API 需要很长时间,请与 Google Cloud Customer Care 团队联系。

密钥停用/撤消/销毁的影响

停用、撤消或销毁密钥会导致 Apigee 无法正常运行。影响如下:

  • 停用/撤消/销毁整个密钥:Apigee 面向客户的 API 将立即停止运行。内部系统将在几分钟内失败,从而影响代理部署、运行时流量、分析和 API 安全性。由于磁盘重新装载问题,实例将在几周内完全无法启动。
  • 停用/撤消/销毁密钥版本(包括主密钥版本和以前的密钥版本):使用该密钥版本的 Apigee 面向客户的 API 将立即停止运行。一些内部系统和运行时流量将受到影响。如果密钥版本用于磁盘加密,则实例可能无法启动。

重新启用密钥

如果密钥遭到破解是虚惊一场,或者您并非有意停用密钥,则可以在密钥被停用时重新启用该密钥。重新启用密钥可恢复面向客户的 API 的功能。内部系统应该会在几分钟内恢复。但是,在密钥不可用期间,API 安全性和分析可能会出现数据丢失。

  • 如果密钥停用时间较短:系统应该会恢复,但 API 安全和分析数据会丢失一些。
  • 如果密钥停用时间较长:系统将恢复为提供流量,但可能会导致数据不一致,即一个区域返回一个值,而之前停用的区域返回另一个值。请与 Google Cloud Customer Care 联系,以修复您的 Apigee 集群。

删除密钥

在删除密钥之前,请考虑执行以下操作:

使用 CI/CD 备份保护您的 Apigee 组织

如果客户管理的加密密钥 (CMEK) 遭到泄露,请立即采取措施停用、撤消或销毁遭到泄露的密钥。不过,这项必要的安全措施可能会导致您的 Apigee 系统无法正常运行,从而导致潜在的停机和服务中断。

为确保 Apigee 服务的停机时间最短或为零,您必须采取主动措施:持续备份贵组织的配置(持续集成/持续部署 [CI/CD] 备份)。请参阅可用的工具有关恢复 Apigee 组织的最佳实践

CI/CD 和 IaC 的强大功能

通过投资基础架构即代码 (IaC) 解决方案 Terraform 等工具,您可以根据备份配置顺畅地创建新的 Apigee 组织。借助这种简化流程,您可以快速高效地重新创建 Apigee 组织,最大限度地减少停机时间并确保业务连续性。

可用于使用情况的工具

您可以组合使用以下所有工具来定期备份 apigee 组织,并测试恢复流程。

最佳做法

  • 定期备份:安排定期备份,以确保您拥有最新的配置。请参阅导出/重新创建组织
  • 安全存储:将备份存储在安全的位置,例如加密存储库。
  • 测试恢复:定期测试恢复流程,以确保您能有效地恢复 Apigee 组织。定期测试恢复流程,以确保您可以快速将流量切换到新创建的 Apigee 组织。

导出/重新创建组织

apigeecli 工具是一个命令行工具,可用于管理 Apigee 资源。借助该 API,您可以在易于使用的命令行界面中执行与 Apigee API 相同的操作,类似于 gcloud 命令。
如果您想重新创建 Apigee 组织或迁移到其他 Apigee 组织,可以使用 apigeecli organizations exportapigeecli organizations import。它还可用作持续备份的基础。它可以导出和导入以下资源:

  • API 门户文档
  • API 门户类别
  • API 代理
  • API 安全配置和安全配置文件
  • 共享流
  • API 产品
  • 开发者
  • 包含凭据的开发者应用
  • 包含凭据的 AppGroup 和应用
  • 环境详情
  • 环境组
  • 数据采集器配置
  • 环境级密钥库和别名证书
  • 环境级目标服务器
  • 环境级引用
  • 组织、环境和代理级别的键值对映射 (KVM) 和条目
  • 密钥库和别名证书(不包括私钥)

该工具可以管理所有其他 Apigee 资源。您可以使用 apigeecli tree 查看完整的命令列表。

此工具有一些限制:

  • 密钥库需要在创建时保存私钥,并将其包含在本地备份文件中
  • OAuth 令牌无法备份和恢复,这意味着新创建的 Apigee 实例需要客户重新登录。
  • 系统不会迁移组织政策IAM 规则等访问权限控制。如果您想迁移这些规则,则需要使用 Google Cloud API。
  • 不支持 Google Analytics 报告导出,且分析指标不会复制到新的 apigee 组织中。
  • import 命令不会自动为您创建实例、envGroup、EnvAttachments、端点连接或部署代理。您可以管理这些资源,但不能直接通过 import 命令管理。
  • import 命令不会自动创建门户网站。您必须通过界面手动创建门户网站。
  • 我们建议您针对密钥删除进行灾难恢复,并定期测试恢复流程,以确保您可以快速将流量切换到新创建的 Apigee 组织。

前提条件

在开始之前,请确保满足以下前提条件。

  • 已安装 Apigee CLI:按照安装指南中的步骤安装 apigeecli
  • 身份验证:您必须拥有必要的权限和身份验证凭据才能与 Apigee 组织进行交互。确保您已设置:
    • Google Cloud SDK (gcloud):已安装并通过身份验证。
    • 访问令牌:使用 gcloud auth print-access-token 获取访问令牌。
  • 网络访问:确保您的网络允许访问 Apigee API。
  • 创建组织:创建您要迁移到的新的 apigee 组织。您可以创建不同类型的 apigee 组织;但请务必使用与原始组织相同的组织类型(随用随付或订阅)和相同类型的网络路由

导出 Apigee 组织

以下示例展示了命令示例。如需详细了解不同的标记,请参阅 apigeecli organizations export

# Sample command
mkdir apigee_backup
cd apigee_backup

# gcloud auth application-default login
export ORG_FROM=REPLACE
apigeecli organizations export -o $ORG_FROM --default-token

导入 Apigee 组织

以下示例展示了命令示例。如需详细了解不同的标记,请参阅 apigeecli organizations import

# Sample command
# gcloud auth application-default login
export ORG_TO=REPLACE
apigeecli organizations import -o $ORG_TO -f . --default-token

导入后步骤

创建实例并设置网络

如需创建实例并设置网络,请执行以下操作:

  1. 按照创建新实例中的步骤创建新实例。
  2. 配置北向流量:“北向”是指从外部或内部客户端通过负载均衡器流向 Apigee 的 API 流量。您需要确保正确配置 PSC 或 VPC,以便实例可供访问。您必须在新组织中设置环境组主机名。
  3. 配置南向流量:“南向”是指从 Apigee 到您的 API 代理目标服务的 API 流量。因此,您必须为 NAT 预留并激活新的 IP 地址,并在目标端点上重新配置防火墙/许可名单。

如需了解详情,请参阅 Apigee 网络选项

备份/恢复其他配置

使用以下任一方法备份/恢复其他配置:

部署代理

请使用以下方法之一来部署代理:

切换流量

如需切换流量,请执行以下操作:

  1. 为新实例准备自动集成测试。
  2. 配置负载均衡器,以便在监控性能的同时,逐步将流量转移到新实例。