基于 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订阅主题、产生消息、消费消息