基于 kafka+单节点+ssl 的基础上增加 sasl 配置

本文档介绍了基于 kafka+单节点+ssl 的基础上如何增加 sasl 配置,包括ssl和sasl简介,配置kafka安全认证sasl,Kafka客户端配置,Kafka客户端验证配置。

一、ssl和sasl简介

kafka提供了多种安全认证机制,主要分为SASL和SSL两大类。

SASL: 是一种身份验证机制,用于在客户端和服务器之间进行身份验证的过程,其中SASL/PLAIN是基于账号密码的认证方式。
SSL: 是一种加密协议,用于在网络通信中提供数据的保密性和完整性。它使用公钥和私钥来建立安全的连接,并对传输的数据进行加密和解密,以防止未经授权的访问和篡改。
在 Kafka 中启用 SASL_SSL 安全协议时,SASL 用于客户端和服务器之间的身份验证,SSL 则用于加密和保护数据的传输。不仅提供身份验证,还提供加密和数据保护的功能。

二、配置kafka安全认证sasl

1.创建kafka-server-sasl.conf和kafka-client-sasl.conf配置文件

目录 /kafka_2.13-3.8.0/config/kraft 下创建kafka-server-sasl.conf和kafka-client-sasl.conf配置文件,内容如下:
kafka-server-sasl.conf

KafkaServer {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="admin"
  password="123456"
  user_admin="123456"
  user_kafka="123456";
};
 
Client {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="yykj"
  password="123456";
};

kafka-client-sasl.conf

KafkaClient {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="yykj"
        password="123456";
};

2.kakfa启动脚本 kafka-server-start.sh 配置环境变量

启动脚本kafka_2.13-3.8.0/bin/kafka-server-start.sh 配置环境变量,指定Kraft/kafka-server-sasl.conf文件,增加如下代码:

增加环境变量: -Djava.security.auth.login.config=/你的路径/kafka/kafka_2.13-3.8.0/config/kraft/kafka-server-sasl.conf

...

if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/你的路径/kafka/kafka_2.13-3.8.0/config/kraft/kafka-server-sasl.conf”
fi

...

3.修改 server.properties 配置文件

修改 kafka_2.13-3.8.0/config/Kraft/server.properties 配置文件

host.name=node1
listeners=SASL_SSL://:8066,CONTROLLER://:9093
advertised.listeners=SASL_SSL://外网IP:8066
super.users=User:admin
security.inter.broker.protocol=SASL_SSL
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer
allow.everyone.if.no.acl.found=true

三、Kafka客户端配置

1.替换 clinet-ssl.config 配置文件

替换 kafka_2.13-3.8.0/clinet-ssl.config 配置文件 为如下内容

bootstrap.servers=node1:8066
security.protocol=SASL_SSL
ssl.keystore.location=/你的路径/ssl/cert/kafka.keystore
ssl.keystore.password=yourpassword
ssl.truststore.location=/你的路径/ssl/cert/kafka.truststore
ssl.truststore.password=yourpassword
ssl.endpoint.identification.algorithm=
ssl.key.password=yourpassword

sasl.mechanism=PLAIN
sasl.sasl.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="yykj" password="123456";

2. 启动服务

打开另一个终端1会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令启动服务

bin/kafka-server-start.sh config/kraft/server.properties

如果希望后台启动,则如下 加上 -daemon 即可

四、Kafka客户端验证配置

打开另一个终端2会话,cd 进入路径 kafka_2.13-3.8.0

1.创建主题 查看主题

bin/kafka-topics.sh --create --topic yykj-topic-sasl --bootstrap-server node1:8066  --command-config client-ssl.config

bin/kafka-topics.sh --list --bootstrap-server node1:8066 --command-config client-ssl.config

bin/kafka-topics.sh --describe --topic yykj-topic-sasl --bootstrap-server node1:8066 --command-config client-ssl.config

2. 生产者

打开另一个终端3会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令 生产消息

bin/kafka-console-producer.sh --broker-list node1:8066 --topic yykj-topic-ssl --producer.config client-ssl.config

3. 消费者

打开另一个终端4会话,cd 进入路径 kafka_2.13-3.8.0,执行如下指令 消费消息

bin/kafka-console-consumer.sh --bootstrap-server node1:8066 --topic yykj-topic-ssl --from-beginning --consumer.config client-ssl.config 

4. 发送消息 查看消息

切换到生产者终终端3输入:

hello 宇一科技 sasl

切换到消费者终端4,可以看到生产者产生的消息

hello 宇一科技 sasl

至此,基于 kafka+单节点+ssl 的基础上增加 sasl 配置 完成!!

上一章 linux环境最新kafka3.8.0单节点kraft+ssl部署
下一章 springboot项目引入kafka订阅主题、产生消息、消费消息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值