在CentOS上配置Kafka的安全认证涉及多个步骤,主要包括SASL认证和SSL配置。以下是详细的配置指南:
创建JAAS配置文件:
创建一个名为kafka_server_jaas.conf
的文件,内容如下:
Server org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafkapwd";
其中,username
和password
是Kafka服务器的认证信息。
修改Kafka配置文件:
编辑Kafka的server.properties
文件,添加以下内容:
listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.jaas.config=kafka_server=kafka:///home/kafka/kafka_2.12-2.4.1/config/kafka_server_jaas.conf
配置Kafka启动脚本:
在Kafka的启动脚本kafka-server-start.sh
中添加以下环境变量:
export KAFKA_HOME=/opt/app/kafka
生成SSL证书和密钥: 使用以下命令生成自签名证书和密钥:
keytool -genkey -alias kafka -keyalg RSA -keysize 2048 -keystore kafka.server.keystore.jks -validity 365
配置SSL相关参数:
编辑Kafka的server.properties
文件,添加以下内容:
security.protocol=SSL
ssl.truststore.location=/path/to/kafka.server.keystore.jks
ssl.truststore.password=password
ssl.keystore.location=/path/to/kafka.server.keystore.jks
ssl.keystore.password=password
ssl.key.password=password
kafka-acls.sh
工具设置ACL:
使用以下命令定义用户或用户组对特定主题的访问权限:kafka-acls.sh --set --topic test --allow-principal User:testuser --allow-access ReadWrite --topic test
配置authorizer.class.name
为kafka.security.auth.SimpleAclAuthorizer
。firewall-cmd
命令开放Kafka服务使用的端口(默认9092):firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --reload
启动Kafka服务: 使用以下命令启动Kafka服务:
bin/kafka-server-start.sh config/server.properties
验证SASL认证: 使用Kafka命令行工具发送和接收消息,确保SASL认证已生效。
通过上述步骤,您可以在CentOS上为Kafka配置基本的安全认证。根据具体需求,可能还需要进行更详细的配置,例如启用Kerberos集成和更细粒度的访问控制列表(ACLs)。