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

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

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

本页面介绍了适用于 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 要求 Cloud KMS 密钥执行加密或解密操作时,您需支付相应的操作费用。客户管理的密钥每 5 分钟执行一次加密/解密操作,并且不会与数据库请求同步。鉴于 Firestore 生成的加密操作的预期数量,费用通常较低。Cloud Audit Logs 的费用是额外的开支,但考虑到预期的加密操作数量,预计费用通常较低。

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

如果您撤消数据库对该密钥的访问权限,系统将根据该密钥最后可用当日的数据库大小收取存储费用。在数据库被删除或密钥重新可用之前,您将继续按该数据库大小产生存储费用。

受 CMEK 保护的内容

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

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

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

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

如果系统检测到密钥不可用,则在 10 分钟内,对 Firestore 数据库的任何后续调用(包括读取、写入和查询)都会返回 FAILED_PRECONDITION 错误,并附带 The customer-managed encryption key required by the requested resource is not accessible 消息。

如果数据库具有存留时间 (TTL) 政策,并且在密钥不可用时超过任何到期时间,根据存留时间删除数据将延迟到密钥恢复后。如果数据库有正在进行的长时间运行的操作,这些操作会受到以下影响:

  • 数据导入导出操作将停止进行,并会标记为 Failed。即使密钥恢复,系统也不会重试失败的操作。