Usar claves de encriptación administradas por el cliente

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.

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.

Qué se protege con CMEK

Puedes configurar CMEK para un canal que Eventarc Standard use y encriptar los eventos que pasan por el canal.

La habilitación de un canal con CMEK protege los datos asociados con él (por ejemplo, el tema de Pub/Sub utilizado como una vía de transporte) mediante una clave de encriptación a la que solo tú puedes acceder.

Ten en cuenta que, cuando habilitas CMEK para el canal de Google en un proyecto de Google Cloud, todos los activadores estándar de Eventarc para los tipos de eventos de Google en ese proyecto y región se encriptan por completo con esa clave CMEK. Las claves CMEK no se pueden aplicar por activador.

Antes de comenzar

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

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.

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

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 la función: Encriptador/Desencriptador de CryptoKeys de Cloud KMS

Console

Cuando habilitas CMEK para un canal de Google o de terceros con la consola, se te solicitará 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 los tipos de eventos de Google o Habilita CMEK para un canal de eventos de terceros.

gcloud

 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 los tipos de eventos de Google

Eventarc activa que los tipos de rutas de eventos de Google publique eventos en un canal virtual llamado Canal de Google o regionales. Este canal virtual está disponible en todas las regiones de Eventarc.

Cuando habilitas CMEK para el canal de Google en un proyecto de Google Cloud , todos los activadores de Eventarc para los tipos de eventos de Google en ese proyecto y región se encriptan por completo con esa clave CMEK. Puedes agregar varias claves CMEK y asociar cada una con una región específica para el canal de Google. Las claves CMEK no se pueden aplicar por activador.

Console

  1. En la consola de Google Cloud, 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, elige la casilla de verificación Usar una clave de encriptación administrada por el cliente (CMEK).

  4. Haz clic en Agregar clave de encriptación.

  5. Elige una Región y, en la lista Clave de encriptación de CMEK, elige un llavero de claves que hayas creado para la región. Ten en cuenta que solo puedes agregar una clave de encriptación por región para un canal.

  6. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista clave de encriptación CMEK, haz clic en ¿No encuentras tu clave? Escribe el nombre del recurso de la clave y, luego, el nombre en el formato especificado.

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

  8. Opcional: Haz clic en Agregar clave de encriptación para agregar otro llavero de claves que creaste para una región diferente.

  9. Haz clic en Guardar.

gcloud

 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: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Si creas activadores de Pub/Sub con tus propios temas existentes, para una protección completa de CMEK, te recomendamos que también configures la clave KMS sobre 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 cumpla con CMEK, sigue estos pasos:

Console

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

    Ir a Activadores

  2. Haz clic en un activador que enumere una fuente de Google Cloud como su Proveedor de eventos y una Región que hayas protegido con CMEK.

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

gcloud

 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'

El valor del 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 para terceros es un recurso mediante el cual las entidades que no son deGoogle Cloud que ofrecen una fuente de Eventarc pueden interactuar con los destinos. Este canal es específico de una región y solo puedes agregar una clave por canal de terceros.

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

Console

  1. En la consola de Google Cloud, 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 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. En la lista Seleccionar una clave de Cloud KMS, selecciona una clave. Ten en cuenta que solo puedes agregar una clave de encriptación por región para un canal.

  7. Opcional: Para ingresar de forma manual el nombre del recurso de la clave, en la lista Seleccionar una clave de Cloud KMS, haz clic en Escribir la 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

 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: Es el nombre de la clave de Cloud KMS, el cual está calificado por completo y es en formato projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME.

Verifica el uso de Cloud KMS

Para verificar que el canal ahora cumpla con CMEK, sigue estos pasos:

Console

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

    Ir a Activadores

  2. Haz clic en un activador con una fuente de terceros como su proveedor de eventos y una región que hayas protegido con CMEK.

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

gcloud

 gcloud eventarc channels describe CHANNEL_NAME \
    --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 CMEK

