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

Si usas claves de encriptación administradas por el cliente (CMEK), tendrás 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 use 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 (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 la 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 otro proyecto, siempre y cuando 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 anota 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 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 la CLI de gcloud. Para otorgar acceso a la cuenta de servicio, usa el siguiente formato:

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

gcloud

Para otorgar a la cuenta de servicio acceso a la clave, 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

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: el nombre del llavero de claves que contiene la clave
  • KEY_NAME: 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 la CMEK con la CLI de gcloud.

gcloud

Para crear una instancia que use la 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

Realiza los siguientes reemplazos:

  • INSTANCE_ID: Es el ID de la instancia que crearás.
  • PROJECT_NAME: 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: el nombre del llavero de claves que incluye la clave
  • KEY_NAME: 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: Habilitas la persistencia basada en el archivo de solo anexar (AOF) para la instancia.
    • disabled: Desactivas la persistencia para la instancia.
    • rdb: Habilitas 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 habilitada para CMEK con gcloud CLI. Esta información incluye si la 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 comando gcloud memorystore instances describe 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: 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 claves

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.

Si deseas obtener instrucciones para inhabilitar y volver a habilitar versiones de claves, consulta Habilita e inhabilita versiones de claves.

Si deseas obtener instrucciones para destruir y restablecer versiones de claves, consulta Destruye y restablece versiones de claves.

¿Qué sigue?