kafka SASL/PLAIN 简单用户密码认证
1 修改/opt/bitnami/kafka/config/server.properties配置文件
配置listener SASL_PLAINTEXT,必须加上后面这俩配置
sasl.enabled.mechanisms=PLAIN
sesl.mechanism.inter.broker.protocol=PLAIN
-
单个port
listeners=SASL_PLAINTEXT://K1:9092 #集群sasl认证,K1填写实际的服务节点地址 -
多个port
listener.security.protocol.map=CLIENT:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
2 增加服务端kafka_jass.conf
kafka3.7.0 kafka_server_jass.conf不生效,需要配置kafka_jass.conf
kafka_jass.conf
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin_pass"
user_username="password";
};
3 客户端
kafka_client_jass.conf
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="username"
password="password";
};
kafka自带的client,客户端配置SASL
-
在kafka的config目录下修改producer.properties和consumer.properties,在文件末尾添加:
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
unset JMX_PORT
topic创建查询
我用的是两个port,集群内走9093,外部访问走9092
/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9093 --create --topic tp --partitions 1 --replication-factor 2
/opt/bitnami/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9093 --list
producer consumer创建
- 需要先在producer.properties consumer.properties添加配置
echo "security.protocol=SASL_PLAINTEXT" >> /opt/bitnami/kafka/config/consumer.properties
echo "`sasl.mechanism=PLAIN" >> /opt/bitnami/kafka/config/consumer.properties
- 然后执行下面命令
export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/bitnami/kafka/config/kafka_client_jaas.conf"
/opt/bitnami/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic tp --producer.config /opt/bitnami/kafka/config/producer.properties
/opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic tp --from-beginning --consumer.config /opt/bitnami/kafka/config/consumer.properties