客户管理的加密密钥 (CMEK)

默认情况下,Datastore 模式 Firestore 中的所有静态数据均使用 Google 的默认加密方式进行加密。Datastore 模式 Firestore 会为您处理和管理此加密,您无需执行任何额外操作。

如果您对保护数据的密钥有特定的合规性或监管要求,则可以为 Datastore 模式 Firestore 使用客户管理的加密密钥 (CMEK)。Datastore 模式 Firestore 数据库使用您在 Cloud Key Management Service (Cloud KMS) 中控制和管理的密钥进行保护,而不是由 Google 管理用于保护数据的加密密钥。

本页面介绍适用于 Datastore 模式 Firestore 的 CMEK。如需大致了解 CMEK(包括何时和为何启用 CMEK),请参阅 Cloud KMS 文档。如需了解如何使用 Datastore 模式 Firestore 执行与 CMEK 相关的任务,请参阅使用 CMEK

特性

  • 数据控制:CMEK 可让您管理对 KMS 密钥的访问权限。您可以轮替、停用和销毁用于加密 Datastore 模式 Firestore 数据库中静态数据的密钥。
  • 性能:CMEK 不会影响 Firestore SLA
  • 可审核性:如果您为 Cloud KMS 启用审核日志记录,则对密钥执行的所有操作都会记录在 Cloud Logging 中且可查看。
  • 组织政策限制条件:您可以使用 CMEK 组织政策限制条件,为组织中 Datastore 模式 Firestore 数据库指定加密合规性要求。

价格

Cloud KMS 会收取该密钥以及使用该密钥执行的任何加密操作的费用。如需了解详情,请参阅 Cloud KMS 价格

当 Datastore 模式 Firestore 要求 Cloud KMS 密钥执行加密或解密操作时,您需要支付操作费用。加密/解密未与您的请求同步。它每 5 分钟通过轮询 Cloud KMS 一次完成一次。考虑到 Datastore 模式 Firestore 产生的预期加密操作数量,费用通常很低。Cloud Audit Logs 的费用是一笔额外的费用,但考虑到预期的加密操作次数,这些费用通常也很低。

使用受 CMEK 保护的数据库不会产生额外的 Datastore 模式 Firestore 费用,并且继续按 Datastore 模式 Firestore 价格付费。

如果撤消数据库的密钥,系统将根据密钥使用的最后一天的大小收取存储费用。在数据库被删除或密钥再次可用之前,您将继续产生该数据库大小的存储费用。

受 CMEK 保护的内容

创建受 CMEK 保护的数据库时,您的 Cloud KMS 密钥将用于保护静态数据。这包括存储在磁盘或闪存中的数据。 有一些例外情况。以下数据类型使用 Google 默认加密方式进行加密,而不是通过 CMEK 密钥加密:

  • 传输中或内存中的数据
  • 数据库元数据

如何处理不可用的密钥状态

系统并不会针对每个数据请求发出加密和解密操作。相反,Firestore 系统每 5 分钟轮询一次 Cloud Key Management Service 以检查密钥是否仍然可用,然后在密钥可用时执行加密和解密操作。如果系统检测到密钥不可用,则在 10 分钟内,对 Firestore 数据库的任何后续调用(包括读取、写入和查询)都会返回 FAILED_PRECONDITION 错误并显示消息 The customer-managed encryption key required by the requested resource is not accessible。如果数据库具有存留时间 (TTL) 政策,并且在密钥不可用时超过了任何到期时间,通过 TTL 删除数据将延迟,直到密钥恢复为止。如果数据库有长时间运行的操作正在进行中,这些操作将受到如下影响:

  • 数据import导出操作将停止进行,并标记为 Failed。如果密钥恢复,系统将不会重试失败的操作。
  • 索引构建操作以及启用新的 TTL 政策的操作将停止进行。如果密钥恢复,系统会重试已停止的操作。

在任何故意禁止 Firestore 访问密钥的情况下,密钥都被视为不可用。其中包括:

如果密钥恢复,则轮询操作会检测到密钥再次可用。访问权限通常会在几分钟内重新启用,但在极少数情况下最多可能需要几个小时。请注意,对 Cloud KMS 密钥的某些操作(例如停用或销毁密钥)最长可能需要 3 小时才能传播。直到这些更改在 Cloud KMS 中生效后,Firestore 才会检测到这些更改。

根据具体情况,恢复密钥的过程涉及以下操作:

  • 重新启用已停用的密钥版本。
  • 恢复已销毁的密钥版本。 在被永久销毁之前,系统会安排销毁密钥版本。您只能在密钥版本已安排销毁的时间段内恢复密钥。您无法恢复已永久销毁的密钥。
  • 重新授予 Firestore 服务代理访问密钥的权限。

外部密钥注意事项

当您使用 Cloud EKM 密钥时,Google 无法控制由外部管理的密钥在外部密钥管理合作伙伴系统中的可用性。

如果外部管理的密钥不可用,则 Datastore 模式 Firestore 会继续使用密钥的缓存版本支持完整的数据库操作(最长可达 1 小时)。

一小时后,如果 Datastore 模式 Firestore 仍然无法与 Cloud KMS 连接,作为一项保护措施,Datastore 模式 Firestore 会开始使数据库离线。对数据库的调用将失败,并显示包含其他详细信息的 FAILED_PRECONDITION 错误。

如需了解使用外部密钥的更多注意事项,请参阅 Cloud External Key Manager 文档

限制

  • 不支持更改受 CMEK 保护的数据库的密钥。支持密钥轮替、启用和停用。
  • 受 CMEK 保护的数据库不支持备份时间表和恢复操作。您可以使用时间点恢复 (PITR) 进行灾难恢复。
  • 受 CMEK 保护的数据库仅针对实体和文档数据支持 Key Visualizer,而不支持索引数据。
  • 您无法在现有数据库上启用 CMEK。您只能在新数据库上启用 CMEK,并且必须在创建数据库时启用。如需将现有非 CMEK 数据库中的数据迁移到受 CMEK 保护的数据库,请导出数据,并将数据导入由 CMEK 保护的新数据库。
  • 受 CMEK 保护的数据库不支持密钥跟踪。
  • 在预览版期间,Firestore 将支持有限数量的受 CMEK 保护的数据库。

后续步骤