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

De forma predeterminada, Eventarc encripta el contenido del cliente almacenado en reposo. Eventarc controla la encriptación por ti sin que debas realizar ninguna acción adicional. Esta opción se denomina Encriptación predeterminada de Google.

Si deseas controlar tus claves de encriptación, puedes usar las claves de encriptación administradas por el cliente (CMEK) en Cloud KMS con servicios integrados en CMEK, incluido Eventarc. El uso de claves de Cloud KMS te permite controlar su nivel de protección, ubicación, programa de rotación, permisos de uso y acceso, y límites criptográficos. El uso de Cloud KMS también te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. 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 KMS.

Después de configurar tus recursos con CMEK, la experiencia de acceso a tus recursos de Eventarc es similar a usar la encriptación predeterminada de Google. Para obtener más información sobre tus opciones de encriptación, consulta Claves de encriptación administradas por el cliente (CMEK).

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.

Qué se protege con CMEK

Puedes configurar CMEK para encriptar los mensajes de eventos que pasan por los siguientes recursos:

  • MessageBus: Un bus de Eventarc Advanced
  • Pipeline: Una canalización de Eventarc Advanced
  • GoogleApiSource: Es un recurso que representa una suscripción a eventos de la API de Google para un autobús en particular.

Para obtener más información, consulta la descripción general de Eventarc Advanced.

Cuando habilitas CMEK para un recurso, se protegen los datos asociados con el recurso en esa región mediante una clave de encriptación a la que solo tú puedes acceder.

Cloud KMS y Eventarc son servicios regionalizados. La región de la clave de Cloud KMS y el recurso avanzado de Eventarc protegido deben ser iguales.

Antes de comenzar

Antes de usar esta función en Eventarc, debes realizar las siguientes acciones:

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.

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 el rol Encriptador/Desencriptador de CryptoKeys de Cloud KMS:

Console

Cuando habilitas CMEK para un bus o una canalización con la consola de Google Cloud, se te solicita 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 un bus o Habilita CMEK para un canal.

gcloud

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

Reemplaza lo siguiente:

  • KEY_NAME: Es el nombre de la clave, por ejemplo, my-key.
  • KEY_RING: Es el nombre del llavero de claves, por ejemplo, my-keyring.
  • REGION: 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 un bus

Cuando habilitas CMEK para un bus de Eventarc Advanced, todos los mensajes que pasan por el bus se encriptan por completo con esa clave CMEK.

Console

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

    Ir a Bus

  2. Puedes crear un bus o, si quieres actualizar uno, haz clic en su nombre.

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

  4. En la página Editar bus, en Encriptación, selecciona Clave de Cloud KMS.

  5. En la lista Tipo de clave, selecciona un método para administrar tus claves.

    Puedes administrar tus claves de forma manual o usar Autokey, que te permite generar llaveros y claves a pedido. Si la opción de Autokey está inhabilitada, aún no está integrada en el tipo de recurso actual.

  6. Selecciona una clave administrada por el cliente.

  7. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista Selecciona una clave administrada por el cliente, haz clic en Ingresar clave de forma manual y, luego, escribe el nombre de la clave en el formato especificado.

  8. Si se te solicita, otorga el rol cloudkms.cryptoKeyEncrypterDecrypter al agente de servicio de Eventarc.

  9. Haz clic en Guardar.

gcloud

Usa el comando gcloud beta eventarc message-buses update para habilitar CMEK en tu bus:

gcloud beta eventarc message-buses update BUS_NAME \
    --location=REGION \
    --crypto-key=KEY

Reemplaza lo siguiente:

  • BUS_NAME: El ID o el identificador completamente calificado de tu bus
  • REGION: Una ubicación de Eventarc Advanced compatible
  • KEY: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en formato projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

    El REGION de la clave debe coincidir con la ubicación del bus que se protegerá.

Verifica el uso de Cloud KMS

Verifica que el bus ahora cumpla con CMEK.

Console

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

    Ir a Bus

  2. Haz clic en el nombre del bus que protegiste con CMEK.

  3. En la página Detalles del bus, el estado Encriptación muestra el mensaje Event messages encrypted using customer-managed encryption keys.

gcloud

Usa el comando gcloud beta eventarc message-buses describe para describir el bus:

 gcloud beta eventarc message-buses describe BUS_NAME \
     --location=REGION

