0


开启kafka密码认证

Kafka默认未开启密码认证,可以免密登录,太不安全,因此需要开启密码认证。

一 kafka认证方式类型

kafka提供了多种安全认证机制,主要分为SSL和SASL大类。其中SASL/PLAIN是基于账号密码的认证方式,比较常用

1.1 SSL

1.2 SASL

1.2.1 SASL/Kerberos

1.2.2 SASL/PLAIN

1.2.3 SASL/SCRAM

二 测试SASL/PLAIN进行身份验证

SASL/PLAIN是一种简单的用户名/密码身份验证机制,通常与TLS一起用于加密以实现安全身份验证。Kafka支持SASL/PLAIN的默认实现,可以扩展到生产环境中使用

**2.1 **Kafka brokers 配置

#在集群所有服务器上进行配置。

**2.1.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.1.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 "$@"

**2.1.3 **修改 kafka 配置文件下的server.properties

配置服务器中的SASL端口和SASL机制,所涉及的属性如下

vi /usr/local/kafka/config/server.properties

#修改标黄内容,本机主机名:端口

listeners=SASL_PLAINTEXT://192.168.144.248: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的资源,其他用户为未授权用户。

2.1.4 重启kafka节点

systemctl restart kafka

**2. ****2 **Kafka客户端(clients)配置

broker开启了SASL也 要在客户端上配置SASL身份验证.

要在集群所有服务器上进行配置。

**2.2.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.2.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

**2.2.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

2.3 验证在密码认证模式下进行****生产消费

2.3.1 生产测试

cd /usr/local/kafka

若像之前一样生产消息:

bin/kafka-console-producer.sh --broker-list 192.168.144.248:9193,192.168.144.249:9193,192.168.144.250:9193 --topic test

会报连接错误:

[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.248:9193,192.168.144.249:9193,192.168.144.250:9193 --topic test --producer.config config/producer.properties

*2.3.2 消费测试*

bin/kafka-console-consumer.sh --bootstrap-server 192.168.144.248:9193,192.168.144.249:9193,192.168.144.250:9193 --topic test --from-beginning --consumer.config config/consumer.properties

2.4 程序里如何配置****SASL

在配置文件中添加如下配置:

spring:
kafka:
properties:
security:
protocol: SASL_PLAINTEXT
sasl:
mechanism: PLAIN
jaas:
config: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="${kafka.username}" password="${kafka.password}"

2.5如何用kafka tool工具以认证方式连接kafka

--连接集群:

org.apache.kafka.common.security.plain.PlainLoginModule required

username="admin"

password="admin-sec";

--本篇文章参考了:

Kafka SASL_PLAINTEXT权限管理,并整合SpringBoot_紫金小飞侠的博客-CSDN博客

Apache Kafka

标签: kafka

本文转载自: https://blog.csdn.net/YABIGNSHI/article/details/123925103
版权归原作者 雅冰石 所有, 如有侵权,请联系我们删除。

“开启kafka密码认证”的评论:

还没有评论