Usar claves de encriptación administradas por el cliente

De forma predeterminada, Google encripta los datos almacenados en reposo. Google Cloud maneja y administra la encriptación por ti sin que debas realizar ninguna otra acción.

Si tienes requisitos normativos o de cumplimiento específicos relacionados con la protección de tus datos, puedes usar claves de encriptación administradas por el cliente (CMEK). Las CMEK te permiten proteger Eventarc y datos asociados en reposo mediante una clave de encriptación a la que solo tú puedes acceder, y que puedes crear y administrar mediante Cloud Key Management Service (Cloud KMS). Debido a que la clave es de tu propiedad y no es controlada por Google, si la clave se inhabilita o se destruye, nadie (ni siquiera tú) podrá acceder a los datos protegidos por la clave.

Las claves de encriptación administradas por el cliente se almacenan como claves de software, en un clúster de Cloud HSM o de forma externa con Cloud External Key Manager.

Cloud KMS produce registros de auditoría de Cloud cuando los recursos del canal de Eventarc habilitan, inhabilitan o usan las claves para encriptar y desencriptar mensajes. Para obtener más información, consulta Información de registro de auditoría de Cloud KMS.

Qué se protege con CMEK

Puedes configurar CMEK para un canal que usa Eventarc y encriptar los eventos que pasan a través del canal.

La habilitación de un canal con CMEK protege los datos asociados con él (por ejemplo, el tema de Pub/Sub utilizado como una vía de transporte) mediante una clave de encriptación a la que solo tú puedes acceder.

Ten en cuenta que cuando habilitas CMEK en el canal de Google en un proyecto de Google Cloud, todos los activadores de Eventarc para los tipos de eventos de Google en ese proyecto y región están encriptados por completo con esa clave CMEK. Las claves CMEK no se pueden aplicar por activador.

Antes de comenzar

Antes de usar esta función en Eventarc, debes hacer lo siguiente:

Consola

  1. Habilita las API de Cloud KMS and Eventarc.

    Habilita las API

  2. Crea un llavero de claves.
  3. Crea una clave para un llavero de claves específico.

gcloud

  1. Actualiza los componentes de gcloud:
    gcloud components update
    
  2. Habilita las API de Cloud KMS y Eventarc del proyecto en el que se almacenarán tus claves de encriptación.
    gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
    
  3. Crea un llavero de claves.
  4. Crea una clave para un llavero de claves específico.

Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

Ten en cuenta que Cloud KMS y Eventarc son servicios regionalizados. La región de la clave de Cloud KMS y el canal de Eventarc protegido deben ser iguales.

Otorga a la cuenta de servicio de Eventarc acceso a una clave

Para otorgar a la cuenta de servicio de Eventarc acceso a la clave de Cloud KMS, agrega la cuenta de servicio como principal de la clave y otorga a la cuenta de servicio la función: Encriptador/Desencriptador de CryptoKeys de Cloud KMS

Consola

Cuando habilitas CMEK para un canal de Google o de terceros a través de la consola, se te solicita que otorgues la función de Encriptador/desencriptador de CryptoKey de Cloud KMS a la cuenta de servicio. Para obtener más información, en este documento, consulta Habilita CMEK para tipos de eventos de Google o Habilita CMEK para un canal de eventos de terceros.

gcloud

 gcloud kms keys add-iam-policy-binding KEY_NAME \
    --keyring KEY_RING \
    --location LOCATION \
    --member serviceAccount:SERVICE_AGENT_EMAIL \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

Reemplaza lo siguiente:

  • KEY_NAME: el nombre de la clave. Por ejemplo, my-key
  • KEY_RING: es el nombre del llavero de claves. Por ejemplo, my-keyring
  • LOCATION: es la ubicación de la clave. Por ejemplo, us-central1
  • SERVICE_AGENT_EMAIL: la dirección de correo electrónico de la cuenta de servicio con el rol eventarc.serviceAgent.

    Por ejemplo, service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com. Para obtener más información, consulta Agentes de servicio.

Habilita CMEK para los tipos de eventos de Google

Los activadores de Eventarc que enrutan tipos de eventos de Google publican eventos en un canal virtual denominado canal de Google que es específico del proyecto y la región. Este canal virtual está disponible en todas las regiones de Eventarc.

