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

默认情况下,Firestore 的静态数据均使用 Google 的默认加密进行加密。Firestore 会为您处理和管理这项加密工作,您无需执行任何额外操作。

如果您对密钥具有特定的合规性或监管要求 使用客户管理的加密密钥 (CMEK) Firestore。您不用 Google 管理 您的 Firestore 数据库会使用 在 Cloud Key Management Service (Cloud KMS) 中进行控制和管理。

本页面介绍了适用于 Firestore 的 CMEK。如需大致了解 CMEK(包括其启用时间和原因),请参阅以下 Cloud KMS 文档:

如需了解如何使用 Firestore 执行与 CMEK 相关的任务,请参阅使用 CMEK

特性

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

价格

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

当 Firestore 请求存储您的 ID 时, 用于执行加密或解密操作的 Cloud KMS 密钥。 客户管理的密钥的加密/解密操作每 5 分钟发生一次,并且不会与数据库请求同步。由于预期的加密操作数量较小,费用通常较低。Cloud Audit Logs 的费用是一项额外开支,但考虑到预期的加密操作数量,预计费用通常也不高。

使用受 CMEK 保护的数据库不会产生额外的 Firestore 费用,Firestore 价格仍然适用。

如果您撤消对数据库的密钥,系统会根据密钥上次可用之日的数据大小来收取存储费用。您将继续产生 在数据库被删除或密钥删除之前, 再次变为可用状态

受 CMEK 保护的内容

创建由 CMEK 保护的 Firestore 数据库时,您的 Cloud KMS 密钥用于保护静态数据。这包括您存储在磁盘或闪存盘上的数据,包括索引和备份。有一些例外情况。以下数据类型已采用 Google 默认加密方式 加密,而不是使用 CMEK 密钥:

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

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

系统不会针对每个数据请求发出加密和解密操作。而是,Firestore 系统会每 5 分钟轮询一次 Cloud KMS,以检查密钥是否仍可用,如果密钥可用,则执行加密和解密操作。

如果系统检测到密钥不可用, 任何后续调用 Firestore 数据库的时间 包括读取、写入和查询操作,则会返回 FAILED_PRECONDITION 错误以及 The customer-managed encryption key required by the requested resource is not accessible 消息。

数据库是否具有存留时间 (TTL) 政策以及 密钥不可用时超出任何到期时间;数据删除 TTL 之前的操作将会延迟,直到该密钥恢复为止。如果 数据库有长时间运行的操作正在进行中,它们会受到 如下:

如果在任何情况下故意禁止 Firestore 访问密钥,系统都会将密钥视为不可用。其中包括:

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

恢复密钥涉及以下步骤,具体取决于具体情况:

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

密钥轮替注意事项

轮替 CMEK 密钥后,Firestore 会重新加密数据库 使用 CMEK 密钥的最新主要版本。在重新加密过程中,请同时保留旧密钥版本和新密钥版本。重新加密后 完成更新后,停用或删除旧版 CMEK 密钥不会停用 因为使用新主密钥版本加密了数据库。

您还可以查看用于保护数据库的密钥版本。 如需了解详情,请参阅查看正在使用的密钥

外部密钥注意事项

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

如果外部管理的密钥不可用,Firestore 可暂时使用密钥的缓存版本继续支持完整的数据库操作,时间最长可达一小时。

1 小时后,如果 Firestore 仍然无法连接到 Cloud KMS 中,Firestore 会开始将数据库下线, 保护措施。对数据库的调用将失败并显示 FAILED_PRECONDITION 错误,包含额外的详细信息。

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

备份和恢复

备份使用与创建它的数据库相同的加密机制。受 CMEK 保护的 Firestore 数据库创建备份时,会使用创建备份时使用的主密钥版本对备份进行加密。

在您启用备份时间表 24 小时后,Firestore 会创建 CMEK 数据库的第一个备份。

如需详细了解 Firestore 备份,请参阅备份和恢复数据

从备份恢复的数据库使用的加密机制与 默认备份。恢复数据库时,您可以指定不同的 加密类型:

  • 使用新指定的密钥恢复到 CMEK 数据库。
  • 恢复到使用 Google 默认加密的非 CMEK 数据库。
  • 恢复到与备份采用相同加密的数据库。

如需详细了解如何从存储分区中恢复 Firestore 数据库, 请参阅使用数据库备份恢复数据。如需详细了解如何从备份恢复受 CMEK 保护的 Firestore 数据库,请参阅恢复受 CMEK 保护的数据库

按键跟踪

您可以使用密钥跟踪功能查看密钥保护的资源(例如 Firestore 数据库)。如需详细了解密钥跟踪,请参阅查看密钥使用情况

CMEK 和密钥可用性

当密钥不可用或被停用时,请注意启用了 CMEK 的数据库中可能发生的以下行为:

  • 您可以更改启用了 CMEK 的数据库上的 Firestore 时间点恢复 (PITR) 设置,即使密钥不可用也是如此,因为 PITR 设置是数据库元数据,不受 CMEK 加密。
  • 您可以删除密钥不可用的 CMEK 数据库。
  • 创建启用 CMEK 的数据库后,已停用的密钥不会显示在 Google Cloud 控制台中的可用密钥列表中。如果您手动输入已停用的密钥,数据库创建流程将失败并显示 FAILED_PRECONDITION 错误 400。

限制

  • 您无法更改受 CMEK 保护的数据库的密钥。您可以旋转、启用和停用按键。
  • 支持 CMEK 保护的数据库 Key Visualizer,仅适用于实体和 文档数据,而不是索引数据。
  • 您无法在现有数据库上启用 CMEK。您只能在新数据库上启用 CMEK,并且必须在创建数据库时启用它。迁移步骤 将现有非 CMEK 数据库中的数据导出到受 CMEK 保护的数据库中, 然后将数据导入至受 CMEK 保护的新数据库。您还可以将数据从非 CMEK 数据库恢复到 CMEK 数据库。
  • Firestore 支持有限数量的受 CMEK 保护的数据库。

后续步骤