Usar claves de encriptación administradas por el cliente

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Puedes usar claves de encriptación administradas por el cliente (CMEK) para proteger Eventarc y datos en reposo relacionados. Estas claves se crean y administran a través de Cloud Key Management Service (Cloud KMS) y se almacenan como claves de software, en un clúster de Cloud HSM o de forma externa mediante Cloud External Key Manager.

La habilitación de un canal con una CMEK protege los datos asociados con él mediante una clave de encriptación a la que solo tú puedes acceder. Este tipo de encriptación te permite cumplir con los requisitos de cumplimiento en ciertos sectores, como los servicios financieros. Debido a que la clave es de tu propiedad y no es controlada por Google, nadie (ni siquiera tú) puede acceder a los datos protegidos por estas claves de encriptación cuando se inhabilitan o destruyen las claves.

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

Antes de comenzar

Antes de usar esta función en Eventarc, debes hacer lo siguiente:

  1. Actualiza los componentes de gcloud:

    gcloud components update
    
  2. Habilita la API de Cloud Key Management Service para el proyecto que almacenará tus claves de encriptación.

    gcloud services enable cloudkms.googleapis.com
    
  3. Crea un llavero de claves y agrégale una clave nueva. Para obtener más información, consulta Crea claves de encriptación simétricas.

Ten en cuenta que Cloud KMS y Eventarc son servicios regionalizados. La región de la clave de Cloud KMS y el canal de Eventarc protegido deben ser iguales.

Otorga a la cuenta de servicio de Eventarc acceso a una clave

A fin de usar CMEK, otorga permiso a la cuenta de servicio de Eventarc para usar la clave de Cloud KMS.

  1. Habilita la API de Eventarc del proyecto en el que se almacenarán tus claves de encriptación.

    gcloud services enable eventarc.googleapis.com
    
  2. Para otorgar a la cuenta de servicio de Eventarc acceso a la clave, agrega la cuenta de servicio como principal de la clave y otorga a la cuenta de servicio el rol Cloud KMS CryptoKey Encrypter/Decrypter:

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

    Reemplaza lo siguiente:

    • KEY_NAME: el nombre de la clave. Por ejemplo, my-key

    • KEY_RING: es el nombre del llavero de claves. Por ejemplo, my-keyring

    • LOCATION: es la ubicación de la clave. Por ejemplo, us-central1

    • SERVICE_AGENT_EMAIL: la dirección de correo electrónico de la cuenta de servicio con el rol eventarc.serviceAgent. Por ejemplo, service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com. Para obtener más información, consulta Agentes de servicio.

Habilita CMEK para un canal de Google

Un canal de Google es un recurso mediante el cual las fuentes de Google Cloud pueden interactuar con los destinos. Para obtener más información, consulta Enumera proveedores de eventos.

Para habilitar CMEK en un canal de Google, sigue estos pasos:

gcloud eventarc google-channels update \
  --location=LOCATION \
  --crypto-key=KEY

Reemplaza lo siguiente:

  • LOCATION: la ubicación del canal de Google que se protegerá. Debe coincidir con la ubicación de la clave utilizada.
  • KEY: El nombre de la clave de Cloud KMS completamente calificado en el formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Si creas activadores de Pub/Sub con tus propios temas existentes para obtener una protección integral de CMEK, considera configurar la clave de KMS en el tema. Para obtener más información, consulta Configura temas de Pub/Sub.

Verifica el uso de Cloud KMS

Para verificar que el canal ahora sea compatible con CMEK, haz lo siguiente:

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

El resultado debería ser similar al siguiente ejemplo:

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

cryptokeyName muestra la clave de Cloud KMS que se usa para el canal de Google.

Habilita CMEK para un canal de terceros

Un canal de Eventarc es un recurso mediante el cual las entidades que no son de Google Cloud que ofrecen una fuente de Eventarc pueden interactuar con los destinos.

Para habilitar CMEK en un canal de terceros, haz lo siguiente:

gcloud eventarc channels update CHANNEL_NAME \
  --location=LOCATION \
  --crypto-key=KEY

Reemplaza lo siguiente:

  • CHANNEL_NAME: el nombre del canal de terceros. Para crear un canal de terceros nuevo, consulta Crea un canal.
  • LOCATION: la ubicación del canal de terceros que se protegerá. Debe coincidir con la ubicación de la clave.
  • KEY: El nombre de la clave de Cloud KMS completamente calificado en el formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Verifica el uso de Cloud KMS

Para verificar que el canal ahora sea compatible con CMEK, haz lo siguiente:

gcloud eventarc channels describe CHANNEL \
  --location=LOCATION

El resultado debería ser similar al siguiente ejemplo:

createTime: '2022-06-28T18:05:52.403999904Z'
cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig
pubsubTopic: projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID
state: ACTIVE
uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
updateTime: '2022-06-28T18:09:18.650727516Z'

En cryptokeyName, se muestra la clave de Cloud KMS que se usa para el canal de terceros.

Inhabilita Cloud KMS

Para evitar que Eventarc desencripte tus datos de eventos, haz lo siguiente:

  • Inhabilita la versión de la clave que configuraste para el canal. Esto afecta solo a los canales y activadores de Eventarc que están asociados con la clave específica.
  • 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 admiten eventos encriptados con CMEK.

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 las Preguntas frecuentes sobre IAM.

Vuelve a habilitar Cloud KMS

Cuando Eventarc no puede acceder a Cloud KMS, la publicación de eventos con canales falla con errores FAILED_PRECONDITION y la entrega de eventos se detiene. Para reanudar la entrega y publicación de eventos, restablece el acceso a Cloud KMS.

¿Qué sigue?