Kafka配置SASL认证

Kafka加密

Kafka认证方式

img

在本博客中我们使用SASL/PLAIN的方式来进行Kafka加密

环境准备

  • Kafka集群环境 请参考之前的Kafka集群搭建
    • kafka-broker1
    • kafka-broker2

集群配置SASL/PLAIN认证

用户校验

修改server.properties 让其支持Kafka的认证(每一个broker节点都需要修改这些配置)

修改server.properties配置
# 备份server.properties
cp /opt/module/kafka/config/server.properties /opt/module/kafka/config/server.properties.bak
vim /opt/module/kafka/config/server.properties

#添加如下内容
########## Kafka SASL认证
###注意:如果外网也要支持SASL advertised也要同步修改
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://kafka-broker1:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
添加SASL认证配置
vim /opt/module/kafka/config/kafka_server_jaas.conf
# 增加如下配置
KafkaServer {
     org.apache.kafka.common.security.plain.PlainLoginModule required
     username="admin"
     password="123456"
     user_admin="123456"
     user_user2="123456";
 };
 
 #分发文件到不同的机器节点
 xsync kafka_server_jaas.conf

解释:

此配置定义了两个用户(admin和user2)。KafkaServer中的username、password配置的用户和密码,是用来broker和broker连接认证。在本例中,admin是代理broker间通信的用户。user_userName配置为连接到broker的所有用户定义密码,broker使用这些验证所有客户端连接,包括来自其他broker的连接。

请注意,username是服务端连接的账号,password为密码,其中下面的user_admin就是为了集群间通信时候使用的

将JAAS配置文件位置作为JVM参数传递给每个Kafka broker

修改kafka-run-class.sh

在这里插入图片描述

#修改kafka-run-class.sh
KAFKA_OPTS="-Djava.security.auth.login.config=/opt/module/kafka/config/kafka_server_jaas.conf"

#分发到其他机器节点
cd/opt/module/kafka/bin
xsync kafka-run-class.sh
启动集群服务
./cluster.sh start
验证权限

在这里插入图片描述

集群权限已经启动 所以这个命令是没有任何效果的

为了满足我们的权限列表 我们需要把用户user2作为我们的配置添加进去

  • 执行以下脚本
vim /root/user2.conf
# 输入如下内容
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="user2" password="123456";

其中的用户名必须是admin 123456 或者是 user2 123456

这个时候,我们已经可以看到 权限是认证通过的
在这里插入图片描述

测试消费端和生产端(添加配置 验证成功)

在这里插入图片描述

权限校验

admin是超级用户
user2是普通用户
我们现在编写权限校验的目的是
1:user2可以自己新建/修改/删除topic
2:只用于user2操作某一个topic 其他topic不允许操作

修改server.properties配置
# 修改server.properties 增加如下配置
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin

使用权限配置并且超级用户是admin,这个用户和我们在上面配置的列表中的admin用户相互映射

每个机器都进行配置

重启所有的节点,这个时候已经开启了权限

# 配置用户认证文件信息
vim /root/admin.conf
# 输入如下内容
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="123456";
修改kafka-acls.sh

此脚本主要用户给指定的用户配置权限

参数/选项描述
--add增加权限
--remove删除权限
--allow-host允许操作的主机
--deny-host拒绝的主机
--allow-principal允许操作的用户(通常为User:ClientID)
--deny-principal拒绝的用户(通常为User:ClientID)
--bootstrap-serverKafka集群地址,用于连接到Kafka集群
--command-config认证文件信息,如JAAS配置文件的路径
--group可以消费特定topic的消费者组
--list查询所有权限
--operation指定操作权限,可能的值包括:Describe, DescribeConfigs, Alter, Read, Delete, Create, All, Write, AlterConfigs
--topic指定要操作的topic
基本命令
  • 查询topic的所有权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --list --command-config /root/admin.conf
    在这里插入图片描述

在这里插入图片描述

  • 删除所有权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --remove --command-config /root/admin.conf

    在这里插入图片描述

  • 当前用户没有权限,现在给user用户赋值权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation all --command-config /root/admin.conf

    在这里插入图片描述

  • 回收权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --remove --allow-principal User:user2 --operation all --command-config /root/admin.conf
    在这里插入图片描述

  • 给生产者添加Write权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation Write --command-config /root/admin.conf
    在这里插入图片描述

  • 给消费者添加Read权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation Read --group user2 --command-config /root/admin.conf
    在这里插入图片描述

  • 测试生产者

    kafka-console-producer.sh --bootstrap-server kafka-broker1:9092 --topic user2 --producer.config /root/user2.conf

    在这里插入图片描述

  • 测试消费者

    kafka-console-consumer.sh --bootstrap-server kafka-broker1:9092 --topic user2 --from-beginning --consumer.config /root/user2.conf --group user2
    在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃货智

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值