Hace un tiempo, en un proyecto, encontré que es necesario cifrar mensajes que se van a intercambiar entre productores y consumidores kafka, pues, aunque establezcas un canal https, eso no te protege totalmente. En ese sitio usaban una librería propietaria, para mi gusto, muy complicada, muchas clases, muy oscura. Obviamente no usaban algo open source que haya pasado por procesos de revisión. Cuando salí, decidí que algo así se puede conseguir con software open source.

Añadir una capa de seguridad extra como asegurar que un consumidor pueda leer dicha información, es algo básico en entornos donde se necesite cumplir escrupulosamente la ley. Se consigue creando pares de claves público/privadas entre emisor y receptor, de manera que si alguien necesita leer lo que vas a escribir, le pedirás que comparta contigo su clave pública.

Luego, habría que usar algo así, adaptarlo en clases que implementen las interfaces que describo a continuación y usarlas en la configuración del productor y del consumidor . En el ejemplo estoy usando AVRO, aunque se podría usar Protobuf o cualquier otro formato binario.

En un entorno real, las claves estarían guardadas en un servidor seguro, nunca estarían en la carpeta de recursos de la librería, ni se guardarían en alguna carpeta temporal de manera indefinida. Se trae, se carga en el proceso, se borra y periódicamente se generan nuevos pares de contraseñas que se entregarían método algún procedimiento seguro autorizado.

Se puede apreciar que la librería que hace el trabajo duro es JPGPJ, una adaptación de Bouncy Castle.

Luego, para añadir esta funcionalidad para ser usada con algo como Kafka, habría que empezar leyendo algo así. Vemos que tendremos que crear una clase encargada de producir nuestros mensajes y que haga el cifrado antes de enviar el mensaje al topic. Lo mismo para el consumidor.

La verdad es que me extraña que Confluent no tenga implementada dicha funcionalidad. Se lo pregunto, pero no responden. Supongo que tendrán cosas más importantes que hacer en el Road Map.

En fin, feliz fin de semana y permaneced a salvo, en casa.

One thought on “Cifrar y descifrar mensajes AVRO

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s