Usar claves de encriptado gestionadas por el cliente

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

  1. 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 the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

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

gcloud

  1. Actualiza gcloud componentes.
    gcloud components update
  2. 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
  3. Crea un conjunto de claves.
  4. 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

  1. Habilita las APIs Cloud KMS y Eventarc en el proyecto que almacenará tus claves de cifrado configurando el recurso google_project_service:

    # Enable Cloud KMS API
    resource "google_project_service" "cloudkms" {
      service            = "cloudkms.googleapis.com"
      disable_on_destroy = false
    }
    
    # Enable Eventarc API
    resource "google_project_service" "eventarc" {
      service            = "eventarc.googleapis.com"
      disable_on_destroy = false
    }
  2. Crea un conjunto de claves y una clave configurando los recursos google_kms_key_ring y google_kms_crypto_key de la siguiente manera:

    resource "random_id" "default" {
      byte_length = 8
    }
    
    # Create a Cloud KMS key ring
    resource "google_kms_key_ring" "default" {
      name     = "${random_id.default.hex}-example-keyring"
      location = "us-central1"
    }
    
    # Create a Cloud KMS key
    resource "google_kms_crypto_key" "default" {
      name            = "example-key"
      key_ring        = google_kms_key_ring.default.id
      rotation_period = "7776000s"
    }

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 rol eventarc.serviceAgent.

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

Terraform

  1. Genera la identidad del servicio de Eventarc configurando el recurso google_project_service_identity:

    resource "google_project_service_identity" "eventarc_sa" {
      provider = google-beta
      project  = data.google_project.default.project_id
      service  = "eventarc.googleapis.com"
    }
  2. Concede el rol de Cloud KMS a la cuenta de servicio de Eventarc configurando el recurso google_kms_crypto_key_iam_member:

    # Grant service account access to Cloud KMS key
    resource "google_kms_crypto_key_iam_member" "default" {
      crypto_key_id = google_kms_crypto_key.default.id
      role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
      member        = "serviceAccount:${google_project_service_identity.eventarc_sa.email}"
    }

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

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

    Ir a Canales

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

  3. En la página Editar canal, marca la casilla Usar una clave de cifrado gestionada por el cliente (CMEK).

  4. Haz clic en Añadir clave de cifrado.

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

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

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

  8. Opcional: Haz clic en Añadir clave de cifrado para añadir otro conjunto de claves que hayas creado para otra región.

  9. 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 formato projects/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:

# Specify a CMEK key for the `GoogleChannelConfig` resource
resource "google_eventarc_google_channel_config" "default" {
  location        = "us-central1"
  name            = "googleChannelConfig"
  crypto_key_name = google_kms_crypto_key.default.id
  depends_on      = [google_kms_crypto_key_iam_member.default]
}

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

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

    Ir a Activadores

  2. Haz clic en un activador que tenga un Google Cloud origen como proveedor de eventos y una región que hayas protegido con CMEK.

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

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

    Ir a Canales

  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, en Encriptado, selecciona Clave de Cloud KMS.

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

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

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

  8. Si se te pide, concede el rol cloudkms.cryptoKeyEncrypterDecrypter al agente de servicio de Eventarc.

  9. 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 formato projects/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:

Si la solicitud se completa correctamente, en el cuerpo de la respuesta se incluye una instancia recién creada de Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Verificar el uso de Cloud KMS

Para verificar que el canal ahora cumple los requisitos de CMEK, sigue estos pasos:

Consola

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

    Ir a Activadores

  2. Haz clic en un activador que tenga un origen de terceros como Proveedor de eventos y una Región que hayas protegido con CMEK.

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

gcloud

 gcloud eventarc channels describe CHANNEL_NAME \
     --location=LOCATION

La salida debería ser similar a la siguiente:

 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'

El valor cryptokeyName muestra la clave de Cloud KMS que se ha usado en el canal de terceros.

Terraform

Para confirmar la clave CMEK, puedes usar el comando state show de Terraform.

terraform state show google_eventarc_channel.default

