本页介绍了 AlloyDB for PostgreSQL 的客户管理的加密密钥 (CMEK)。
如需大致了解 CMEK(包括其启用时间和原因),请参阅 Cloud KMS 文档。
如需有关将 CMEK 与 AlloyDB 搭配使用的分步指南,请参阅使用 CMEK。
自行管理的加密方案(Google 管理的加密的替代方案)
默认情况下, Google Cloud中的所有静态数据(包括 AlloyDB 中的数据)均使用 Google 管理的默认加密进行保护。 Google Cloud会为您处理和管理这项默认加密作业,您不必进行其他任何操作。
如果您对保护数据的密钥有特定的合规性或监管要求,则可以改用 CMEK。借助 CMEK,您的 AlloyDB 集群将由您在 Cloud Key Management Service (KMS) 中控制和管理的密钥进行保护。CMEK 密钥可以是对称密钥或 Cloud HSM 密钥。
特性
- 数据访问权限控制:管理员可以轮替用于保护 AlloyDB 中的静态数据的密钥、管理对该密钥的访问权限以及停用或销毁该密钥。
- 可审核性:如果您为项目中的 Cloud KMS API 启用审核日志记录,则针对密钥的所有操作(包括由 AlloyDB 执行的操作)会在 Cloud Logging 中记录并可供查看。
- 性能:使用 CMEK 不会对 AlloyDB 性能产生任何影响。
价格
AlloyDB 像任何其他集群一样对启用 CMEK 的集群进行计费;不会产生额外的 AlloyDB 费用。如需了解详情,请参阅 AlloyDB for PostgreSQL 价格。
当 AlloyDB 使用该密钥时,Cloud KMS 会向您收取该密钥的费用以及加密和解密操作的费用。如需了解详情,请参阅 Cloud Key Management Service 价格。
受 CMEK 保护的内容
AlloyDB 会通过以下方式使用您的 Cloud KMS 密钥来保护静态数据:
- 如果您在集群上启用 CMEK,AlloyDB 会使用您的密钥对集群存储中的数据进行加密。
- 如果您在创建按需备份时指定了 CMEK 配置,AlloyDB 会使用您的密钥对该备份进行加密。
- 如果您通过集群的持续或自动备份配置启用 CMEK,AlloyDB 会使用您的密钥来加密正在进行的备份。
无论您使用的是 Google-owned and Google-managed encryption keys 还是 CMEK,AlloyDB 都具有三层加密:
AlloyDB 会将静态数据拆分为块进行存储,并使用单独的加密密钥对每个块进行加密。它用于对分块中的数据进行加密的密钥称为“数据加密密钥”(DEK)。
由于 Google 的密钥很多,且需要提供低延迟、高可用性的服务,因此 AlloyDB 会将每个 DEK 存储在用其加密的数据附近。
AlloyDB 使用集群持有的密钥加密密钥 (KEK) 加密每个 DEK。
最后,AlloyDB 使用集群基于 Cloud Key Management Service 的加密密钥(即 Google-owned and Google-managed encryption key或 CMEK 密钥)对 KEK 进行加密。
您还可以查看密钥版本(要使用这些版本来保护集群)。
启用 CMEK
如需允许 AlloyDB 集群使用 CMEK,您必须在创建集群时指定 Cloud KMS 密钥。
将 Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter
) 角色授予 AlloyDB 服务代理后,AlloyDB 将能够代表您访问该密钥。
如需了解详细说明,请参阅使用 CMEK。
管理密钥
对所有密钥管理操作使用 Cloud KMS。在 Cloud KMS 传播任何密钥更改之前,AlloyDB 无法检测或处理任何密钥更改。某些操作(例如停用或销毁密钥)最多可能需要 3 小时才能传播;对权限的更改传播通常快很多。
创建集群后,AlloyDB 大约每 5 分钟调用一次 Cloud KMS 以确保密钥仍有效。
如果 AlloyDB 检测到您的 Cloud KMS 密钥已停用或销毁,则会立即启动使您的集群数据无法访问的操作。如果 AlloyDB 对 Cloud KMS 的调用检测到之前已停用的密钥已重新启用,则会自动恢复访问权限。
使用和管理外部密钥
除了使用存储在 Cloud KMS 上的密钥之外,您还可以使用存储在受支持的外部密钥管理合作伙伴处的密钥。为此,请使用 Cloud External Key Manager (Cloud EKM) 创建和管理外部密钥,它们是指向位于 Google Cloud之外的密钥的指针。如需了解详情,请参阅 Cloud External Key Manager。
使用 Cloud EKM 创建外部密钥后,您可以在创建集群时提供该密钥的 ID,将其应用于新的 AlloyDB 集群。此过程与将 Cloud KMS 密钥应用于新集群的过程相同。
您可以在 Cloud EKM 中使用 Key Access Justifications。借助 Key Access Justifications,您可以查看每个 Cloud EKM 请求的原因。此外,根据提供的理由,您可以自动批准或拒绝请求。如需了解详情,请参阅概览。
Google 无法控制外部密钥管理合作伙伴系统中密钥的可用性。
密钥不可用
如果您停用用于加密 AlloyDB 集群的 Cloud KMS 密钥,则该集群所属的 AlloyDB 实例将在 30 分钟内出现停机。重新启用该密钥后,实例会恢复运行。
在极少数情况下,例如 Cloud KMS 不可用期间,AlloyDB 可能无法从 Cloud KMS 中检索密钥的状态。在这种情况下,AlloyDB 会尽最大努力继续支持完整的集群操作(最多 30 分钟),以最大限度地减少任何暂时性服务中断对工作负载的影响。
30 分钟后,如果 AlloyDB 仍无法连接到 Cloud KMS,AlloyDB 会开始将集群设为离线状态作为保护措施。在 AlloyDB 集群能够重新连接到 Cloud KMS 并且 Cloud KMS 回应表明该密钥处于有效状态之前,集群中的数据将保持无法访问状态。
备份和恢复
AlloyDB 还可使用 CMEK 或默认的 Google 管理的加密来保护备份。如果备份启用了 CMEK,则在创建备份时会使用主要版本的 KMS 密钥对备份进行加密。创建备份后,即使 KMS 密钥已轮替,其密钥和密钥版本也无法修改。如需了解详情,请参阅备份集群。
从备份恢复集群时,恢复后的集群默认使用 Google 管理的加密,但您可以指定要使用的 CMEK 密钥。如需恢复启用 CMEK 的备份,用于加密备份的密钥和密钥版本都必须可用。
日志记录
如果您已经为项目中的 Cloud KMS API 启用审核日志记录,则可以在 Cloud Logging 中审核 AlloyDB 代表您发送给 Cloud KMS 的请求。您可以在 Cloud Logging 中查看这些 Cloud KMS 日志条目。如需了解详情,请参阅查看 Cloud KMS 密钥的审核日志。