Cuando habilitas CMEK para el canal de Google en un proyecto de Google Cloud, todos los activadores de Eventarc para tipos de eventos de Google en ese proyecto y región se encriptan por completo con esa clave CMEK. Puedes agregar varias claves CMEK y asociar cada una a una región específica del canal de Google. Las claves CMEK no se pueden aplicar por activador.

Consola

  1. En la consola de Google Cloud, ve a la página Eventarc> Canales.

    Ve a Eventarc

  2. Haz clic en un canal con un proveedor de Google.

  3. En la página Editar canal, selecciona la casilla de verificación Usar una clave de encriptación administrada por el cliente (CMEK).

  4. Haz clic en Agregar clave de encriptación.

  5. Selecciona una región y, en la lista Clave de encriptación de CMEK, selecciona un llavero de claves que hayas creado para la región. Ten en cuenta que puedes agregar solo una clave de encriptación por región para un canal.

  6. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista Clave de encriptación de CMEK, haz clic en ¿No puedes ver tu clave? Ingresa el nombre de la clave y, luego, ingresa el nombre de la clave en el formato especificado.

  7. Si se te solicita, otorga el rol cloudkms.cyptoKeyEncrypterDecrypter a la cuenta de servicio de Eventarc con el rol eventarc.serviceAgent.

  8. Opcional: Haz clic en Agregar clave de encriptación a fin de agregar otro llavero de claves que hayas creado para una región diferente.

  9. Haz clic en Guardar.

gcloud

 gcloud eventarc google-channels update \
    --location=LOCATION \
    --crypto-key=KEY

Reemplaza lo siguiente:

  • LOCATION: la ubicación del canal de Google que se protegerá. Debe coincidir con la ubicación de la clave utilizada.
  • KEY: El nombre de la clave de Cloud KMS completamente calificado en el formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Si creas activadores de Pub/Sub con tus propios temas existentes para obtener una protección integral de CMEK, te recomendamos que también configures la clave de KMS en el tema. Para obtener más información, consulta Configura temas de Pub/Sub.

Verifica el uso de Cloud KMS

Para verificar que el canal ahora cumpla con CMEK, haz lo siguiente:

Consola

  1. En la consola de Google Cloud, ve a la página Activadores> de Eventarc

    Ve a Eventarc

  2. Haz clic en un activador que enumere una fuente de Google Cloud como su proveedor de eventos y una región que protegiste con CMEK.

  3. En la página Detalles del activador, se muestra el estado Encriptación, el mensaje, Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc google-channels describe \
    --location=LOCATION

El resultado debería ser similar al siguiente ejemplo:

 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 updateTime: '2022-06-28T17:24:56.365866104Z'

El valor del cryptokeyName muestra la clave de Cloud KMS que se usa para el canal de Google.

Habilita CMEK para un canal de terceros

Un canal de Eventarc para terceros es un recurso mediante el cual las entidades que no son de Google Cloud que ofrecen una fuente de Eventarc pueden interactuar con los destinos. Este canal es específico de una región y solo puedes agregar una clave por canal de terceros.

Para habilitar CMEK en un canal de terceros, haz lo siguiente:

Consola

  1. En la consola de Google Cloud, ve a la página Eventarc> Canales.

    Ve a Eventarc

  2. Haz clic en un canal con un proveedor de terceros.

  3. En la página Detalles del canal, haz clic en Editar.

  4. En la página Editar canal, selecciona la casilla de verificación Usar una clave de encriptación administrada por el cliente (CMEK).

  5. En la lista Clave de encriptación de CMEK, selecciona un llavero de claves que hayas creado para la región. Ten en cuenta que solo puedes agregar una clave de encriptación por región para un canal.

  6. Opcional: Para ingresar de forma manual el nombre del recurso de la clave que quieres usar, en la lista Clave de encriptación de CMEK, haz clic en Ingresar clave de forma manual y, luego, ingresa nombre de la clave en el formato especificado.

  7. Si se te solicita, otorga el rol cloudkms.cyptoKeyEncrypterDecrypter a la cuenta de servicio de Eventarc con el rol eventarc.serviceAgent.

  8. Haz clic en Guardar.

