代理复制错误"无权访问主题:[主题授权失败。



我有三个Kafka代理(kafka_2.11-0.10.0.0),每个代理的安全性配置如下,

listeners=PLAINTEXT://xxxx:9093,SASL_PLAINTEXT://xxxx:10093
advertised.listeners=PLAINTEXT://xxxx:9093,SASL_PLAINTEXT://xxxx:10093
security.inter.broker.protocol=PLAINTEXT
sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
super.users=User:admin

kafka_server_jaas.conf 还配置了管理员用户。

KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="welcome1"
        user_guest="welcome1";
};

当我连接使用明文侦听器并生成和使用消息时,一切正常。

但是当我尝试将 ACL 添加到某个主题时,集群将输出如下错误消息:

bin/kafka-acls.sh --authorizer-properties zookeeper.connect=xxxx:2181/kafka10  --add --allow-principal User:guest --producer --topic page_visits_10k  

代理输出

[2016-05-31 10:49:57,497] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread)
[2016-05-31 10:49:59,003] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread)
错误

输出看起来像代理间复制错误,感谢任何帮助。

我在 Kafka v.0.10 中使用 ACL 时遇到了类似的问题。我发现这个讨论很有帮助。特别是启用授权日志以检查请求的传入用户名是什么以及ACL中指定了什么。
可以通过修改配置文件夹中的 log4j.properties 来启用授权日志。在 log4j.properties 文件中,将WARN更改为 DEBUG 并重新启动 kafka 服务器。

log4j.logger.kafka.authorizer.logger=DEBUG, authorizerAppender

这有助于我解决我的问题。希望有帮助。

PS:生成的授权日志会非常冗长,占用大量空间。因此,请记住在完成调试后将其关闭。

终于我想通了这个问题。
该错误是由以下原因引起的:
security.inter.broker.protocol=PLAINTEXT

它应该是:
security.inter.broker.protocol=SASL_PLAINTEXT

[2016-05-31 10:49:57,497] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread)
[2016-05-31 10:49:59,003] ERROR [ReplicaFetcherThread-0-2], Error for partition [page_visits_10k,1] to broker 2:org.apache.kafka.common.errors.TopicAuthorizationException: Not authorized to access topics: [Topic authorization failed.] (kafka.server.ReplicaFetcherThread)

在启动 zookeeper 之后和启动 Kafka 之前运行以下脚本。

sh kafka_2.11-0.9.0.1/bin/kafka-acls.sh --authorizer-properties 
zookeeper.connect=localhost:2181 --operation All --allow-principal 
User:*   --allow-host <server host> --add --cluster`

这将允许本地服务器计算机所有 ACL。

最新更新