El resultado debería ser similar al siguiente ejemplo:

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

El valor de cryptokeyName muestra la clave de Cloud KMS que se usa para el bus.

Inhabilita CMEK para un bus

Puedes inhabilitar la protección con CMEK asociada a un bus. Los eventos que se entregan a través del bus están protegidos por claves de Google y administradas por Google.

Console

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

    Ir a Bus

  2. Haz clic en el nombre del bus.

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

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

  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud beta eventarc message-buses update para inhabilitar CMEK en tu bus:

gcloud beta eventarc message-buses update BUS_NAME \
    --location=REGION \
    --clear-crypto-key

Habilita CMEK para una canalización

Cuando habilitas CMEK para una canalización de Eventarc Advanced, todos los mensajes que pasan por la canalización se encriptan por completo con esa clave CMEK.

Console

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

    Ir a Canalizaciones

  2. Puedes crear una canalización o, si quieres actualizar una, haz clic en su nombre.

  3. En la página Detalles de la canalización, haz clic en Editar.

  4. En la página Editar canalización, en Encriptación, selecciona Clave de Cloud KMS.

  5. En la lista Tipo de clave, selecciona un método para administrar tus claves.

    Puedes administrar tus claves de forma manual o usar Autokey, que te permite generar llaveros y claves a pedido. Si la opción Autokey está inhabilitada, aún no está integrada en el tipo de recurso actual.

  6. Selecciona una clave administrada por el cliente.

  7. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista Selecciona una clave administrada por el cliente, haz clic en Ingresar clave de forma manual y, luego, escribe el nombre de la clave en el formato especificado.

  8. Si se te solicita, otorga el rol cloudkms.cryptoKeyEncrypterDecrypter al agente de servicio de Eventarc.

  9. Haz clic en Guardar.

gcloud

Usa el comando gcloud beta eventarc pipelines update para habilitar CMEK en una canalización:

 gcloud beta eventarc pipelines update PIPELINE_NAME \
     --location=REGION \
     --crypto-key=KEY

Reemplaza lo siguiente:

  • PIPELINE_NAME: El ID o el identificador completamente calificado de tu canalización
  • REGION: Una ubicación de Eventarc Advanced compatible
  • KEY: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en formato projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

    El REGION de la clave debe coincidir con la ubicación de la canalización que se protegerá.

Verifica el uso de Cloud KMS

Verifica que la canalización ahora cumpla con CMEK.

Console

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

    Ir a Canalizaciones

  2. Haz clic en el nombre de la canalización que protegiste con CMEK.

  3. En la página Detalles de la canalización, el estado Encriptación muestra el mensaje Event messages encrypted using customer-managed encryption keys.

gcloud

Usa el comando gcloud beta eventarc pipelines describe para verificar la CMEK de tu canalización:

 gcloud beta eventarc pipelines describe PIPELINE_NAME \
     --location=REGION

El resultado debería ser similar al siguiente ejemplo:

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 destinations: ...
 name: projects/PROJECT_ID/locations/REGION/pipelines/PIPELINE_NAME
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

El valor de cryptokeyName muestra la clave de Cloud KMS que se usa para la canalización.

Inhabilita CMEK para una canalización

Puedes inhabilitar la protección con CMEK asociada a una canalización. Los eventos que se entregan a través de la canalización siguen protegidos por claves de Google y administradas por Google.

Console

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

    Ir a Canalizaciones

  2. Haz clic en el nombre de la canalización.

  3. En la página Detalles de la canalización, haz clic en Editar.

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

  5. Haz clic en Guardar.

gcloud

Usa el comando gcloud beta eventarc pipelines update para inhabilitar CMEK en tu canalización:

gcloud beta eventarc pipelines update PIPELINE_NAME \
    --location=REGION \
    --clear-crypto-key

Habilita CMEK para las fuentes de la API de Google

Cuando habilitas CMEK para un recurso GoogleApiSource, todos los mensajes que se recopilan para ese recurso se encriptan por completo con la clave CMEK.

