La seguretat és un aspecte crític en qualsevol sistema de missatgeria, i Apache Kafka no és una excepció. En aquest mòdul, explorarem les diferents mesures de seguretat que es poden implementar en Kafka per protegir les dades i assegurar la comunicació entre els components del sistema.

Objectius del Mòdul

  • Entendre els conceptes bàsics de la seguretat en Kafka.
  • Configurar l'autenticació i l'autorització en Kafka.
  • Implementar la xifratge de dades en trànsit i en repòs.
  • Monitoritzar i gestionar la seguretat en un clúster de Kafka.

Conceptes Clau

  1. Autenticació: Verificació de la identitat dels usuaris i serveis que interactuen amb Kafka.
  2. Autorització: Control d'accés basat en permisos per a operacions específiques en Kafka.
  3. Xifratge: Protecció de les dades en trànsit i en repòs per evitar l'accés no autoritzat.
  4. Auditoria: Registre i monitorització de les activitats per detectar i respondre a incidents de seguretat.

Autenticació en Kafka

Mètodes d'Autenticació

Kafka suporta diversos mètodes d'autenticació, incloent:

  • SASL (Simple Authentication and Security Layer): Un marc per a l'autenticació que suporta múltiples mecanismes com PLAIN, SCRAM, GSSAPI (Kerberos), etc.
  • SSL/TLS (Secure Sockets Layer/Transport Layer Security): Utilitzat per autenticar clients i servidors mitjançant certificats.

Configuració de SASL

Per configurar SASL en Kafka, segueix aquests passos:

  1. Configura el Broker:

    • Edita el fitxer server.properties per habilitar SASL:
      security.inter.broker.protocol=SASL_PLAINTEXT
      sasl.mechanism.inter.broker.protocol=PLAIN
      listeners=SASL_PLAINTEXT://:9092
      sasl.enabled.mechanisms=PLAIN
      
    • Defineix els usuaris i les seves contrasenyes en el fitxer jaas.conf:
      KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-secret"
        user_admin="admin-secret"
        user_user1="user1-secret";
      };
      
  2. Configura el Client:

    • Edita el fitxer de configuració del client per utilitzar SASL:
      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=PLAIN
      sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="user1" password="user1-secret";
      

Configuració de SSL/TLS

Per configurar SSL/TLS en Kafka, segueix aquests passos:

  1. Genera Certificats:

    • Utilitza keytool per generar claus i certificats:
      keytool -keystore kafka.server.keystore.jks -alias localhost -validity 365 -genkey
      keytool -keystore kafka.server.truststore.jks -alias CARoot -import -file ca-cert
      
  2. Configura el Broker:

    • Edita el fitxer server.properties per habilitar SSL:
      listeners=SSL://:9093
      ssl.keystore.location=/path/to/kafka.server.keystore.jks
      ssl.keystore.password=keystore-password
      ssl.key.password=key-password
      ssl.truststore.location=/path/to/kafka.server.truststore.jks
      ssl.truststore.password=truststore-password
      
  3. Configura el Client:

    • Edita el fitxer de configuració del client per utilitzar SSL:
      security.protocol=SSL
      ssl.truststore.location=/path/to/client.truststore.jks
      ssl.truststore.password=truststore-password
      

Autorització en Kafka

ACLs (Access Control Lists)

Kafka utilitza ACLs per gestionar els permisos d'accés. Les ACLs es poden configurar per a usuaris i grups per permetre o denegar operacions específiques.

Configuració d'ACLs

  1. Habilita l'Autorització:

    • Edita el fitxer server.properties per habilitar l'autorització:
      authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
      super.users=User:admin
      
  2. Defineix ACLs:

    • Utilitza la utilitat kafka-acls.sh per definir ACLs:
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:user1 --operation Read --topic test-topic
      

Xifratge de Dades

Xifratge en Trànsit

El xifratge en trànsit es pot aconseguir utilitzant SSL/TLS, com s'ha descrit anteriorment.

Xifratge en Repòs

Per xifrar les dades en repòs, es poden utilitzar sistemes de fitxers xifrats o solucions de xifratge a nivell d'aplicació.

Auditoria i Monitorització

Registre d'Activitats

Kafka permet registrar activitats de seguretat per a la seva auditoria. Això es pot configurar en el fitxer server.properties:

log.dirs=/var/log/kafka
log.retention.hours=168

Monitorització

Utilitza eines com Prometheus i Grafana per monitoritzar la seguretat i el rendiment del clúster de Kafka.

Exercici Pràctic

Configura l'Autenticació i l'Autorització en un Clúster de Kafka

  1. Configura SASL/PLAIN per a l'autenticació.
  2. Defineix ACLs per permetre que un usuari específic llegeixi i escrigui en un tema.

Solució

  1. Configura el Broker:

    • Edita server.properties:

      security.inter.broker.protocol=SASL_PLAINTEXT
      sasl.mechanism.inter.broker.protocol=PLAIN
      listeners=SASL_PLAINTEXT://:9092
      sasl.enabled.mechanisms=PLAIN
      authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
      super.users=User:admin
      
    • Defineix usuaris en jaas.conf:

      KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-secret"
        user_admin="admin-secret"
        user_user1="user1-secret";
      };
      
  2. Defineix ACLs:

    • Permet que user1 llegeixi i escrigui en test-topic:
      bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:user1 --operation Read --operation Write --topic test-topic
      

Resum

En aquest mòdul, hem après a configurar la seguretat en Kafka mitjançant l'autenticació, l'autorització, el xifratge i l'auditoria. Aquests conceptes són essencials per protegir les dades i assegurar la comunicació en un clúster de Kafka. En el proper mòdul, explorarem com gestionar i monitoritzar els temes de Kafka.

© Copyright 2024. Tots els drets reservats