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:
Actualiza los componentes de
gcloud
:gcloud components update
Habilita la API de Cloud Key Management Service para el proyecto que almacenará tus claves de encriptación.
gcloud services enable cloudkms.googleapis.com
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.
Habilita la API de Eventarc del proyecto en el que se almacenarán tus claves de encriptación.
gcloud services enable eventarc.googleapis.com
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 roleventarc.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 formatoprojects/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 formatoprojects/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.