我有三个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也配置了admin用户。
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="welcome1"
user_guest="welcome1";
};
当我连接使用PLAINTEXT监听器并生成和使用消息时,一切正常。
但是当我尝试将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)
错误输出看起来像代理间复制错误,感谢任何帮助。
答案 0 :(得分:2)
我在Kafka v.0.10中使用ACL时遇到过类似的问题。我发现this讨论很有帮助。特别是启用授权日志以检查请求的传入用户名是什么以及ACL中指定的内容。
可以通过修改config文件夹中的log4j.properties来启用授权日志。在log4j.properties文件中,将WARN
更改为DEBUG
并重新启动kafka-servers。
log4j.logger.kafka.authorizer.logger=DEBUG, authorizerAppender
这帮助我解决了我的问题。希望有所帮助。
PS:生成的授权日志非常冗长,占用大量空间。所以,记得在完成调试后关闭它。
答案 1 :(得分:0)
运行以下脚本启动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。
答案 2 :(得分:0)
最后我弄明白了这个问题
错误是由以下原因引起的:
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)