La salida debería ser similar a la siguiente:

# google_eventarc_channel.default:
resource "google_eventarc_channel" "default" {
create_time     = "2025-03-31T13:07:44.721274062Z"
crypto_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
id              = "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME"
location        = "LOCATION"
name            = "CHANNEL_NAME"
project         = "PROJECT_ID"
pubsub_topic    = "projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID"
state           = "ACTIVE"
uid             = "406302e9-1d41-4479-8f4f-2524a803790e"
update_time     = "2025-03-31T13:07:49.708241490Z"
}

REST

Para confirmar la clave de CMEK de un canal, puedes recuperar un recurso Channel con el método projects.locations.channels.get.

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 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 Channel:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
  "uid": "12f941a6-196a-457b-bfdb-ca21138859d0",
  "createTime": "2025-01-29T15:05:12.113912689Z",
  "updateTime": "2025-01-29T15:05:17.210986285Z",
  "pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
  "state": "ACTIVE",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

Mostrar la clave usada en un canal

Puedes describir un canal de Eventarc y mostrar la clave de Cloud KMS que se está usando en el canal.

Consola

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

    Ir a Canales

  2. Haz clic en el nombre de un canal.

  3. Se muestran las claves de cifrado CMEK que se estén usando en el canal.

gcloud

En función del tipo de canal, ejecuta el siguiente comando:

Canal de Google

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

Canal de terceros

gcloud eventarc channels describe CHANNEL_NAME \
    --location=LOCATION

El resultado debe contener una línea similar a la siguiente:

cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME

El valor cryptoKeyName muestra la clave de Cloud KMS que se está usando en el canal.

Terraform

En función del tipo de canal, ejecuta el siguiente comando:

Canal de Google

terraform state show google_eventarc_google_channel_config.default

Canal de terceros

terraform state show google_eventarc_channel.default

El resultado debe contener una línea similar a la siguiente:

crypto_key_name= "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"

El valor crypto_key_name muestra la clave de Cloud KMS que se está usando en el canal.

REST

En función del tipo de canal, haz la siguiente solicitud:

Canal de Google

Para confirmar la clave CMEK de un proyecto y una ubicación concretos, puedes recuperar el recurso GoogleChannelConfig con 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"
}

Canal de terceros

Para confirmar la clave CMEK de un proyecto y una ubicación concretos, puedes recuperar un recurso Channel mediante el método projects.locations.channels.get.

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 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 Channel:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
  "uid": "12f941a6-196a-457b-bfdb-ca21138859d0",
  "createTime": "2025-01-29T15:05:12.113912689Z",
  "updateTime": "2025-01-29T15:05:17.210986285Z",
  "pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
  "state": "ACTIVE",
  "cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}

Inhabilitar CMEK

Puedes inhabilitar la protección con CMEK asociada a un canal. Los eventos que se envían a través de estos canales siguen protegidos por Google-owned and Google-managed encryption keys. Para eliminar la protección con CMEK asociada a un canal, sigue estos pasos:

Consola

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

    Ir a Canales

  2. En función del tipo de canal, sigue estos pasos:

    Canal de Google

    1. Haz clic en un canal con un proveedor de Google.
    2. En la página Editar canal, coloca el puntero sobre la lista Clave de cifrado CMEK para ver el botón Eliminar elemento.
    3. Haz clic en Eliminar elemento.
    4. Haz clic en Guardar.

      Es posible que tengas que actualizar la página para habilitar la casilla Usar una clave de cifrado gestionada por el cliente (CMEK).

    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, en Cifrado, selecciona Clave de cifrado gestionada por Google.
    4. Haz clic en Guardar.

gcloud

En función del tipo de canal, ejecuta el siguiente comando:

Canal de Google

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

Canal de terceros

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

Terraform

En función del tipo de canal, borra el valor de crypto_key_name. Para ello, no lo especifiques al configurar el recurso de Terraform:

Canal de Google

resource "google_eventarc_google_channel_config" "default" {
  location        = "us-central1"
  name            = "googleChannelConfig"
}

