Configura el cifrado de mensajes en Managed Service para Apache Kafka

En esta página, se describe cómo configurar claves de encriptación administradas por el cliente (CMEK) para un clúster de Google Cloud Managed Service para Apache Kafka.

Descripción general de la encriptación de mensajes

De forma predeterminada, Managed Service para Apache Kafka encripta los mensajes en reposo con Google-owned and Google-managed encryption keys. No se requiere ninguna configuración adicional.

Si necesitas más control sobre las claves de encriptación que se usan para proteger los datos en reposo del servicio administrado para Apache Kafka, puedes establecer una CMEK cuando crees tu clúster. Las CMEK son claves de encriptación que te pertenecen. Se administran y almacenan en Cloud Key Management Service (Cloud KMS). Cuando configuras un clúster con una CMEK, el servicio usa automáticamente esa clave para encriptar todos los datos en reposo del clúster. El uso de una CMEK puede generar costos adicionales, según tus patrones de uso.

Una CMEK asociada a un clúster de Managed Service para Apache Kafka es una clave de encriptación de claves (KEK). La KEK se usa para encriptar una clave de encriptación de datos (DEK). Luego, la DEK se usa para leer y escribir datos en reposo en los discos persistentes conectados a los agentes y los datos en el almacenamiento por niveles en Cloud Storage.

Dado que los recursos de Managed Service para Apache Kafka son regionales, te recomendamos que crees CMEK en la misma región que el clúster de Kafka.

Roles y permisos requeridos

La cuenta de servicio de Kafka administrado debe tener permiso para encriptar y desencriptar datos con una CMEK.

Otorga a la cuenta de servicio el rol de encriptador/desencriptador de claves criptográficas de Cloud KMS (roles/cloudkms.cryptoKeyEncrypterDecrypter) en la clave de Cloud KMS:

gcloud kms keys add-iam-policy-binding KEY \
  --keyring=KEY_RING \
  --location=LOCATION \
  --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-managedkafka.iam.gserviceaccount.com \
  --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

Reemplaza lo siguiente:

  • KEY: El nombre de la clave.

  • KEY_RING: Es el nombre del llavero de claves en el que se encuentra la clave.

  • LOCATION: Es la ubicación de Cloud KMS del llavero de claves.

  • PROJECT_NUMBER: Es el número del proyecto deGoogle Cloud que contiene el clúster de Managed Service para Apache Kafka.

Para obtener más información sobre cómo otorgar roles en una clave de Cloud KMS, consulta Cómo otorgar roles en un recurso.

Rotar claves

No puedes cambiar la clave asociada a un clúster. En su lugar, puedes rotar una clave creando una versión de clave nueva y configurándola como principal para la clave.

En el caso de los discos conectados a los intermediarios, la nueva KEK solo surte efecto después de que se reinicia un intermediario. Puedes forzar un reinicio progresivo de los intermediarios actualizando la configuración de capacidad de un clúster. Por ejemplo, puedes cambiar la cantidad de RAM del clúster.

Todos los archivos de segmentos de partición nuevos se escriben en el almacenamiento por niveles con la nueva versión de clave primaria. Es posible que haya una demora de varios minutos después de que se elige una nueva versión de la clave primaria.

Registros de auditoría

Cloud KMS produce registros de auditoría cuando el Servicio administrado para Apache Kafka habilita, inhabilita o usa las claves para encriptar y desencriptar mensajes. Esto es útil para depurar problemas relacionados con la disponibilidad de publicación o entrega.

Los IDs de las claves de Cloud KMS se adjuntan a los registros de auditoría de los recursos del clúster de Managed Service for Apache Kafka. Managed Service for Apache Kafka no incluye ninguna otra información relacionada con Cloud KMS en los registros de auditoría.

Inhabilita y vuelve a habilitar la CMEK

Existen dos formas de inhabilitar la CMEK. Elige uno de los siguientes métodos:

  • Inhabilita la clave de Cloud KMS que asociaste al clúster. Este enfoque afecta a todos los recursos de Cloud asociados con esa clave.

  • Revoca el rol de encriptador/desencriptador de CryptoKey del agente de servicio de Managed Service for Apache Kafka (service-${PROJECT_NUMBER}@gcp-sa-managedkafka.iam.gserviceaccount.com) con Identity and Access Management (IAM). Este enfoque afecta a todos los clústeres de Managed Service para Apache Kafka del proyecto y a los mensajes encriptados con CMEK.

Aunque ninguna de las dos operaciones puede causar la revocación de acceso instantánea, los cambios de 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.

Cuando Managed Service for Apache Kafka no puede acceder a una clave de Cloud KMS, la publicación y entrega de mensajes fallan con errores. Para reanudar la entrega y la publicación, restablece el acceso a la clave de Cloud KMS.

Una vez que la clave de Cloud KMS sea accesible para Managed Service para Apache Kafka, la publicación estará disponible en un período de 12 horas y la entrega de mensajes se reanudará en 2 horas.

Si bien es improbable que las interrupciones intermitentes de Cloud KMS de menos de un minuto interrumpan significativamente la publicación y la entrega, la falta de disponibilidad extendida de Cloud KMS tiene el mismo efecto que la revocación de la clave.

Limitaciones

  • No puedes cambiar la clave asociada a un clúster. En cambio, puedes rotar la clave creando versiones nuevas.

  • Si inhabilitas una versión de clave no principal, los discos locales seguirán funcionando sin cambios. Cada agente descarga la nueva KEK cuando se reinicia. Sin embargo, Cloud Storage no puede acceder a los archivos de segmentos de temas que se encriptaron con la versión original, lo que podría imposibilitar el consumo de mensajes de estos archivos de segmentos. Es posible que no puedas consumir datos más antiguos.

  • Si inhabilitas la versión principal de una clave, los agentes no podrán escribir archivos de segmentos nuevos en el almacenamiento por niveles, lo que aumentará la utilización del disco local. Además, se producirá un error en los reinicios del agente. Puedes iniciar un reinicio de forma proactiva o en cualquier momento en que se inicie una actualización del clúster.

  • Si quitas el acceso a una clave del agente de servicio de Managed Service para Apache Kafka, el comportamiento es similar al que se produce si inhabilitas la clave primaria y las versiones de clave no principales.

  • Si borras una clave, se programará el cierre del clúster y no se podrá recuperar.

  • No puedes solicitar que se vuelvan a encriptar los datos almacenados en reposo. La CMEK se usa como KEK, pero la reencriptación requiere un cambio en las claves de encriptación de datos.

¿Qué sigue?

Apache Kafka® es una marca registrada de The Apache Software Foundation o sus afiliados en Estados Unidos y otros países.