Usar claves de encriptación administradas por el cliente

De forma predeterminada, Google encripta tus 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 los datos asociados en reposo con una clave de encriptación a la que solo tú puedes acceder y que puedes crear y administrar con 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 Eventarc use y encriptar los eventos que pasan por el 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 para 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 se encriptan 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:

Console

  1. Enable the Cloud KMS and Eventarc APIs.

    Enable the APIs

  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 APIs de Cloud KMS y de Eventarc del proyecto que almacenará 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

Console

Cuando habilitas CMEK para un canal de Google o de terceros con la consola, se te solicitará que otorgues el rol 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 los 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

Eventarc activa que los tipos de rutas de eventos de Google publique eventos en un canal virtual llamado Canal de Google o regionales. 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 los 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 con una región específica para el canal de Google. Las claves CMEK no se pueden aplicar por activador.

Console

  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, elige 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. Elige una Región y, en la lista Clave de encriptación de CMEK, elige 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, en la lista clave de encriptación CMEK, haz clic en ¿No encuentras tu clave? Escribe el nombre del recurso de la clave y, luego, el nombre en el formato especificado.

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

  8. Opcional: Haz clic en Agregar clave de encriptación para agregar otro llavero de claves que creaste 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: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Si creas activadores de Pub/Sub con tus propios temas existentes, para una protección completa de CMEK, te recomendamos que también configures la clave KMS sobre 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, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Eventarc> 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, el estado Encriptación muestra 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:

Console

  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 externo.

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

  4. En la página Editar canal, elige 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, elige un llavero de claves que creaste 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 escribir de forma manual el nombre del recurso de la clave que quieres usar, En la lista Claves de encriptación de CMEK, haz clic en Escribir la clave de forma manual y, luego, escribe el nombre de la clave en el formato especificado.

  7. Si se te solicita, otorga el rol cloudkms.cryptoKeyEncrypterDecrypter 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: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en 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, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página Eventarc> 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 hayas protegido con CMEK.

  3. En la página Detalles del activador, el estado de 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 en dichos canales están protegidos por Claves de Google y administradas por Google. Para borrar la protección de CMEK asociada a un canal, sigue estos pasos:

Console

  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 externo.
    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 volver a acceder a los datos encriptados.

Inhabilita las claves de Cloud KMS

Si quieres evitar que Eventarc use la clave para encriptar o desencriptar los datos de tu evento, haz lo siguiente:

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 en 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 la información de precios más actualizada, consulta Precios de Cloud KMS.

¿Qué sigue?