Canal de terceros

resource "google_eventarc_channel" "default" {
  location        = "us-central1"
  name            = "CHANNEL_NAME"
}

REST

En función del tipo de canal, haz la siguiente solicitud:

Canal de Google

Para eliminar la clave CMEK, puedes actualizar el GoogleChannelConfig recurso de un proyecto y una ubicación concretos con el método projects.locations.updateGoogleChannelConfig.

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 que se va a proteger.

Cuerpo JSON de la solicitud:

{
  "cryptoKeyName": ""
}

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"
}

Canal de terceros

Para eliminar la clave CMEK, puedes actualizar un recurso Channel de un proyecto y una ubicación determinados con el método projects.locations.channels.patch.

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

Cuerpo JSON de la solicitud:

{
  "cryptoKeyName": ""
}

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 recién creada de Operation:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
    "createTime": "2024-01-25T17:17:45.782370139Z",
    "target": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
    "verb": "update",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

Aplicar una política de organización de CMEK

Eventarc se integra con dos restricciones de políticas de la organización para ayudar a asegurar el uso de CMEK en toda la organización:

  • constraints/gcp.restrictNonCmekServices se usa para requerir protección con CMEK.
  • constraints/gcp.restrictCmekCryptoKeyProjects se usa para limitar las claves de Cloud KMS que se utilizan para la protección con CMEK.
.

Esta integración le permite especificar los siguientes requisitos de cumplimiento del cifrado para los recursos de Eventarc de su organización:

Consideraciones al aplicar políticas de organización

Antes de aplicar cualquier política de organización de CMEK, debes tener en cuenta lo siguiente.

  • Prepárate para un retraso en la propagación

    Después de definir o actualizar una política de la organización, la nueva política puede tardar hasta 15 minutos en aplicarse.

  • Tener en cuenta los recursos disponibles

    Los recursos ya creados no están sujetos a las políticas de la organización que se creen posteriormente. Por ejemplo, una política de organización no se aplica de forma retroactiva a las canalizaciones que ya existen. Se puede seguir accediendo a esos recursos sin una CMEK y, si procede, siguen cifrados con las claves que ya tenían.

  • Verificar los permisos necesarios para definir una política de la organización

    Puede que sea difícil obtener el permiso para definir o actualizar la política de la organización con fines de prueba. Debes tener el rol Administrador de políticas de la organización, que solo se puede asignar a nivel de organización (no a nivel de proyecto o carpeta).

    Aunque el rol debe concederse a nivel de organización, sigue siendo posible especificar una política que solo se aplique a un proyecto o una carpeta concretos.

Requerir CMEKs para los nuevos recursos de Eventarc

Puede usar la restricción constraints/gcp.restrictNonCmekServices para requerir que se usen CMEKs para proteger los nuevos recursos de Eventarc de una organización.

Si se define, esta política de organización provoca que fallen todas las solicitudes de creación de recursos sin una clave de Cloud KMS especificada.

Una vez que hayas configurado esta política, solo se aplicará a los recursos nuevos del proyecto. Los recursos que ya tengas y a los que no se les haya aplicado ninguna clave de Cloud KMS seguirán existiendo y se podrá acceder a ellos sin problemas.

Consola

  1. En la Google Cloud consola, ve a la página Políticas de la organización.

    Ir a Políticas de organización

  2. En Filtrar, busca la siguiente restricción:

    constraints/gcp.restrictNonCmekServices
    
  3. En la columna Nombre, haga clic en Restringir los servicios que pueden crear recursos sin CMEK.

  4. Haz clic en Gestionar política.

  5. En la página Editar política, vaya a Fuente de la política y seleccione Anular política del recurso superior.

  6. En Reglas, haz clic en Añadir una regla.

  7. En la lista Valores de la política, selecciona Personalizado.

  8. En la lista Tipo de política, selecciona Denegar.

  9. En el campo Valores personalizados, introduce lo siguiente:

    is:eventarc.googleapis.com
    
  10. Haz clic en Hecho y, a continuación, en Definir política.

