De forma predeterminada, Eventarc cifra el contenido del cliente en reposo. Eventarc se encarga del cifrado sin que tengas que hacer nada más. Esta opción se llama Cifrado predeterminado de Google.
Si quieres controlar tus claves de cifrado, puedes usar claves de cifrado gestionadas por el cliente (CMEKs) en Cloud KMS con servicios integrados con CMEKs, como Eventarc. Si usas claves de Cloud KMS, tendrás control sobre su nivel de protección, ubicación, calendario de rotación, permisos de uso y acceso, y límites criptográficos. Además, Cloud KMS te permite ver los registros de auditoría y controlar los ciclos de vida de las claves. En lugar de que Google sea el propietario y gestione las claves de cifrado de claves (KEKs) simétricas que protegen tus datos, tú controlas y gestionas estas claves en Cloud KMS.
Una vez que hayas configurado tus recursos con CMEKs, la experiencia de acceso a tus recursos de Eventarc será similar a la de usar el cifrado predeterminado de Google. Para obtener más información sobre las opciones de encriptado, consulta Claves de encriptado gestionadas por el cliente (CMEK).
Las claves de cifrado gestionadas por el cliente se almacenan como claves de software, en un clúster de Cloud HSM o externamente mediante Cloud External Key Manager.
Cloud KMS genera registros de auditoría cuando se habilitan o inhabilitan claves, o cuando los recursos avanzados de Eventarc las usan para cifrar y descifrar mensajes. Para obtener más información, consulta la información sobre el registro de auditoría de Cloud KMS.
Qué se protege con CMEK
Puede configurar CMEK para un canal que use Eventarc Standard y cifrar los eventos que pasen por el canal. Si habilitas un canal con CMEK, los datos asociados a él se protegerán mediante una clave de cifrado a la que solo tú podrás acceder.
Cuando habilitas la CMEK para el canal de Google en un Google Cloud proyecto, todos los activadores estándar de Eventarc para los tipos de eventos de Google de ese proyecto y región se cifran por completo con esa clave CMEK. Las claves CMEK no se pueden aplicar por activador.
Antes de empezar
Antes de usar esta función en Eventarc, debes hacer lo siguiente:
Consola
-
Enable the Cloud KMS and Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Crea un conjunto de claves.
- Crea una clave para un conjunto de claves específico.
gcloud
- Actualiza
gcloud
componentes.gcloud components update
- Habilita las APIs Cloud KMS y Eventarc en el proyecto que almacenará tus claves de cifrado.
gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
- Crea un conjunto de claves.
- Crea una clave para un conjunto de claves específico.
Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help
.
Terraform
Habilita las APIs Cloud KMS y Eventarc en el proyecto que almacenará tus claves de cifrado configurando el recurso
google_project_service
:Crea un conjunto de claves y una clave configurando los recursos
google_kms_key_ring
ygoogle_kms_crypto_key
de la siguiente manera:
Para obtener más información sobre el uso de Terraform, consulta la documentación de Terraform en Google Cloud.
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 la misma.
Conceder acceso a una clave a la cuenta de servicio de Eventarc
Para conceder acceso a la clave de Cloud KMS a la cuenta de servicio de Eventarc, añade la cuenta de servicio como principal de la clave y concédele el rol Encargado del encriptado y desencriptado de la clave criptográfica Cloud KMS:
Consola
Cuando habilitas CMEK en un canal de Google o de terceros a través de la consola, se te pide que asignes el rol Encargado de cifrar o descifrar claves de CryptoKey de Cloud KMS a la cuenta de servicio. Para obtener más información, consulta Habilitar CMEK para tipos de eventos de Google o Habilitar CMEK para un canal de eventos de terceros en este documento.
gcloud
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring RING_NAME \ --location LOCATION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
Haz los cambios siguientes:
KEY_NAME
: el nombre de la clave. Por ejemplo,my-key
.RING_NAME
: el nombre del conjunto de claves. Por ejemplo,my-keyring
.LOCATION
: la ubicación de la clave. Por ejemplo,us-central1
.SERVICE_AGENT_EMAIL
: la dirección de correo de la cuenta de servicio con el roleventarc.serviceAgent
.Por ejemplo,
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com
. Para obtener más información, consulta Agentes de servicio.
Terraform
Genera la identidad del servicio de Eventarc configurando el recurso
google_project_service_identity
:Concede el rol de Cloud KMS a la cuenta de servicio de Eventarc configurando el recurso
google_kms_crypto_key_iam_member
:
Habilitar CMEK para tipos de eventos de Google
Los activadores de Eventarc que dirigen tipos de eventos de Google publican eventos en un canal virtual denominado canal de Google, que es específico de un proyecto y una región. Este canal virtual está disponible en todas las regiones de Eventarc.
Cuando habilitas la CMEK para el canal de Google en un Google Cloud proyecto, todas las activadores de Eventarc de los tipos de eventos de Google de ese proyecto y región se cifran por completo con esa clave CMEK. Puedes añadir varias claves CMEK y asociar cada una a una región específica del canal de Google. Las claves de CMEK no se pueden aplicar por activador.
Consola
En la Google Cloud consola, ve a la página Eventarc > Canales.
Haz clic en un canal con un proveedor de Google.
En la página Editar canal, marca la casilla Usar una clave de cifrado gestionada por el cliente (CMEK).
Haz clic en Añadir clave de cifrado.
Selecciona una región y, en la lista Clave de cifrado CMEK, elige un conjunto de claves que hayas creado para la región. Ten en cuenta que solo puedes añadir una clave de cifrado por región a un canal.
Opcional: Para introducir manualmente el nombre del recurso de la clave, en la lista Clave de cifrado CMEK, haga clic en ¿No ve su clave? Introduce el nombre del recurso de la clave y el nombre de la clave en el formato especificado.
Si se te pide, asigna el rol
cloudkms.cryptoKeyEncrypterDecrypter
a la cuenta de servicio de Eventarc con el roleventarc.serviceAgent
.Opcional: Haz clic en Añadir clave de cifrado para añadir otro conjunto de claves que hayas creado para otra región.
Haz clic en Guardar.
gcloud
gcloud eventarc google-channels update \ --location=LOCATION \ --crypto-key=KEY
Haz los cambios siguientes:
LOCATION
: la región del canal de Google que se va a proteger. Debe coincidir con la ubicación de la clave utilizada. Ten en cuenta que solo puedes añadir una clave de cifrado por región a un canal.KEY
: el nombre de clave de Cloud KMS completo con el formatoprojects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
.
Terraform
Habilita las claves de cifrado gestionadas por el cliente para el recurso GoogleChannelConfig
en un proyecto y una ubicación concretos configurando el recurso google_eventarc_google_channel_config
:
REST
Puedes actualizar el recurso GoogleChannelConfig
con el método projects.locations.updateGoogleChannelConfig
y especificar una clave CMEK para un proyecto y una ubicación concretos.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto Google Cloud.LOCATION
: la región del canal de Google que se va a proteger. Debe coincidir con la ubicación de la clave utilizada (por ejemplo,us-central1
). Ten en cuenta que solo puedes añadir una clave de cifrado por región a un canal.KEY_NAME
: el nombre de la clave (por ejemplo,my-key
).RING_NAME
: el nombre del conjunto de claves (por ejemplo,my-keyring
).
Cuerpo JSON de la solicitud:
{ "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" }
Para enviar tu solicitud, despliega una de estas opciones:
Si la solicitud se completa correctamente, en el cuerpo de la respuesta se incluye una instancia actualizada de GoogleChannelConfig
:
{ "name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig", "updateTime": "2025-03-05T17:56:54.106390447Z", "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" }
Si creas activadores de Pub/Sub con tus propios temas, te recomendamos que también configures la clave de KMS en el tema para disfrutar de una protección CMEK completa. Para obtener más información, consulta el artículo sobre cómo configurar temas de Pub/Sub.
Verificar el uso de Cloud KMS
Para verificar que el canal ahora cumple los requisitos de CMEK, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Eventarc > Triggers (Activadores).
Haz clic en un activador que tenga un Google Cloud origen como proveedor de eventos y una región que hayas protegido con CMEK.
En la página Detalles del activador, se muestra el estado Cifrado, el mensaje
Events encrypted using Customer-managed encryption keys
.
gcloud
Para confirmar la clave CMEK, puedes usar el comando
google-channels describe
.
gcloud eventarc google-channels describe \ --location=LOCATION
La salida debería ser similar a la siguiente:
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 cryptokeyName
muestra la clave de Cloud KMS usada en el canal de Google.
Terraform
Para confirmar la clave CMEK, puedes usar el comando state show
de Terraform.
terraform state show google_eventarc_google_channel_config.default
La salida debería ser similar a la siguiente:
# google_eventarc_google_channel_config.default: resource "google_eventarc_google_channel_config" "default" { crypto_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" id = "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig" location = "LOCATION" name = "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig" project = "PROJECT_ID" update_time = "2025-03-24T17:15:08.809635011Z" }
REST
Para confirmar la clave de CMEK, puedes obtener el recurso GoogleChannelConfig
mediante el método projects.locations.getGoogleChannelConfig
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
PROJECT_ID
: tu ID de proyecto Google Cloud.LOCATION
: la región del canal de Google protegido.
Para enviar tu solicitud, despliega una de estas opciones:
Si la salida del comando es correcta, en el cuerpo de la respuesta se incluirá una instancia de GoogleChannelConfig
:
{ "name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig", "updateTime": "2025-03-05T17:56:54.106390447Z", "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" }
Habilitar CMEK en un canal de terceros
Un canal de Eventarc para terceros es un recurso a través del cual las entidades que no son deGoogle Cloud y que ofrecen una fuente de Eventarc pueden interactuar con destinos. Este canal es específico de una región y solo puedes añadir una clave por canal de terceros.
Para habilitar las claves de cifrado gestionadas por el cliente en un canal de terceros, sigue estos pasos:
Consola
En la Google Cloud consola, ve a la página Eventarc > Canales.
Haz clic en un canal con un proveedor externo.
En la página Detalles del canal, haz clic en
Editar.En la página Editar canal, en Encriptado, selecciona Clave de Cloud KMS.
En la lista Tipo de clave, selecciona un método para gestionar tus claves.
Puedes gestionar tus claves manualmente o usar Autokey, que te permite generar conjuntos de claves y claves bajo demanda. Si la opción Autoclave está inhabilitada, significa que aún no se ha integrado con el tipo de recurso actual.
En la lista Seleccionar una clave de Cloud KMS, elija una clave. Ten en cuenta que solo puedes añadir una clave de cifrado por región a un canal.
Opcional: Para introducir manualmente el nombre del recurso de la clave, en la lista Seleccionar una clave de Cloud KMS, haz clic en Introducir clave manualmente e introduce el nombre de la clave en el formato especificado.
Si se te pide, concede el rol
cloudkms.cryptoKeyEncrypterDecrypter
al agente de servicio de Eventarc.Haz clic en Guardar.
gcloud
gcloud eventarc channels update CHANNEL_NAME \ --location=LOCATION \ --crypto-key=KEY
Haz los cambios siguientes:
CHANNEL_NAME
: el nombre del canal de terceros. Para crear un canal de terceros, consulta el artículo Crear un canal.LOCATION
: la región del canal de terceros que se va a proteger. Debe coincidir con la ubicación de la clave.KEY
: el nombre de la clave de Cloud KMS totalmente cualificado con el formatoprojects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
.
Terraform
Especifica una clave CMEK para un canal de terceros configurando el recurso google_eventarc_channel
. Por ejemplo:
resource "google_eventarc_channel" "default" { location = "us-central1" name = "CHANNEL_NAME" crypto_key_name = google_kms_crypto_key.default.id }
Sustituye CHANNEL_NAME
por el nombre del canal de terceros.
REST
Puedes actualizar un recurso Channel
con el método projects.locations.channels.patch
y especificar una clave CMEK para un proyecto y una ubicación concretos.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
CHANNEL_NAME
: el nombre del canal.PROJECT_ID
: tu ID de proyecto Google Cloud.LOCATION
: la región del canal que se va a proteger. Debe coincidir con la ubicación de la clave utilizada (por ejemplo,us-central1
). Ten en cuenta que solo puedes añadir una clave de cifrado por región a un canal.KEY_NAME
: el nombre de la clave (por ejemplo,my-key
).RING_NAME
: el nombre del conjunto de claves (por ejemplo,my-keyring
).
Cuerpo JSON de la solicitud:
{ "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" }
Para enviar tu solicitud, despliega una de estas opciones: