Usar claves de encriptado gestionadas por el cliente (CMEK)

Si usas claves de cifrado gestionadas por el cliente (CMEK), tendrás control sobre tus claves. De esta forma, puedes controlar el nivel de protección, la ubicación, el calendario de rotación, los permisos de uso y acceso, y los límites criptográficos. En lugar de que Google sea el propietario y el gestor de las claves de encriptado simétricas (KEKs) que protegen tus datos, tú controlas y gestionas estas claves en Cloud Key Management Service (KMS).

Antes de empezar

  1. Asegúrate de tener el rol de administrador de Memorystore en tu cuenta de usuario.

    Ir a la página de gestión de identidades y accesos

Flujo de trabajo para crear una instancia que use CMEK

  1. Crea un conjunto de claves y una clave en la ubicación en la que quieras que esté la instancia de Memorystore para Valkey.

  2. Copia o anota el nombre de la clave (KEY_NAME), la ubicación de la clave y el nombre del conjunto de claves (KEY_RING). Necesitarás esta información para conceder acceso a la clave a la cuenta de servicio.

  3. Concede acceso a la clave a la cuenta de servicio de Memorystore for Valkey.

  4. Ve a un proyecto y crea una instancia de Memorystore para Valkey con CMEK habilitada en la misma región que el conjunto de claves y la clave.

Tu instancia de Memorystore for Valkey ahora tiene habilitada la función de claves de cifrado gestionadas por el cliente (CMEK).

Crear un conjunto de claves y una clave

Crea un conjunto de claves y una clave. Ambos deben estar en la misma región que tu instancia de Memorystore for Valkey. La clave puede ser de otro proyecto, siempre que esté en la misma región. Además, la clave debe usar el algoritmo de cifrado simétrico.

Después de crear el conjunto de claves y la clave, copia o anota el KEY_NAME, la ubicación de la clave y el KEY_RING. Necesitarás esta información cuando concedas acceso a la clave a la cuenta de servicio.

Concede a la cuenta de servicio de Memorystore para Valkey acceso a la clave

Para crear una instancia de Memorystore for Valkey que use CMEK, debes conceder acceso a la clave a una cuenta de servicio específica de Memorystore for Valkey.

Puedes conceder acceso a la clave a la cuenta de servicio mediante la CLI de gcloud. Para conceder acceso a la cuenta de servicio, usa el siguiente formato:

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

gcloud

Para conceder acceso a la clave a la cuenta de servicio, usa el comando 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

Haz las siguientes sustituciones:

  • PROJECT_ID: el ID o el número del proyecto que contiene el conjunto de claves
  • REGION_ID: la región en la que se encuentra el conjunto de claves
  • KEY_RING: el nombre del conjunto de claves que contiene la clave
  • KEY_NAME: el nombre de la clave a la que quieres dar acceso a la cuenta de servicio
  • PROJECT_NUMBER: el ID o el número del proyecto que contiene la cuenta de servicio

Crear una instancia de Memorystore for Valkey que use CMEK

Puedes crear una instancia que use CMEK con la CLI de gcloud.

gcloud

Para crear una instancia que use CMEK, usa el comando 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

Haz las siguientes sustituciones:

  • INSTANCE_ID: el ID de la instancia que vas a crear.
  • PROJECT_NAME: el nombre del proyecto en el que quieres crear la instancia.
  • REGION_ID: el ID de la región en la que quieres que se encuentre la instancia.
  • NETWORK_ID: el ID de la red que quieres usar para crear la instancia.
  • KEY_RING: el nombre del conjunto de claves que contiene la clave.
  • KEY_NAME: el nombre de la clave.
  • SHARD_NUMBER: el número de particiones que quieres que tenga la instancia.
  • PERSISTENCE_CONFIG_MODE: el modo de persistencia de la instancia. Puedes definir este modo con uno de los siguientes valores:
    • aof: habilita la persistencia basada en archivos de solo anexión (AOF) en la instancia.
    • disabled: desactiva la persistencia de la instancia.
    • rdb: habilitas la persistencia basada en la base de datos Redis (RDB) para la instancia.

Ver información clave de una instancia habilitada para CMEK

Para ver información sobre tu instancia habilitada para CMEK, usa la gcloud CLI. Esta información incluye si la CMEK está habilitada en tu instancia y la clave activa.

gcloud

Para verificar si CMEK está habilitada y ver la referencia de la clave, usa el comando gcloud memorystore instances describe para ver los campos encryptionInfo y kmsKey.

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

Haz las siguientes sustituciones:

  • INSTANCE_ID: el ID de la instancia sobre la que quieres ver información
  • PROJECT_NAME: el nombre del proyecto que contiene la instancia
  • REGION_ID: el ID de la región en la que se encuentra la instancia.

Gestionar versiones de clave

Para obtener información sobre lo que ocurre cuando se inhabilita, destruye, rota, habilita y restaura una versión de una clave, consulta Comportamiento de una versión de clave de cifrado gestionada por el cliente.

Para obtener instrucciones sobre cómo inhabilitar y volver a habilitar versiones de clave, consulta Habilitar e inhabilitar versiones de clave.

Para obtener instrucciones sobre cómo destruir y restaurar versiones de clave, consulta Destruir y restaurar versiones de clave.

Siguientes pasos