kafka kerberos 认证访问与非认证访问共存下的ACL问题

简介:

在一个正在运行的kafka集群中添加kerberos认证和ACL权限控制,同时保证以前所有的producer\consumer服务不中断

解决方式: 使kafka集群监听两个端口,一个为无认证连接,另一个为kerberos的认证连接

这时候在配置ACL的时候出了问题:

假如我以kerberos认证的方式连接kafka集群,那么我的用户名是principal的primary部分。例如principal是  kafka/master@HZ.DATA.COM ,那么我的用户名就是kafka。 这时候我只要给kafka这个用户配置相应的权限就可以了。

但是当我以非认证的方式连接kafka集群的时候,我会得到以下的错误:

1
2
[WARN ] 16 : 06 : 55 , 440 , [Class]NetworkClient, Error  while  fetching metadata with correlation id  1  : {test=UNKNOWN_TOPIC_OR_PARTITION}
org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [test]


或者在console-producer中的错误如下:

1
2
3
4
5
[ 2017 - 08 - 22  15 : 17 : 27 , 576 ] WARN Error  while  fetching metadata with correlation id  2  : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[ 2017 - 08 - 22  15 : 17 : 27 , 685 ] WARN Error  while  fetching metadata with correlation id  4  : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[ 2017 - 08 - 22  15 : 17 : 27 , 787 ] WARN Error  while  fetching metadata with correlation id  6  : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[ 2017 - 08 - 22  15 : 17 : 27 , 890 ] WARN Error  while  fetching metadata with correlation id  7  : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)
[ 2017 - 08 - 22  15 : 17 : 27 , 993 ] WARN Error  while  fetching metadata with correlation id  8  : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient)


原因: 一旦为kerberos的用户针对某个资源(比如topic)配置ACL之后,那么对于非认证方式访问的时候因为没有权限所以访问不到对应的数据。

解决方法: 将kafka集群的日志设为debug级别后重启,可以看到非认证方式访问kafka集群时的用户为ANONYMOUS


                  1、给 ANONYMOUS配置相应的权限即可

                  2、每一个topic都要为 ANONYMOUS设置权限毕竟不方便, 可以将ANONYMOUS设为super.users










本文转自 落花非有意  51CTO博客,原文链接:http://blog.51cto.com/1992zhong/1958387,如需转载请自行联系原作者
目录
相关文章
|
16天前
|
消息中间件 运维 Kafka
kafka使用SASL认证
kafka使用SASL认证
|
6月前
|
消息中间件 数据可视化 Kafka
【kafka可视化工具】kafka-eagle在windows环境的下载、安装、启动与访问
【kafka可视化工具】kafka-eagle在windows环境的下载、安装、启动与访问
693 0
|
消息中间件 存储 Kubernetes
K8S环境快速部署Kafka(K8S外部可访问)
本文通过实战展示了如何在K8S环境部署kafka集群,并且K8S环境外部也能使用此服务
2526 1
K8S环境快速部署Kafka(K8S外部可访问)
|
消息中间件 Java 应用服务中间件
Kafka配置公网访问,直接暴露方式与nginx代理方式(绝对没问题)
Kafka配置公网访问,直接暴露方式与nginx代理方式(绝对没问题)
4386 1
|
7月前
|
消息中间件 Java Kafka
SpringBoot整合Kafka(SASL认证配置、处理毒丸消息)
SpringBoot整合Kafka(SASL认证配置、处理毒丸消息)
887 0
|
SQL 消息中间件 Kafka
flink 读取kafka 写入带kerberos认证的hive环境
flink 读取kafka 写入带kerberos认证的hive环境
|
消息中间件 Cloud Native 物联网
阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
在混沌工程技术沙龙--金融行业精品专场的分布式系统稳定性评估体系获奖名单中,阿里云分布式消息队列服务成为通过首批消息队列服务稳定性认证,荣获最高级别 “先进级” 认证的消息队列服务。
458 0
阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
|
消息中间件 Ubuntu Java
Kafka安装并配置SASL_PLAINTEXT认证
Kafka安装并配置SASL_PLAINTEXT认证
818 0
|
消息中间件 Java Kafka
【Java客户端访问Kafka】
【Java客户端访问Kafka】
【Java客户端访问Kafka】
|
消息中间件 存储 算法
【Kafka SASL/SCRAM动态认证集群部署
【Kafka SASL/SCRAM动态认证集群部署
888 0

热门文章

最新文章