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:
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
En la Google Cloud consola, ve a la página Eventarc > Triggers (Activadores).
Haz clic en un activador que tenga un origen de terceros como Proveedor de eventos y una Región que hayas protegido con CMEK.
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
En la Google Cloud consola, ve a la página Eventarc > Canales.
Haz clic en el nombre de un canal.
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
En la Google Cloud consola, ve a la página Eventarc > Canales.
En función del tipo de canal, sigue estos pasos:
Canal de Google
- Haz clic en un canal con un proveedor de Google.
- En la página Editar canal, coloca el puntero sobre la lista Clave de cifrado CMEK para ver el botón Eliminar elemento.
- Haz clic en Eliminar elemento.
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
- 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 Cifrado, selecciona Clave de cifrado gestionada por Google.
- 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:
- Requerir CMEKs para los nuevos recursos de Eventarc
- Restringir las claves de Cloud KMS de un proyecto de Eventarc
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
En la Google Cloud consola, ve a la página Políticas de la organización.
En Filtrar, busca la siguiente restricción:
constraints/gcp.restrictNonCmekServices
En la columna Nombre, haga clic en Restringir los servicios que pueden crear recursos sin CMEK.
Haz clic en
Gestionar política.En la página Editar política, vaya a Fuente de la política y seleccione Anular política del recurso superior.
En Reglas, haz clic en Añadir una regla.
En la lista Valores de la política, selecciona Personalizado.
En la lista Tipo de política, selecciona Denegar.
En el campo Valores personalizados, introduce lo siguiente:
is:eventarc.googleapis.com
Haz clic en Hecho y, a continuación, en Definir política.
gcloud
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.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
En la Google Cloud consola, ve a la página Políticas de la organización.
En Filtrar, busca la siguiente restricción:
constraints/gcp.restrictCmekCryptoKeyProjects
En la columna Nombre, haga clic en Restringir los proyectos que pueden proporcionar CryptoKeys de KMS para CMEK.
Haz clic en
Gestionar política.En la página Editar política, vaya a Fuente de la política y seleccione Anular política del recurso superior.
En Reglas, haz clic en Añadir una regla.
En la lista Valores de la política, selecciona Personalizado.
En la lista Tipo de política, selecciona Permitir.
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
.Haz clic en Hecho y, a continuación, en Definir política.
gcloud
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.
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:
- Te recomendamos que inhabilites la versión de la clave que hayas configurado para el canal. Esto solo afecta a los canales y los activadores de Eventarc asociados a la clave específica.
- Opcional: Revoca el rol
cloudkms.cryptoKeyEncrypterDecrypter
de la cuenta de servicio de Eventarc. Esto afecta a todos los canales y activadores de Eventarc del proyecto que admitan eventos cifrados con CMEK.
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
- Solucionar problemas con las CMEK
- Prácticas recomendadas para usar las CMEKs
- Usar CMEK con Eventarc Advanced