默认情况下,Memorystore for Redis Cluster 会对静态客户内容进行加密。Memorystore for Redis Cluster 会为您处理加密,您无需执行任何 其他操作。此选项称为“Google 默认加密”。
如果您想要控制加密密钥,则可以将 Cloud KMS 中客户管理的加密密钥 (CMEK) 与集成 CMEK 的服务(包括 Memorystore for Redis Cluster)结合使用。使用 Cloud KMS 密钥时,您可以控制其保护 级别、位置、轮替时间表、使用和访问权限以及加密边界。 此外,您还可使用 Cloud KMS 查看审核日志并控制密钥生命周期。这样您就可以在 Cloud KMS 中控制和管理用于保护数据的对称 密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。
使用 CMEK 设置资源后,访问您的 Memorystore for Redis Cluster 资源的体验与使用 Google 默认加密功能类似。 如需详细了解加密 选项,请参阅客户管理的加密密钥 (CMEK)。
哪些人应使用 CMEK?
CMEK 适用于拥有必须加密的敏感数据或受监管数据的组织。如需详细了解是否使用 CMEK 加密 此类数据,请参阅决定是否使用 CMEK。
Google 管理的加密与客户管理的加密
借助 CMEK 功能,您可以为 Memorystore for Redis Cluster 中的静态数据使用自己的加密密钥。对于 Memorystore for Redis Cluster 中启用了 CMEK 的集群,Google 会使用您的密钥访问所有静态数据。
Memorystore 使用 Google 管理的数据加密密钥 (DEK) 和密钥加密密钥 (KEK) 来加密 Memorystore for Redis Cluster 中的数据。 因此存在两层加密:
- DEK 加密 :Memorystore 使用 DEK 来加密 Memorystore for Redis Cluster 中的数据。
- KEK 加密 :Memorystore 使用 KEK 来加密 DEK。
Memorystore for Redis Cluster 中的集群会将加密的 DEK 与加密的数据一起存储在磁盘上,而 Google 管理 Google KEK。CMEK 是封装 DEK 的 KEK。借助 CMEK,您可以创建、 停用或销毁、轮替以及启用或恢复 KEK。
以下图表展示了在使用默认 Google 管理的加密与 CMEK 时,集群内部的静态数据加密的工作方式。
不使用 CMEK
使用 CMEK
在解密使用 CMEK 封装的数据时,Memorystore 会使用 Cloud Key Management Service 中的 KEK 来解密 DEK,并使用未加密的 DEK 来解密静态数据。

