kafka-topics.sh --bootstrap-server kafka1-73085:9092 --list --command-config /root/auth.conf
已经可以正常返回了,说明有权限认证通过了:
创建topic
kafka-topics.sh --bootstrap-server kafka1-73085:9092 --create --topic topic_1 --partitions 3 --replication-factor 3 --command-config /root/auth.conf
生产消息
kafka-console-producer.sh --bootstrap-server \
kafka1-73085:9092 --topic topic_1 --producer.config /root/auth.conf
消费消息
kafka-console-consumer.sh --bootstrap-server kafka1-73085:9092 \
--topic topic_1 --consumer.config /root/auth.conf
权限配置
# 修改server.properties 增加如下配置
# 指定通过ACL来控制权限
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-server-stop.sh
# 启动节点
kafka-server-start.sh -daemon /opt/kafka_2.13-2.6.0/config/server.properties
此时每个节点都有了权限认证
# 配置用户认证文件
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";
创建topic
这个时候使用auth.conf已经不能创建topic了,使用admin.conf可以创建,因为admin账号和配置的超级管理员一致;而auth.conf配置的是tly账号;
kafka-topics.sh --bootstrap-server kafka1-73085:9092 --create --topic topic_2 --partitions 3 --replication-factor 3 --command-conf /root/auth.conf
不使用认证创建会一直卡主不动,其实也是没权限的,时间久了就会报timeout异常
kafka-topics.sh --bootstrap-server kafka1-73085:9092 --create --topic topic_3 --partitions 3 --replication-factor 3
kafka-acls控制权限
命令为:kafka-acls.sh
参数如下:
- –add 增加权限 --remove 删除权限
- –allow-host 允许操作的主机 --deny-host 拒绝的主机
- –allow-principal 允许操作的用户 --deny-principal 拒绝用户
- –bootstrap-server 集群地址
- –command-config 认证文件信息
- –group 可以消费topic的消费者组
- –list 查询所有权限
- –operation 增加操作权限
- describe
- describeConfigs
- alter
- read
- delete
- create
- all
- write
- alterconfig
- –topic 指定topic
查询topic所有权限
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --list --command-config /root/admin.conf
删除所有权限
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --topic topic_1 --remove --command-config /root/admin.conf
给用户增加权限
给之前的用户tly授权
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --add --allow-principal User:tly --topic topic_1 --operation all --command-config /root/admin.conf
使用tly用户查看当前topic
kafka-topics.sh --bootstrap-server kafka1-73085:9092 --list --command-config /root/auth.conf
回收权限
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --remove --allow-principal user:tly --topic topic_1 --operation all --command-config /root/admin.conf
增加权限并且增加IP限制
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --add --deny-principal User:tly --topic topic_1 --operation all --deny-host 127.0.0.1 --command-config admin.conf
生产者和消费者的权限设置
# 删除所有权限信息
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --topic topic_1 --remove --command-config /root/admin.conf
# 添加生产者权限
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --add --allow-principal User:tly --operation Write --topic topic_1 --command-config /root/admin.conf
# 添加消费权限
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --add --allow-principal User:tly --operation Read --topic topic_1 --command-config /root/admin.conf
# 消费消息
kafka-console-consumer.sh --bootstrap-server kafka1-73085:9092 --topic topic_1 --from-beginning --consumer.config /root/auth.conf
# 发现消费不到,原因是消费者组没有权限
# 增加消费者组权限
kafka-acls.sh --bootstrap-server kafka1-73085:9092 --add --allow-principal User:tly --operation Read --topic topic_1 --group group_1 --command-config /root/admin.conf
# 再次执行消费消息命令并增加分组信息即可以消费到数据
kafka-console-consumer.sh --bootstrap-server kafka1-73085:9092 --topic topic_1 --from-beginning --consumer.config /root/auth.conf --group group_1
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!