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

通过使用客户管理的加密密钥 (CMEK),您可以控制自己的密钥。这样一来,您就可以控制其保护级别、位置、轮替时间表、使用和访问权限以及加密边界。这样您就可以在 Cloud Key Management Service (KMS) 中控制和管理用于保护数据的对称密钥加密密钥 (KEK),而不是由 Google 拥有和管理这些密钥。

准备工作

  1. 确保您的用户账号具有 Memorystore Admin 角色

    转到 IAM 页面

创建使用 CMEK 的实例的工作流

  1. 在您希望 Memorystore for Valkey 实例所在的地理位置创建密钥环密钥

  2. 复制或记下密钥名称 (KEY_NAME)、密钥的位置和密钥环的名称 (KEY_RING)。您在向服务账号授予密钥访问权限时需要此信息。

  3. 向 Memorystore for Valkey 服务账号授予密钥访问权限

  4. 前往相应项目,然后在密钥环和密钥所在的同一区域中创建启用了 CMEK 的 Memorystore for Valkey 实例

您的 Memorystore for Valkey 实例现已通过 CMEK 启用。

创建密钥环和密钥

创建密钥环密钥。 两者都必须与 Memorystore for Valkey 实例位于同一区域。密钥可以来自其他项目,但必须位于同一区域。此外,密钥必须使用对称加密算法

创建密钥环和密钥后,复制或记下 KEY_NAME、密钥位置和 KEY_RING。在向服务账号授予密钥访问权限时,您需要此信息。

向 Memorystore for Valkey 服务账号授予对密钥的访问权限

您必须先向特定的 Memorystore for Valkey 服务账号授予对 CMEK 的访问权限,然后才能创建使用 CMEK 的 Memorystore for Valkey 实例。

您可以使用 gcloud CLI 向服务账号授予对密钥的访问权限。如需向服务账号授予访问权限,请使用以下格式:

service-PROJECT_NUMBER@gcp-sa-memorystore.iam.gserviceaccount.com

gcloud

如需向服务账号授予密钥访问权限,请使用 gcloud kms keys add-iam-policy-binding 命令。

gcloud kms keys add-iam-policy-binding  \
projects/PROJECT_ID/locations/REGION_ID/keyRings/KEY_RING/cryptoKeys/KEY_NAME \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-memorystore.iam.gserviceaccount.com \
--role=roles/cloudkms.cryptoKeyEncrypterDecrypter

进行以下替换:

  • PROJECT_ID:包含密钥环的项目的 ID 或编号
  • REGION_ID:密钥环所在的区域
  • KEY_RING:包含密钥的密钥环的名称
  • KEY_NAME:您要向服务账号授予访问权限的密钥的名称
  • PROJECT_NUMBER:包含服务账号的项目的 ID 或编号

创建使用 CMEK 的 Memorystore for Valkey 实例

您可以使用 gcloud CLI 创建使用 CMEK 的实例。

gcloud

如需创建使用 CMEK 的实例,请使用 gcloud memorystore instances create 命令。

gcloud memorystore instances create INSTANCE_ID \
--project=PROJECT_NAME \
--location=REGION_ID \
--endpoints='[{"connections": [{"pscAutoConnection": {"network": "projects/PROJECT_NAME/global/networks/NETWORK_ID", "projectId": "PROJECT_NAME"}}]}]' \
--kms-key=projects/PROJECT_NAME/locations/REGION_ID/keyRings/KEY_RING/cryptoKeys/KEY_NAME \
--shard-count=SHARD_NUMBER \
--persistence-config-mode=PERSISTENCE_CONFIG_MODE

进行以下替换:

  • INSTANCE_ID:您要创建的实例的 ID。
  • PROJECT_NAME:您要创建实例的项目的名称。
  • REGION_ID:您希望实例所在的区域的 ID。
  • NETWORK_ID:您要用于创建实例的网络的 ID。
  • KEY_RING:包含密钥的密钥环的名称。
  • KEY_NAME:密钥的名称。
  • SHARD_NUMBER:您希望实例拥有的分片数。
  • PERSISTENCE_CONFIG_MODE:实例的持久性模式。 您可以将此模式设置为以下某个值:
    • aof:为实例启用基于仅附加文件 (AOF) 的持久性。
    • disabled:您停用了实例的持久性。
    • rdb:为实例启用基于 Redis 数据库 (RDB) 的持久性。

查看启用了 CMEK 的实例的密钥信息

您可以使用 gcloud CLI 查看有关已启用 CMEK 的实例的信息。此信息包括您的实例是否已启用 CMEK 以及有效密钥。

gcloud

如需验证 CMEK 是否已启用并查看密钥引用,请使用 gcloud memorystore instances describe 命令查看 encryptionInfokmsKey 字段。

gcloud memorystore instances describe INSTANCE_ID \
--project=PROJECT_NAME \
--location=REGION_ID

进行以下替换:

  • INSTANCE_ID:您要查看相关信息的实例的 ID
  • PROJECT_NAME:包含实例的项目的名称
  • REGION_ID:实例所在区域的 ID

管理密钥版本

如需了解停用、销毁、轮替、启用和恢复密钥版本时会发生什么情况,请参阅 CMEK 密钥版本的行为

如需了解如何停用和重新启用密钥版本,请参阅启用和停用密钥版本

如需查看有关如何销毁和恢复密钥版本的说明,请参阅销毁和恢复密钥版本

后续步骤