Kafka在CentOS的安全认证配置主要包括SASL、SSL、ACL等方面,以下是关键步骤:
server.properties
中设置:listeners=SASL_PLAINTEXT://:9092 # 或SASL_SSL
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN # 或SCRAM-SHA-256等
sasl.enabled.mechanisms=PLAIN
kafka_server_jaas.conf
,内容示例:KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin123"
user_admin="admin123"
user_user1="user1123";
};
将文件放置到Kafka配置目录,并在kafka-server-start.sh
中添加JVM参数:export KAFKA_OPTS="-Djava.security.auth.login.config=/path/to/kafka_server_jaas.conf"
# 生成CA
openssl req -new -x509 -keyout ca-key -out ca-cert -days 365 -nodes
# 生成服务器证书
openssl req -new -keyout server.key -out server.csr
openssl x509 -req -CA ca-cert -CAkey ca-key -in server.csr -out server.crt
# 转换为JKS格式
keytool -import -alias ca -file ca-cert -keystore kafka.server.truststore.jks
keytool -import -alias server -file server.crt -keystore kafka.server.keystore.jks
server.properties
中添加:ssl.keystore.location=/path/to/kafka.server.keystore.jks
ssl.keystore.password=123456
ssl.truststore.location=/path/to/kafka.server.truststore.jks
ssl.truststore.password=123456
security.protocol=SASL_SSL # 需与SASL配合使用
server.properties
中设置:authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
kafka-acls.sh
工具:# 添加用户对Topic的读写权限
bin/kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 \
--add --allow-principal User:user1 --operation Read --topic test-topic
bin/kafka-acls.sh --add --allow-principal User:user1 --operation Write --topic test-topic
firewall-cmd
开放Kafka端口(默认9092):firewall-cmd --add-port=9092/tcp --permanent
firewall-cmd --reload
kafka-console-producer.sh
)连接服务端,验证认证是否生效。说明: