在Linux下,Kafka可以通过多种机制实现安全认证,主要包括SSL/TLS加密通信和SASL认证。以下是详细的配置步骤和说明:
生成证书:
keytool
工具生成密钥库(keystore)和信任库(truststore)。keytool -genkey -alias kafka -keyalg RSA -keystore kafka.server.keystore.jks -validity 3650
keytool -export -alias kafka -file kafka.server.certificate.jks -keystore kafka.server.keystore.jkskeytool -import -alias kafka -file kafka.server.certificate.jks -keystore kafka.client.truststore.jks
配置Kafka:
server.properties
,指定密钥库和信任库的位置以及密码。ssl.keystore.location=/path/to/kafka.server.keystore.jks
ssl.keystore.password=password
ssl.key.password=password
ssl.truststore.location=/path/to/kafka.client.truststore.jks
ssl.truststore.password=password
配置客户端:
启用SASL:
server.properties
中设置sasl.enabled.mechanisms
,如SCRAM-SHA-256
或SCRAM-SHA-512
。sasl.enabled.mechanisms=SCRAM-SHA-256
创建JAAS配置文件:
kafka_client_jaas.conf
文件,配置Kafka服务器和客户端的身份验证信息。KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
修改Kafka配置文件:
sasl.login.config=/path/to/kafka_client_jaas.conf
配置ACL:
kafka-acls.sh
脚本设置访问控制列表,指定哪些用户或应用有权访问特定的资源,如主题、消费者群组等。kafka-acls.sh --add --allow-principal User:admin --operation Read --topic my-topic
防火墙配置:
iptables
或firewalld
设置防火墙规则,仅开放必要的端口。sudo ufw allow 9092
SELinux配置:
启用审计日志:
监控和告警:
通过上述配置,可以大大提高Kafka服务在Linux上的安全性,确保数据传输和存储的安全。建议定期审查和更新安全配置,以应对不断变化的安全威胁。