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
- Autenticació: Verificació de la identitat dels usuaris i serveis que interactuen amb Kafka.
- Autorització: Control d'accés basat en permisos per a operacions específiques en Kafka.
- Xifratge: Protecció de les dades en trànsit i en repòs per evitar l'accés no autoritzat.
- 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:
-
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"; };
- Edita el fitxer
-
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";
- Edita el fitxer de configuració del client per utilitzar SASL:
Configuració de SSL/TLS
Per configurar SSL/TLS en Kafka, segueix aquests passos:
-
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
- Utilitza
-
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
- Edita el fitxer
-
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
- Edita el fitxer de configuració del client per utilitzar SSL:
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
-
Habilita l'Autorització:
- Edita el fitxer
server.properties
per habilitar l'autorització:authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer super.users=User:admin
- Edita el fitxer
-
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
- Utilitza la utilitat
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
:
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
- Configura SASL/PLAIN per a l'autenticació.
- Defineix ACLs per permetre que un usuari específic llegeixi i escrigui en un tema.
Solució
-
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"; };
-
-
Defineix ACLs:
- Permet que
user1
llegeixi i escrigui entest-topic
:bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:user1 --operation Read --operation Write --topic test-topic
- Permet que
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.
Curs de Kafka
Mòdul 1: Introducció a Kafka
Mòdul 2: Conceptes bàsics de Kafka
Mòdul 3: Operacions de Kafka
Mòdul 4: Configuració i Gestió de Kafka
Mòdul 5: Temes Avançats de Kafka
- Optimització del Rendiment de Kafka
- Kafka en una Configuració Multi-Centre de Dades
- Kafka amb Registre d'Esquemes
- Kafka Streams Avançat