La seguridad es un aspecto crucial en cualquier sistema de mensajería y Kafka no es una excepción. En este módulo, aprenderemos sobre los diferentes mecanismos de seguridad que Kafka ofrece para proteger los datos y asegurar la comunicación entre los componentes del sistema.
- Autenticación
La autenticación en Kafka asegura que solo los usuarios y servicios autorizados puedan acceder al clúster. Kafka soporta varios mecanismos de autenticación:
1.1. SASL (Simple Authentication and Security Layer)
SASL es un marco que soporta múltiples mecanismos de autenticación. Kafka soporta varios mecanismos SASL, incluyendo:
- PLAIN: Utiliza nombres de usuario y contraseñas en texto plano.
- SCRAM: Utiliza un mecanismo de autenticación basado en contraseñas seguras.
- GSSAPI (Kerberos): Utiliza Kerberos para la autenticación segura.
Ejemplo de Configuración SASL/PLAIN
# Configuración del servidor (broker) sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN listeners=SASL_PLAINTEXT://:9092 advertised.listeners=SASL_PLAINTEXT://your.kafka.broker:9092 listener.security.protocol.map=SASL_PLAINTEXT:SASL_PLAINTEXT # Configuración del cliente (producer/consumer) sasl.mechanism=PLAIN security.protocol=SASL_PLAINTEXT sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="your-username" \ password="your-password";
1.2. SSL (Secure Sockets Layer)
SSL proporciona autenticación mutua y cifrado de datos en tránsito.
Ejemplo de Configuración SSL
# Configuración del servidor (broker) listeners=SSL://:9093 advertised.listeners=SSL://your.kafka.broker:9093 ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=your-keystore-password ssl.key.password=your-key-password ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=your-truststore-password # Configuración del cliente (producer/consumer) security.protocol=SSL ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=your-keystore-password ssl.key.password=your-key-password ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=your-truststore-password
- Autorización
La autorización en Kafka controla qué operaciones pueden realizar los usuarios autenticados. Kafka utiliza ACLs (Access Control Lists) para definir permisos.
2.1. Configuración de ACLs
Las ACLs se pueden configurar utilizando la herramienta kafka-acls.sh
.
Ejemplo de Configuración de ACLs
# Conceder permisos de lectura a un usuario en un tema específico bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ --add --allow-principal User:your-username --operation Read --topic your-topic # Conceder permisos de escritura a un usuario en un tema específico bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \ --add --allow-principal User:your-username --operation Write --topic your-topic
- Cifrado
El cifrado asegura que los datos en tránsito entre los productores, consumidores y brokers estén protegidos contra accesos no autorizados.
3.1. Cifrado en Tránsito
El cifrado en tránsito se puede lograr utilizando SSL/TLS.
Ejemplo de Configuración SSL/TLS
# Configuración del servidor (broker) listeners=SSL://:9093 advertised.listeners=SSL://your.kafka.broker:9093 ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=your-keystore-password ssl.key.password=your-key-password ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=your-truststore-password # Configuración del cliente (producer/consumer) security.protocol=SSL ssl.keystore.location=/path/to/keystore.jks ssl.keystore.password=your-keystore-password ssl.key.password=your-key-password ssl.truststore.location=/path/to/truststore.jks ssl.truststore.password=your-truststore-password
- Auditoría
La auditoría permite rastrear y registrar las actividades en el clúster de Kafka para detectar y responder a actividades sospechosas.
4.1. Configuración de Auditoría
Kafka no proporciona auditoría nativa, pero se puede integrar con herramientas de terceros como Apache Ranger o utilizar logs de acceso para auditoría.
Ejercicio Práctico
Ejercicio 1: Configuración de Autenticación y Autorización
- Configura un broker de Kafka para usar SASL/PLAIN para la autenticación.
- Configura un productor y un consumidor para conectarse al broker utilizando SASL/PLAIN.
- Configura ACLs para permitir que el productor escriba en un tema específico y que el consumidor lea de ese tema.
Solución
-
Configuración del broker:
sasl.enabled.mechanisms=PLAIN sasl.mechanism.inter.broker.protocol=PLAIN listeners=SASL_PLAINTEXT://:9092 advertised.listeners=SASL_PLAINTEXT://your.kafka.broker:9092 listener.security.protocol.map=SASL_PLAINTEXT:SASL_PLAINTEXT
-
Configuración del productor:
sasl.mechanism=PLAIN security.protocol=SASL_PLAINTEXT sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required
username="producer-username"
password="producer-password"; -
Configuración del consumidor:
sasl.mechanism=PLAIN security.protocol=SASL_PLAINTEXT sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required
username="consumer-username"
password="consumer-password"; -
Configuración de ACLs:
# Conceder permisos de escritura al productor bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
--add --allow-principal User:producer-username --operation Write --topic your-topic # Conceder permisos de lectura al consumidor bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181
--add --allow-principal User:consumer-username --operation Read --topic your-topic
Conclusión
En este módulo, hemos cubierto los aspectos fundamentales de la seguridad en Kafka, incluyendo la autenticación, autorización, cifrado y auditoría. Estos mecanismos son esenciales para proteger los datos y asegurar la comunicación en un clúster de Kafka. Con esta base, estarás preparado para implementar y gestionar la seguridad en tus despliegues de Kafka, asegurando que tus datos estén protegidos contra accesos no autorizados y actividades maliciosas.
Curso de Kafka
Módulo 1: Introducción a Kafka
- ¿Qué es Kafka?
- Casos de Uso de Kafka
- Visión General de la Arquitectura de Kafka
- Configuración de Kafka
Módulo 2: Conceptos Básicos de Kafka
Módulo 3: Operaciones de Kafka
Módulo 4: Configuración y Gestión de Kafka
Módulo 5: Temas Avanzados de Kafka
- Ajuste de Rendimiento de Kafka
- Kafka en una Configuración Multi-Centro de Datos
- Kafka con Registro de Esquemas
- Kafka Streams Avanzado