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.

  1. 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

  1. 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

  1. 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

  1. 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

  1. Configura un broker de Kafka para usar SASL/PLAIN para la autenticación.
  2. Configura un productor y un consumidor para conectarse al broker utilizando SASL/PLAIN.
  3. Configura ACLs para permitir que el productor escriba en un tema específico y que el consumidor lea de ese tema.

Solución

  1. 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
    
  2. 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";
  3. 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";
  4. 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.

© Copyright 2024. Todos los derechos reservados