价格
Memorystore for Redis Cluster 对启用了 CMEK 的集群的计费方式与任何其他集群相同;不会产生额外费用。如需了解详情,请参阅Memorystore for Redis Cluster 价格。
您可以使用 Cloud KMS API 管理 CMEK。 创建使用 CMEK 的集群时,Memorystore 会定期使用该密钥来加密数据。
当 Memorystore for Redis Cluster 使用相应密钥时,Cloud KMS 会向您收取该密钥的费用以及加密和解密操作的费用。如需了解详情,请参阅 Cloud KMS 价格。
哪些数据使用 CMEK 加密?
CMEK 会加密存储在永久性存储空间中的以下类型的客户数据:
- 备份:借助备份,您可以将 数据恢复到某个时间点,并导出和分析这些数据。备份对于灾难恢复、数据迁移、数据共享和合规性场景也很有用。
- 持久性:
Memorystore for Redis Cluster 支持两种类型的持久性:
- RDB 持久性 :Redis 数据库 (RDB) 功能通过将数据快照保存到持久性存储空间来保护您的数据。
- AOF 持久性 :此功能优先考虑数据持久性。它通过将每个写入命令记录到名为“仅追加文件 (AOF)”的日志文件来持久存储数据。如果发生系统故障或重启,服务器会按顺序重放 AOF 文件命令以恢复您的数据。
服务账号简介
使用 CMEK 创建集群时,您必须将
cloudkms.cryptoKeyEncrypterDecrypter 角色授予具有以下格式的 Memorystore for Redis Cluster
服务帐号:
service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
授予此权限后,服务帐号可以向 Cloud KMS 请求密钥访问权限。
如需了解如何向服务帐号授予此权限,请参阅 授予 Memorystore for Redis Cluster 服务帐号对密钥的访问权限。
密钥简介
在 Cloud KMS 中,您需要创建一个包含加密密钥的密钥环 ,该密钥使用 对称加密算法。 在 Memorystore for Redis Cluster 中创建集群时,您需要选择此密钥来加密集群。您可以为密钥和集群创建一个项目,也可以为每个密钥和集群创建不同的项目。
CMEK 在所有集群位置均可用。您必须在要创建集群的同一区域中创建密钥环和密钥。对于 多区域 集群,您必须将密钥环和密钥设置为 与集群相同的位置。如果区域或位置不匹配,则创建集群的请求会失败。
对于密钥的资源 ID,CMEK 使用以下格式:
projects/CMEK_ENABLED_PROJECT/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME
外部密钥
您可以通过 Cloud External Key Manager (Cloud EKM) 使用您管理的外部密钥加密Google Cloud 中的数据。
当您使用 Cloud EKM 密钥时,Google 无法控制外部管理的密钥的可用性。如果您在创建集群时密钥不可用,则系统不会创建集群。
如需了解使用外部密钥的更多注意事项,请参阅 Cloud External Key Manager。
如何使 CMEK 加密的数据永远无法访问?
在某些情况下,您可能希望使使用 CMEK 加密的数据永远无法访问。为此,您需要销毁密钥版本。如需详细了解如何销毁密钥版本,请参阅销毁和恢复密钥版本。
CMEK 密钥版本的行为
本部分介绍了停用、销毁、轮替、启用和恢复密钥版本时会发生的情况。
停用或销毁 CMEK 密钥版本
如果您停用或销毁 CMEK 的主密钥版本,则以下条件适用于备份和持久性。
备份
- 您无法创建按需备份或自动备份。 但是,如果您启用较旧的密钥版本,则可以访问使用此密钥版本创建的任何备份。
- 在启用或恢复 主密钥版本之前,您无法更新或重新启用自动备份。
持久性
- 如果您将集群配置为使用 持久性, 则 Memorystore for Redis Cluster 会在密钥 版本不可用时停用持久性功能。您无需再为此功能付费。
- Memorystore for Redis Cluster 不会使用 CMEK 将新数据刷新到永久性存储空间。
- Memorystore for Redis Cluster 无法读取永久性存储空间中现有的数据。
- 在启用或恢复 主密钥版本之前,您无法更新或重新启用持久性。
如果您启用了 CMEK 的主密钥版本,但停用或销毁了较旧的密钥版本,则以下条件适用于备份和持久性:
- 您可以创建备份。但是,如果备份使用已停用或销毁的较旧密钥版本进行加密,则该备份将无法访问。
- 如果您启用持久性,则此功能将保持启用状态。如果持久性中使用的较旧密钥 版本已停用或销毁,则 Memorystore for Redis Cluster 会执行类似于 维护中所用的更新,并使用主密钥版本重新加密数据。
轮替主 CMEK 密钥版本
如果您轮替 CMEK 的主密钥版本并创建新的主密钥版本,则以下条件适用于备份和持久性:
- CMEK 的最新主密钥版本会加密新备份。
- 对于现有备份,系统不会重新加密。
- 对于持久性,节点不会采取任何操作。节点会继续使用较旧的密钥版本,直到下一次维护事件。
手动重新加密受 CMEK 保护的数据
Memorystore for Redis Cluster 不支持按需重新封装现有静态数据。您无法手动触发进程以使用新密钥版本重新加密现有备份或活跃的持久性文件。但是,您可以使用新密钥版本加密新写入的数据。
如果您轮替了密钥,并且必须强制集群使用新密钥版本,则以下条件适用于备份和持久性:
备份
您无法重新封装现有备份。如果合规性要求所有数据都必须使用最新密钥进行加密,请创建使用此密钥的备份,然后手动删除现有备份。您还可以将此备份导出到 Cloud Storage 存储桶,以便使用 Cloud Storage 加密密钥。
持久性
如需强制集群使用新的 KMS 密钥,您可以在集群上运行模拟维护。完成此操作后,Memorystore for Redis Cluster 可以使用更新后的主密钥版本写入持久性数据。
替换受保护的 KMS 密钥
如果您将受保护的 KMS 密钥替换为其他 KMS 密钥或新的主密钥版本,则 Memorystore for Redis Cluster 只会将此更改应用于未来的操作。
替换受保护的 KMS 密钥会以以下方式影响您的资源:
- 备份:所有后续备份都使用新的 KMS 密钥进行加密。 现有备份会保留其原始密钥。
- 持久性:下次集群重启或发生维护 事件时,系统会使用新的 KMS 密钥。
- 主缓存:替换此密钥没有任何影响。CMEK 不会加密内存中的数据,因为此类数据不被视为静态数据。
启用或恢复主 CMEK 密钥版本
如果您启用或恢复 CMEK 的主密钥版本,则以下条件适用于备份和持久性:
- 您可以再次创建按需备份和自动备份。
- Memorystore for Redis Cluster 会执行类似于 维护中所用的更新,并重新启用 持久性。
限制
将 CMEK 与 Memorystore for Redis Cluster 搭配使用时,存在以下限制:
CMEK 组织政策限制条件简介
Memorystore for Redis Cluster 支持 组织政策限制条件 的 CMEK。借助这些限制条件,您可以为集群强制执行 CMEK 保护,并限制可用于此保护的 Cloud KMS 密钥。
您可以配置以下组织政策限制条件:
constraints/gcp.restrictNonCmekServices:使用此限制条件为集群强制执行 CMEK 保护。如果 Memorystore for Redis Cluster API 位于此限制条件的Deny服务政策列表中,则您无法 创建非 CMEK 保护的集群。constraints/gcp.restrictCmekCryptoKeyProjects:使用此限制条件限制可用于 CMEK 保护的 Cloud KMS 密钥。如果您配置此限制条件,则使用 CMEK 加密的集群必须使用允许的项目、文件夹或组织中的密钥。