gcloud

 gcloud eventarc channels update CHANNEL_NAME \
    --location=LOCATION \
    --crypto-key=KEY

Reemplaza lo siguiente:

  • CHANNEL_NAME: el nombre del canal de terceros. Para crear un canal de terceros nuevo, consulta Crea un canal.
  • LOCATION: la ubicación del canal de terceros que se protegerá. Debe coincidir con la ubicación de la clave.
  • KEY: El nombre de la clave de Cloud KMS completamente calificado en el formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Verifica el uso de Cloud KMS

Para verificar que el canal ahora cumpla con CMEK, haz lo siguiente:

Consola

  1. En la consola de Google Cloud, ve a la página Activadores> de Eventarc.

    Ve a Eventarc

  2. Haz clic en un activador con una fuente de terceros como su proveedor de eventos y una región que protegiste con CMEK.

  3. En la página Detalles del activador, el estado de la Encriptación muestra el mensaje, Events encrypted using Customer-managed encryption keys.

gcloud

 gcloud eventarc channels describe CHANNEL_NAME \
    --location=LOCATION

El resultado debería ser similar al siguiente ejemplo:

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
 pubsubTopic: projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID
 state: ACTIVE
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

En cryptokeyName, se muestra la clave de Cloud KMS que se usa para el canal de terceros.

Inhabilita CMEK

Puedes inhabilitar la protección con CMEK asociada a un canal. Los eventos que se entregan a través de esos canales aún están protegidos por claves de encriptación administradas por Google. Para borrar la protección con CMEK asociada a un canal, haz lo siguiente:

Consola

  1. En la consola de Google Cloud, ve a la página Eventarc> Canales.

    Ve a Eventarc

  2. Según el tipo de canal, haz lo siguiente:

    Canal de Google

    1. Haz clic en un canal con un proveedor de Google.
    2. En la página Editar canal, mantén el cursor sobre la lista de claves de encriptación de CMEK para ver el botón Borrar elemento .
    3. Haz clic en Eliminar elemento
    4. Haz clic en Guardar.

    CANAL DE TERCEROS

    1. Haz clic en un canal con un proveedor de terceros.
    2. En la página Detalles del canal, haz clic en Editar.
    3. En la página Editar canal, desmarca la casilla de verificación Usar una clave de encriptación administrada por el cliente (CMEK).
    4. Haz clic en Guardar.

gcloud

Según el tipo de canal, haz lo siguiente:

Canal de Google

gcloud eventarc google-channels \
    update --clear-crypto-key

CANAL DE TERCEROS

gcloud eventarc channels CHANNEL_NAME \
    update --clear-crypto-key

Inhabilita y habilita claves de Cloud KMS

Una versión de clave almacena el material de clave criptográfica que usas para encriptar, desencriptar, firmar y verificar datos. Puedes inhabilitar esta versión de clave para que no se pueda acceder a los datos encriptados con la clave.

Cuando Eventarc no puede acceder a Cloud KMS, la publicación de eventos con canales presenta errores FAILED_PRECONDITION y la entrega de eventos se detiene. Puedes habilitar una clave en el estado Inhabilitada para que se pueda acceder a los datos encriptados de nuevo.

Inhabilita las claves de Cloud KMS

A fin de evitar que Eventarc use la clave para encriptar o desencriptar los datos de eventos, realiza una de las siguientes acciones:

Aunque ninguna de las dos operaciones garantiza la revocación de acceso instantánea, los cambios en Identity and Access Management (IAM) se suelen propagar más rápido. Para obtener más información, consulta Coherencia de recursos de Cloud KMS y Propagación del cambio de acceso.

Vuelve a habilitar las claves de Cloud KMS

Para reanudar la entrega y publicación de eventos, restablece el acceso a Cloud KMS.

Precios

Esta integración no genera costos adicionales más allá de las operaciones de clave que se facturan en tu proyecto de Google Cloud. El uso de CMEK para un canal genera cargos por el acceso al servicio de Cloud KMS según los precios de Pub/Sub.

Para obtener más información sobre los precios más recientes, consulta Precios de Cloud KMS.

¿Qué sigue?