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,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
消息中间件 运维 Kafka
kafka使用SASL认证
kafka使用SASL认证
142 0
|
消息中间件 数据可视化 Kafka
【kafka可视化工具】kafka-eagle在windows环境的下载、安装、启动与访问
【kafka可视化工具】kafka-eagle在windows环境的下载、安装、启动与访问
1084 0
|
消息中间件 存储 Kubernetes
K8S环境快速部署Kafka(K8S外部可访问)
本文通过实战展示了如何在K8S环境部署kafka集群,并且K8S环境外部也能使用此服务
3219 1
K8S环境快速部署Kafka(K8S外部可访问)
|
6月前
|
消息中间件 安全 Java
Spring Boot 基于 SCRAM 认证集成 Kafka 的详解
【8月更文挑战第4天】本文详解Spring Boot结合SCRAM认证集成Kafka的过程。SCRAM为Kafka提供安全身份验证。首先确认Kafka服务已启用SCRAM,并准备认证凭据。接着,在`pom.xml`添加`spring-kafka`依赖,并在`application.properties`中配置Kafka属性,包括SASL_SSL协议与SCRAM-SHA-256机制。创建生产者与消费者类以实现消息的发送与接收功能。最后,通过实际消息传递测试集成效果与认证机制的有效性。
220 4
|
7月前
|
消息中间件 Java Kafka
Java 客户端访问kafka
Java 客户端访问kafka
57 9
|
SQL 消息中间件 Kafka
flink 读取kafka 写入带kerberos认证的hive环境
flink 读取kafka 写入带kerberos认证的hive环境
|
消息中间件 Java Kafka
SpringBoot整合Kafka(SASL认证配置、处理毒丸消息)
SpringBoot整合Kafka(SASL认证配置、处理毒丸消息)
1592 0
|
消息中间件 存储 安全
基于SASL和ACL的Kafka安全性解析
本文主要介绍基于SCRAM进行身份验证,使用Kafka ACL进行授权,SSL进行加密以及使用camel-Kafka连接Kafka群集以使用camel路由生产和消费消息的过程。
498 0
|
消息中间件 Cloud Native 物联网
阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
在混沌工程技术沙龙--金融行业精品专场的分布式系统稳定性评估体系获奖名单中,阿里云分布式消息队列服务成为通过首批消息队列服务稳定性认证,荣获最高级别 “先进级” 认证的消息队列服务。
524 0
阿里云消息队列 RocketMQ、Kafka 荣获金融级产品稳定性测评 “先进级” 认证
|
消息中间件 Ubuntu Java
Kafka安装并配置SASL_PLAINTEXT认证
Kafka安装并配置SASL_PLAINTEXT认证
1224 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等