gcloud

  1. Crea un archivo temporal /tmp/policy.yaml para almacenar la política:

      name: projects/PROJECT_ID/policies/gcp.restrictNonCmekServices
      spec:
        rules:
        - values:
            deniedValues:
            - is:eventarc.googleapis.com

    Sustituye PROJECT_ID por el ID del proyecto en el que vas a aplicar esta restricción.

  2. Ejecuta el comando org-policies set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml

Para verificar que la política se ha aplicado correctamente, puedes intentar crear un canal estándar de Eventarc en el proyecto. El proceso falla a menos que especifiques una clave de Cloud KMS.

Restringir las claves de Cloud KMS de un proyecto de Eventarc

Puedes usar la restricción constraints/gcp.restrictCmekCryptoKeyProjects para limitar las claves de Cloud KMS que puedes usar para proteger un recurso en un proyecto de Eventarc.

Por ejemplo, puedes especificar una regla similar a la siguiente: "Para los recursos de Eventarc aplicables en projects/my-company-data-project, las claves de Cloud KMS usadas en este proyecto deben proceder de projects/my-company-central-keys O projects/team-specific-keys".

Consola

  1. En la Google Cloud consola, ve a la página Políticas de la organización.

    Ir a Políticas de organización

  2. En Filtrar, busca la siguiente restricción:

    constraints/gcp.restrictCmekCryptoKeyProjects
    
  3. En la columna Nombre, haga clic en Restringir los proyectos que pueden proporcionar CryptoKeys de KMS para CMEK.

  4. Haz clic en Gestionar política.

  5. En la página Editar política, vaya a Fuente de la política y seleccione Anular política del recurso superior.

  6. En Reglas, haz clic en Añadir una regla.

  7. En la lista Valores de la política, selecciona Personalizado.

  8. En la lista Tipo de política, selecciona Permitir.

  9. En el campo Valores personalizados, introduce lo siguiente:

    under:projects/KMS_PROJECT_ID
    

    Sustituye KMS_PROJECT_ID por el ID del proyecto en el que se encuentran las claves de Cloud KMS que quieres usar.

    Por ejemplo, under:projects/my-kms-project.

  10. Haz clic en Hecho y, a continuación, en Definir política.

gcloud

  1. Crea un archivo temporal /tmp/policy.yaml para almacenar la política:

      name: projects/PROJECT_ID/policies/gcp.restrictCmekCryptoKeyProjects
      spec:
        rules:
        - values:
            allowedValues:
            - under:projects/KMS_PROJECT_ID

    Sustituye lo siguiente:

    • PROJECT_ID: el ID del proyecto en el que estás aplicando esta restricción.
    • KMS_PROJECT_ID: el ID del proyecto en el que se encuentran las claves de Cloud KMS que quieres usar.
  2. Ejecuta el comando org-policies set-policy:

    gcloud org-policies set-policy /tmp/policy.yaml

Para verificar que la política se ha aplicado correctamente, puedes intentar crear un canal estándar de Eventarc con una clave de Cloud KMS de otro proyecto. El proceso fallará.

Habilitar e inhabilitar 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 la clave para que no se pueda acceder a los datos que se hayan cifrado con ella.

Cuando Eventarc no puede acceder a las claves de Cloud KMS, la publicación de eventos con canales falla y se producen 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.

Inhabilitar claves de Cloud KMS

Para evitar que Eventarc use la clave para cifrar o descifrar los datos de tus eventos, haz lo siguiente:

Aunque ninguna de las dos operaciones garantiza la revocación instantánea del acceso, los cambios en la gestión de identidades y accesos (IAM) suelen propagarse más rápido. Para obtener más información, consulta Consistencia de recursos de Cloud KMS y Propagación de cambios de acceso.

Volver a habilitar claves de Cloud KMS

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

Precios

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

Para obtener más información sobre los precios más actuales, consulta la página Precios de Cloud KMS.

Siguientes pasos