Puedes inhabilitar la protección con CMEK asociada a un canal. Los eventos que se entregan en dichos canales están protegidos por Google-owned and Google-managed encryption keys. Para borrar la protección de CMEK asociada a un canal, sigue estos pasos:

Console

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

    Ir a Canales

  2. Según el tipo de canal, haz lo siguiente:

    Canal de Google

    1. Haz clic en un canal con un Proveedor de Google.
    2. En la página Editar canal, mantén el cursor sobre la lista de claves de encriptación de CMEK para ver el botón Borrar elemento .
    3. Haz clic en Eliminar elemento.
    4. Haz clic en Guardar.

      Es posible que debas actualizar la página para habilitar la casilla de verificación Usar una clave de encriptación administrada 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 Encriptación, selecciona Clave de encriptación administrada por Google.
    4. Haz clic en Guardar.

gcloud

Según el tipo de canal, haz lo siguiente:

Canal de Google

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

CANAL DE TERCEROS

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

Aplica una política de la organización de CMEK

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

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

Esta integración te permite especificar los siguientes requisitos de cumplimiento de encriptación para los recursos de Eventarc en tu organización:

Consideraciones para aplicar políticas de la organización

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

  • Prepárate para una demora en la propagación

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

  • Ten en cuenta los recursos existentes

    Los recursos existentes no están sujetos a las políticas de la organización recién creadas. Por ejemplo, una política de la organización no se aplica de forma retroactiva a las canalización existentes. Se puede acceder a esos recursos sin una CMEK y, si corresponde, siguen encriptados con las claves existentes.

  • Verifica los permisos necesarios para establecer una política de la organización

    Es posible que sea difícil adquirir permisos para configurar o actualizar la política de la organización con fines de prueba. Se te debe otorgar el rol de administrador de políticas de la organización, que solo se puede otorgar a nivel de la organización (en lugar de a nivel de proyecto o carpeta).

    Aunque el rol se debe otorgar a nivel de la organización, aún es posible especificar una política que solo se aplique a un proyecto o una carpeta específicos.

Requerir CMEK para los recursos nuevos de Eventarc

Puedes usar la restricción constraints/gcp.restrictNonCmekServices para exigir que se usen CMEK para proteger los recursos nuevos de Eventarc en una organización.

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

Después de establecer esta política, se aplica solo a los recursos nuevos del proyecto. Todos los recursos existentes sin las claves de Cloud KMS aplicadas seguirán existiendo y se podrá acceder a ellos sin problemas.

Console

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

    Ir a Políticas de la organización

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

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

  4. Haz clic en Administrar política.

  5. En la página Editar política, en Fuente de la política, selecciona Anular la política del elemento superior.

  6. En Reglas, haz clic en Agregar una regla.

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

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

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

    is:eventarc.googleapis.com
    
  10. Haz clic en Listo y, luego, en Establecer 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

    Reemplaza PROJECT_ID por el ID del proyecto en el que aplicas 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 haya 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.

Restringe las claves de Cloud KMS de un proyecto de Eventarc

Puedes usar la restricción constraints/gcp.restrictCmekCryptoKeyProjects para restringir 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 que se usan en este proyecto deben provenir de projects/my-company-central-keys O projects/team-specific-keys”.

Console

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

    Ir a Políticas de la organización

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

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

  4. Haz clic en Administrar política.

  5. En la página Editar política, en Fuente de la política, selecciona Anular la política del elemento superior.

  6. En Reglas, haz clic en Agregar 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, ingresa lo siguiente:

    under:projects/KMS_PROJECT_ID
    

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

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

  10. Haz clic en Listo y, luego, en Establecer 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

    Reemplaza lo siguiente

    • PROJECT_ID: Es el ID del proyecto en el que aplicas esta restricción.
    • KMS_PROJECT_ID: Es el ID del proyecto en el que se encuentran las claves de Cloud KMS que deseas usar.
  2. Ejecuta el comando org-policies set-policy:

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

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

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 Cloud KMS, la publicación de eventos con canales presenta 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.

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 publicación de eventos, restablece el acceso a Cloud KMS.

Precios

Esta integración 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 en un canal 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?