配置kafka密码认证
Posted 雅冰石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置kafka密码认证相关的知识,希望对你有一定的参考价值。
一、kafka认证方式类型
kafka提供了多种安全认证机制,主要分为SSL和SASL大类。其中SASL/PLAIN是基于账号密码的认证方式,比较常用
二、测试SASL/PLAIN进行身份验证
参考网址:Kafka SASL_PLAINTEXT权限管理,并整合SpringBoot_紫金小飞侠的博客-CSDN博客_kafka sasl_plaintext
官网:https://kafka.apache.org/documentation/#security_sasl
SASL/PLAIN是一种简单的用户名/密码身份验证机制,通常与TLS一起用于加密以实现安全身份验证。Kafka支持SASL/PLAIN的默认实现,可以扩展到生产环境中使用
1. Kafka brokers 配置:(集群三台配置)
1)kafka增加认证信息:
向每个Kafka代理的配置目录中添加一个经过适当修改的类似于下面的JAAS文件
在kafka的配置文件中创建JAAS文件:
vi /usr/local/kafka/config/kafka_server_jaas.conf
#添加下列内容
KafkaServer
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-sec"
user_admin="admin-sec"
user_producer="prod-sec"
user_consumer="cons-sec";
;
JAAS文件定义了链接Kafka Broker时所需要的用户名密码及broker各个节点之间相互通信的用户名密码
username定义一个公共的用户名,用于节点之间进行通信,
user_xxxx 为自定义的用户,主要是客户端用来连接kafka的,所有可以使用的用户必须在此定义,不能再之后新增。等号后面是密码xxxxx是用户名,这里大小写一个字都不能差,除了用户名和密码
producer用于开放生产权限。
consumer用于开放消费权限。
username/ password:broker之间通信使用的用户名密码。
user_admin/user_producer/user_consumer:客户端(管理员、生产者、消费者)链接broker时所使用到的用户名密码。
2)修改kafka启动脚本:kafka-server-start.sh
将JAAS配置文件位置作为JVM参数传递给每个Kafka代理:
vi /usr/local/kafka/bin/kafka-server-start.sh
#添加标黄内容,注意kafka_server_jaas.conf文件是之前第一步创建的安全认证文件
exec $base_dir/kafka-run-class.sh $EXTRA_ARGS -Djava.security.auth.login.config=/usr/local/kafka/config/kafka_server_jaas.conf kafka.Kafka "$@"
3)修改 kafka 配置文件下的server.properties
配置服务器中的SASL端口和SASL机制,所涉及的属性如下
vi /usr/local/kafka/config/server.properties
#修改标黄内容,本机主机名:端口
listeners=SASL_PLAINTEXT://192.168.144.24:9193
添加:
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
注释:
allow.everyone.if.no.acl.found=true 时,整个ACL机制为黑名单机制,即只有黑名单中的用户不能访问资源,非黑名中的用户都可以正常访问kafka的资源
allow.everyone.if.no.acl.found=false时, 也就是默认为false,ACL的机制是白名单机制,只有白名单中的用户才能访问kafka的资源,其他用户为未授权用户。
- 重启kafka节点
systemctl restart kafka
2. Kafka客户端(clients)配置(每个)
broker开启了SASL也 要在客户端上配置SASL身份验证
1)创建JAAS文件:
在kafka 配置文件中新建消费者:kafka_client_consumer_jaas.conf
vi /usr/local/kafka/config/kafka_client_consumer_jaas.conf
KafkaClient
org.apache.kafka.common.security.plain.PlainLoginModule required
username="consumer"
password="cons-sec";
;
在kafka 配置文件中新建生产者: 生产者:kafka_client_producer_jaas.conf
vi /usr/local/kafka/config/kafka_client_producer_jaas.conf
KafkaClient
org.apache.kafka.common.security.plain.PlainLoginModule required
username="producer"
password="prod-sec";
;
2)修改客户端脚本指定JAAS文件加载:
将JAAS配置文件位置作为JVM参数传递给每个客户机JVM
修改生产启动脚本: kafka-console-producer.sh
vi /usr/local/kafka/bin/kafka-console-producer.sh
#中间添加下列内容
-Djava.security.auth.login.config=/usr/local/kafka/config/kafka_client_producer_jaas.conf
修改消费启动脚本: kafka-console-consumer.sh
vi /usr/local/kafka/bin/kafka-console-consumer.sh
#中间添加下列内容
-Djava.security.auth.login.config=/usr/local/kafka/config/kafka_client_consumer_jaas.conf
3)修改客户端配置信息:
分别在producer.properties和consumer.properties添加认证机制
vi /usr/local/kafka/config/producer.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
vi /usr/local/kafka/config/consumer.properties
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
3. 生产消费测试
若像之前一样直,会报连接错误:
[2022-03-18 01:23:23,992] WARN [Producer clientId=console-producer] Bootstrap broker 192.168.144.249:9193 (id: -1 rack: null) disconnected (org.apache.kafka.clients.NetworkClient)
#须指定配置文件
bin/kafka-console-producer.sh --broker-list 192.168.144.24:9193,192.168.144.26:9193,192.168.144.30:9193 --topic test --producer.config config/producer.properties
消费:
bin/kafka-console-consumer.sh --bootstrap-server 192.168.144.24:9193,192.168.144.26:9193,192.168.144.30:9193 --topic test --from-beginning --consumer.config config/consumer.properties
以上是关于配置kafka密码认证的主要内容,如果未能解决你的问题,请参考以下文章
Kafka 认证二:ScramLoginModule 认证及 Java 连接测试
Kafka 认证二:ScramLoginModule 认证及 Java 连接测试