Console

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

    Ir a Bus

  2. Puedes crear un bus o, si quieres actualizar uno, haz clic en su nombre.

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

  4. Para agregar una fuente de mensajes, haz clic en Agregar fuente.

    Si ya existe una fuente de mensajes, primero debes borrarla y, luego, agregar una fuente de mensajes nueva.

  5. En el panel Add message source, para el proveedor de mensajes de la API de Google, acepta el valor predeterminado de google-api-source.

  6. En Encriptación, selecciona Clave de Cloud KMS y haz lo siguiente:

    1. En la lista Tipo de clave, selecciona un método para administrar tus claves.

      Puedes administrar tus claves de forma manual o usar Autokey, que te permite generar llaveros y claves a pedido. Si la opción Autokey está inhabilitada, aún no está integrada en el tipo de recurso actual.

    2. En Selecciona una clave administrada por el cliente, selecciona una clave.

      Debes seleccionar una región para poder ver las claves administradas por el cliente.

    3. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista Selecciona una clave administrada por el cliente, haz clic en Ingresar clave de forma manual y, luego, escribe el nombre de la clave en el formato especificado.

    4. Si se te solicita, otorga el rol cloudkms.cryptoKeyEncrypterDecrypter al agente de servicio de Eventarc.

  7. Haz clic en Crear.

    Esto permite la recopilación automática de eventos que provienen directamente de las fuentes de Google, y todos los mensajes de eventos se encriptan por completo con la clave CMEK.

    Solo se publican los eventos de los recursos del mismo proyecto de Google Cloud que el GoogleApiSource. Para obtener más información, consulta Cómo publicar eventos desde fuentes de Google.

  8. Haz clic en Guardar.

gcloud

Usa el comando gcloud beta eventarc google-api-sources update para habilitar CMEK para tu recurso GoogleApiSource:

gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \
    --location=REGION \
    --crypto-key=KEY

Reemplaza lo siguiente:

  • GOOGLE_API_SOURCE_NAME: El ID o el identificador completamente calificado de tu recurso GoogleApiSource
  • REGION: Una ubicación de Eventarc Advanced compatible
  • KEY: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en formato projects/PROJECT_NAME/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

    El REGION de la clave debe coincidir con la ubicación del recurso que se protegerá.

Verifica el uso de Cloud KMS

Verifica que el recurso ahora cumpla con CMEK.

Console

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

    Ir a Bus

  2. Haz clic en el nombre del bus cuya fuente de mensajes protegiste con una clave de Cloud KMS.

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

    Debe aparecer la clave que encripta la fuente de tu mensaje.

gcloud

Usa el comando gcloud beta eventarc google-api-sources describe para verificar el CMEK de tu recurso GoogleApiSource:

  gcloud beta eventarc google-api-sources describe GOOGLE_API_SOURCE_NAME \
      --location=REGION

El resultado debería ser similar al siguiente ejemplo:

  createTime: '2022-06-28T18:05:52.403999904Z'
  cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
  destination: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME
  name: projects/PROJECT_ID/locations/REGION/googleApiSources/GOOGLE_API_SOURCE_NAME
  uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
  updateTime: '2022-06-28T18:09:18.650727516Z'

El valor de cryptokeyName muestra la clave de Cloud KMS que se usa para la canalización.

Inhabilita CMEK para las fuentes de la API de Google

Puedes inhabilitar la protección con CMEK asociada a las fuentes de la API de Google. Los eventos que se recopilan a través del recurso GoogleApiSource aún están protegidos por claves que son propiedad de Google y están administradas por Google.

Console

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

    Ir a Bus

  2. Haz clic en el nombre del bus cuya fuente de mensajes protegiste con la CMK.

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

  4. Para borrar la fuente del mensaje encriptada por una clave de Cloud KMS, haz clic en Borrar recurso.

  5. Si es necesario, vuelve a agregar la fuente del mensaje.

gcloud

Usa el comando gcloud beta eventarc google-api-sources update para inhabilitar CMEK en tu recurso GoogleApiSource:

gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \
    --location=REGION \
    --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 las claves de Cloud KMS, el enrutamiento de eventos falla con errores FAILED_PRECONDITION y se detiene la entrega de eventos. 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 el enrutamiento de eventos, restablece el acceso a Cloud KMS.

Registros de auditoría y solución de problemas

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

Para resolver problemas que puedas encontrar cuando uses claves administradas de forma externa a través de Cloud External Key Manager (Cloud EKM), consulta la referencia de errores de Cloud EKM.

Precios

La integración del bus 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 una canalización 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?