卡夫卡在Cloudera的 - 测试= TOPIC_AUTHORIZATION_FAILED(Kaf

2019-09-28 06:26发布

我们刚刚升级从CDH 5.3.6至5.10.0,并开始尝试写卡夫卡的话题时收到错误。 我们有一切的默认设置,没有SSL或Kerberos身份验证功能。 当使用控制台制造商写信给我的话题之一,我得到这个错误:

的/ usr /斌/卡夫卡控制台生产者--broker列表= myhost1.dev.com:9092,myhost2.dev.com:9092 --topic测试

17/03/06 21:00:57 INFO utils.AppInfoParser: Kafka version : 0.10.0-kafka-2.1.0
17/03/06 21:00:57 INFO utils.AppInfoParser: Kafka commitId : unknown
x
17/03/06 21:00:59 WARN clients.NetworkClient: Error while fetching metadata with correlation id 0 : {test=TOPIC_AUTHORIZATION_FAILED}

看着在/ var /日志/卡夫卡/,我看到一堆这些异常:

2017-03-06 21:00:26,964 WARN org.apache.sentry.provider.common.HadoopGroupMappingService: Unable to obtain groups for ANONYMOUS
java.io.IOException: No groups found for user ANONYMOUS
    at org.apache.hadoop.security.Groups.noGroupsForUser(Groups.java:190)
    at org.apache.hadoop.security.Groups.getGroups(Groups.java:210)
    at org.apache.sentry.provider.common.HadoopGroupMappingService.getGroups(HadoopGroupMappingService.java:60)
    at org.apache.sentry.provider.common.ResourceAuthorizationProvider.getGroups(ResourceAuthorizationProvider.java:167)
    at org.apache.sentry.provider.common.ResourceAuthorizationProvider.doHasAccess(ResourceAuthorizationProvider.java:97)
    at org.apache.sentry.provider.common.ResourceAuthorizationProvider.hasAccess(ResourceAuthorizationProvider.java:91)
    at org.apache.sentry.kafka.binding.KafkaAuthBinding.authorize(KafkaAuthBinding.java:212)
    at org.apache.sentry.kafka.authorizer.SentryKafkaAuthorizer.authorize(SentryKafkaAuthorizer.java:63)
    at kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$authorize$2.apply(KafkaApis.scala:321)
    at kafka.server.KafkaApis$$anonfun$kafka$server$KafkaApis$$authorize$2.apply(KafkaApis.scala:321)
    at scala.Option.map(Option.scala:146)
    at kafka.server.KafkaApis.kafka$server$KafkaApis$$authorize(KafkaApis.scala:321)
    at kafka.server.KafkaApis$$anonfun$30.apply(KafkaApis.scala:702)
    at kafka.server.KafkaApis$$anonfun$30.apply(KafkaApis.scala:702)
    at scala.collection.TraversableLike$$anonfun$partition$1.apply(TraversableLike.scala:314)
    at scala.collection.TraversableLike$$anonfun$partition$1.apply(TraversableLike.scala:314)
    at scala.collection.immutable.Set$Set1.foreach(Set.scala:94)
    at scala.collection.TraversableLike$class.partition(TraversableLike.scala:314)
    at scala.collection.AbstractTraversable.partition(Traversable.scala:104)
    at kafka.server.KafkaApis.handleTopicMetadataRequest(KafkaApis.scala:702)
    at kafka.server.KafkaApis.handle(KafkaApis.scala:79)
    at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:60)
    at java.lang.Thread.run(Thread.java:745)

我一直在寻找一个解决方案,这一点,但都拿出了空为止。 我需要为匿名用户指定的地方对某些群体? 我能写邮件到我的话题CDH 5.3.6,但它似乎什么东西在升级出现了偏差。

只是试图让了HelloWorld /快速入门例如升级到CDH 5.10.0后,我们的DEV卡夫卡重新工作。

-----------------临时解决方法解决方案---

在Cloudera的经理5.10没有在卡夫卡配置的super.users属性。 匿名添加到列表中,让我产生,并从我的主题消费。

我已经尝试在/opt/cloudera/parcels/KAFKA-2.1.0-1.2.1.0.p0.115/etc/kafka/conf.dist/server.properties,这是没有效果的事情了。 所以Cloudera公司必须在别处管理这些值。

Answer 1:

卡夫卡严格区分认证和授权之间 - 即使你通过路边或SSL开启它具有认证仍然有可能把授权经由下列参数:

authorizer.class.name=kafka.security.auth.SimpleAclAuthorize‌​r

这将使卡夫卡检查的ACL,每次访问-因为认证在你的情况下打开的,虽然,如果没有该用户设置ACL每个用户将被评估为匿名和否认。

您可以删除您的配置该设置应该使卡夫卡回归其旧,信任,自我。 我不知道,你应该这样做在Cloudera的经理了,所以另一种是匿名添加到超级用户的列表是在CM可用。 或者,当然只是定义ACL允许访问匿名

对于生产使用以后你应该建立SSL或Kerberos和定义适当的访问控制列表,如果有从外部访问群集的任何机会。



文章来源: Kafka on Cloudera - test=TOPIC_AUTHORIZATION_FAILED