本页面介绍了如何将 CMEK 与 Memorystore for Redis 集群配合使用。如需立即使用此功能,请参阅使用客户管理的加密密钥 (CMEK)。
哪些人应该使用 CMEK?
如果组织具有敏感数据或受监管数据并且这些数据需要组织管理自己的加密密钥,则 CMEK 就很适合该组织。
Google 管理的加密与客户管理的加密
借助 CMEK 功能,您可以为 Memorystore for Redis 集群中的静态数据使用自己的加密密钥。对于启用了 CMEK 的 Memorystore for Redis Cluster 实例,Google 会使用您的密钥来访问所有静态数据。
Memorystore 使用 Google 管理的数据加密密钥 (DEK) 和密钥加密密钥 (KEK) 来加密 Memorystore for Redis Cluster 中的数据。因此存在两层加密:
- DEK 加密:Memorystore 使用 DEK 对 Memorystore for Redis 集群中的数据进行加密。
- KEK 加密:Memorystore 使用 KEK 加密 DEK。
Memorystore for Redis Cluster 实例将加密的 DEK 与加密的数据一起存储在磁盘上,而 Google 管理 Google KEK。借助 CMEK,您可以创建封装 Google KEK 的密钥。借助 CMEK,您可以创建、停用或销毁、轮替以及启用或恢复 KEK。
下图分别展示了在使用默认 Google 管理的加密与 CMEK 的情况下,Memorystore for Redis 集群实例内部的数据静态加密的工作原理。
不使用 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 for Redis 集群实例时,Memorystore 会定期使用该密钥加密数据,以确保该密钥的权限正确且已启用。
当 Memorystore for Redis Cluster 使用相应密钥时,Cloud KMS 会向您收取该密钥的费用以及加密和解密操作的费用。如需了解详情,请参阅 Cloud KMS 价格。
哪些数据使用 CMEK 加密?
CMEK 会加密存储在持久性存储空间中的以下类型的客户数据:
- 备份:借助备份,您可以将数据恢复到某个时间点,并导出和分析数据。备份还可用于灾难恢复、数据迁移、数据共享和合规性场景。
- 持久性:Memorystore for Redis Cluster 支持两种类型的持久性:
- RDB 持久性:Redis 数据库 (RDB) 功能通过将数据快照保存到持久性存储空间中来保护数据。
- AOF 持久性:此功能优先考虑数据持久性。它通过将每个写入命令记录到名为“仅附加文件”(AOF) 的日志文件中来持久存储数据。如果发生系统故障或重启,服务器会按顺序重放 AOF 文件命令,以恢复您的数据。
服务账号简介
创建使用 CMEK 的实例时,您必须向 Memorystore for Redis 集群服务账号授予 cloudkms.cryptoKeyEncrypterDecrypter 角色,该服务账号的格式如下:
service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com
授予此权限后,服务账号便可向 Cloud KMS 请求密钥访问权限。
如需了解如何向服务账号授予此权限,请参阅向 Memorystore for Redis 集群服务账号授予对密钥的访问权限。
密钥简介
在 Cloud KMS 中,您需要创建一个包含加密密钥的密钥环,该密钥使用对称加密算法。在创建新的 Memorystore for Redis Cluster 实例时,您可以选择此密钥来加密该实例。您可以为密钥和实例创建一个项目,也可以为它们分别创建不同的项目。
CMEK 在所有 Memorystore for Redis Cluster 实例位置均可用。您必须将密钥和密钥环区域设置为与实例相同的区域。多区域密钥或全球区域密钥不起作用。如果区域不匹配,则创建实例的请求将失败。
CMEK 使用以下格式:
projects/[CMEK_ENABLED_PROJECT]/locations/[REGION]/keyRings/[KEY_RING_NAME]/cryptoKeys/[KEY_NAME]
如何使 CMEK 加密的数据永远无法访问?
您可能遇到这样的情况,即您需要永久销毁使用 CMEK 加密的数据。为此,您需要销毁密钥版本。您不能销毁密钥环或密钥,但可以销毁密钥的版本。
CMEK 密钥版本的行为
本部分介绍了停用、销毁、轮替、启用和恢复密钥版本时会发生的情况。
停用或销毁 CMEK 密钥版本
如果您停用或销毁 CMEK 的主要密钥版本,则备份和持久性方面会受到以下影响。
备份
- 您无法创建按需或自动备份。不过,如果您启用旧版密钥,则可以访问使用该密钥版本创建的任何备份。
- 在启用或恢复主密钥版本之前,您无法更新或重新启用自动备份。
持久性
- 如果您启用持久性,则 Memorystore for Redis 集群会执行类似于维护中使用的更新,并停用持久性功能。我们不会再向您收取此功能的费用。
- Memorystore for Redis Cluster 不会使用 CMEK 将新数据刷新到持久性存储空间。
- Memorystore for Redis Cluster 无法读取持久性存储空间中现有的数据。
- 在启用或恢复主密钥版本之前,您无法更新或重新启用持久性。
如果您启用 CMEK 的主密钥版本,但停用或销毁旧版密钥,则备份和持久性方面会受到以下影响:
- 您可以创建备份。不过,如果备份使用已停用或已销毁的旧版密钥进行加密,则该备份将无法访问。
- 如果您启用持久性,此功能将保持启用状态。如果持久性中使用的旧密钥版本被停用或销毁,Memorystore for Redis 集群会执行类似于维护中使用的更新,并使用主密钥版本重新加密数据。
轮替主要 CMEK 密钥版本
如果您轮替 CMEK 的主密钥版本并创建新的主密钥版本,则备份和持久性方面会受到以下条件的影响:
- CMEK 的最新主密钥版本会加密新备份。
- 对于现有备份,系统不会重新加密。
- 对于持久性,虚拟机不采取任何操作。在下一次维护事件之前,虚拟机将继续使用旧版密钥。
启用或恢复主 CMEK 密钥版本
如果您启用或恢复 CMEK 的主密钥版本,则备份和持久性方面会受到以下条件的限制:
- 您可以再次创建按需备份和自动备份。
- Memorystore for Redis Cluster 会执行类似于维护期间使用的更新,并重新启用持久性。
限制
将 CMEK 与 Memorystore for Redis 集群搭配使用时,存在以下限制:
- 您无法在现有的 Memorystore for Redis Cluster 部署上启用 CMEK。
- 密钥、密钥环和实例的区域必须完全相同。
- 您必须为密钥使用对称加密算法。
- Cloud KMS 加密和解密费率受配额限制。