Usar claves de encriptación administradas por el cliente (CMEK)

Si usas claves de encriptación administradas por el cliente (CMEK), tienes control sobre tus claves. Esto te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. En lugar de que Google posea y administre las claves de encriptación de claves (KEK) simétricas que protegen tus datos, tú las controlas y administras en Cloud Key Management Service (KMS).

Antes de comenzar

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

    Ir a la página IAM

Flujo de trabajo para crear una instancia que usa CMEK

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

  2. Copia o escribe el nombre de la clave (KEY_NAME), la ubicación de la clave y el nombre del llavero de claves (KEY_RING). Necesitarás esta información cuando le otorgues a la cuenta de servicio acceso a la clave.

  3. Otorga a la cuenta de servicio de Memorystore para Valkey acceso a la clave.

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

Ahora tu instancia de Memorystore para Valkey está habilitada con CMEK.

Crea un llavero de claves y una clave

Crea un llavero de claves y una clave. Ambos deben estar en la misma región que tu instancia de Memorystore para Valkey. La clave puede ser de un proyecto diferente, siempre que esté en la misma región. Además, la clave debe usar el algoritmo de encriptación simétrica.

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

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

Antes de que puedas crear una instancia de Memorystore para Valkey que use CMEK, debes otorgar acceso a la clave a una cuenta de servicio específica de Memorystore para Valkey.

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

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

gcloud

Para otorgar acceso a la clave a la cuenta de servicio, usa el gcloud kms keys add-iam-policy-binding comando.

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

Realiza los siguientes reemplazos:

  • PROJECT_ID: Es el ID o número del proyecto que contiene el llavero de claves .
  • REGION_ID: Es la región en la que se encuentra el llavero de claves.
  • KEY_RING: Es el nombre del llavero de claves que contiene la clave.
  • KEY_NAME: Es el nombre de la clave a la que le otorgas acceso a la cuenta de servicio.
  • PROJECT_NUMBER: Es el ID o número del proyecto que contiene la cuenta de servicio.

Crea una instancia de Memorystore para Valkey que use CMEK

Puedes crear una instancia que use CMEK con el gcloud CLI.

gcloud

Para crear una instancia que use CMEK, usa el gcloud memorystore instances create comando.

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

Realiza los siguientes reemplazos:

  • INSTANCE_ID: Es el ID de la instancia que estás creando.
  • PROJECT_NAME: Es el nombre del proyecto en el que deseas crear la instancia.
  • REGION_ID: Es el ID de la región en la que deseas que se ubique la instancia.
  • NETWORK_ID: Es el ID de la red que deseas usar para crear la instancia.
  • KEY_RING: Es el nombre del llavero de claves que contiene la clave.
  • KEY_NAME: Es el nombre de la clave.
  • SHARD_NUMBER: Es la cantidad de fragmentos que deseas tener para la instancia.
  • PERSISTENCE_CONFIG_MODE: Es el modo de persistencia de la instancia. Puedes establecer este modo en uno de los siguientes valores:
    • aof: Habilita la persistencia basada en el archivo de solo anexos (AOF) para la instancia.
    • disabled: Desactiva la persistencia para la instancia.
    • rdb: Habilita la persistencia basada en la base de datos de Redis (RDB) para la instancia.

Visualiza la información de claves de una instancia con CMEK habilitadas

Puedes ver información sobre tu instancia con CMEK habilitadas con gcloud CLI. Esta información incluye si CMEK está habilitada para tu instancia y la clave activa.

gcloud

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

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

Realiza los siguientes reemplazos:

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

Administra versiones de clave

Para obtener información sobre lo que sucede cuando inhabilitas, destruyes, rotas, habilitas, y restableces una versión de clave, consulta Comportamiento de una versión de clave de CMEK.

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

Para obtener instrucciones sobre cómo destruir y restablecer versiones de clave, consulta Destruye y restablece versiones de clave.

¿Qué sigue?