【问题标题】:Kafka unable to produce/consume message卡夫卡无法生产/消费消息
【发布时间】:2021-08-02 13:21:00
【问题描述】:

我有一个启用 Kerberos SASL_SSL 的 Kafka 身份验证和默认的 kafka.security.authorizer.AclAuthorizer 授权设置。所有必要的 ACL(我相信)都在那里,但是当我尝试生成一条消息时,它会导致以下错误 [2021-07-30 09:19:33,397] WARN [Producer clientId=console-producer] 获取相关 ID 为 3 的元数据时出错:{camtmodified.v1=TOPIC_AUTHORIZATION_FAILED} (org.apache.kafka.clients.NetworkClient) [2021-07-30 09:19:33,399] 错误 [Producer clientId=console-producer] 主题授权失败 [camtmodified.v1] (org.apache.kafka.clients.Metadata) [2021-07-30 09:19:33,400] 错误 向 camtmodified.v1 主题发送消息时出错,键:null,值:8 字节,错误:(org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.TopicAuthorizationException:无权访问主题:[camtmodified.v1]

以下是我拥有的 ACL 列表,我认为这已经足够了,因为这是我为少数其他似乎工作正常但不仅仅是这个“用户:credusr”的主体启用的 ACL 列表"

资源 ResourcePattern(resourceType=TOPIC, name=camtmodified.v1, patternType=LITERAL) 的当前 ACL: (principal=cluster:kafka-cluster, host=, operation=WRITE, permissionType=ALLOW) (principal=Group:, host=, operation=DESCRIBE, permissionType=ALLOW) (principal=cluster:kafka-cluster, host=, operation=READ, permissionType=ALLOW) (principal=user:credusr, host=, operation=DESCRIBE, permissionType=ALLOW) (principal=user:credusr, host=, operation=READ, permissionType=ALLOW) (principal=Group:, host=, operation=READ, permissionType=ALLOW) (principal=cluster:kafka-cluster, host=, operation=DESCRIBE, permissionType=ALLOW) (principal=user:credusr, host=, operation=CREATE, permissionType=ALLOW) (principal=cluster:kafka-cluster, host=, operation=CREATE, permissionType=ALLOW) (principal=user:credusr, host=, operation=WRITE, permissionType=ALLOW)

资源 ResourcePattern(resourceType=CLUSTER, name=kafka-cluster, patternType=LITERAL) 的当前 ACL: (principal=user:credusr, host=, operation=ALL, permissionType=ALLOW) (principal=cluster:kafka-cluster, host=, operation=ALL, permissionType=ALLOW) (principal=Cluster:kafka-cluster, host=*, operation=IDEMPOTENT_WRITE, permissionType=ALLOW)

资源 ResourcePattern(resourceType=GROUP, name=*, patternType=LITERAL) 的当前 ACL: (principal=User:credusr, host=, operation=DESCRIBE, permissionType=ALLOW) (principal=Group:, host=, operation=DESCRIBE, permissionType=ALLOW) (principal=cluster:kafka-cluster, host=, operation=READ, permissionType=ALLOW) (principal=user:credusr, host=, operation=READ, permissionType=ALLOW) (principal=User:credusr, host=, operation=DESCRIBE, permissionType=ALLOW) (principal=Group:, host=, operation=READ, permissionType=ALLOW) (principal=group:, host=, operation=READ, permissionType=ALLOW)

我确实为 kafka 授权日志启用了 DEBUG 模式,并看到以下条目。由于 DESCRIBE 操作是明确允许的,如 ACL 列表中所示 - 我不确定为什么它会抱怨 DESCRIBE 操作被拒绝,除非日志消息非常具有误导性!
[2021-07-29 13:40:49,750] INFO Principal = User:credusr 被拒绝操作 = 从主机描述 = 10.X.X.X 资源 = Topic:LITERAL:camtmodified.v1 请求 = 元数据,resourceRefCount = 1 (kafka.授权者.记录器) [2021-07-29 13:40:49,751] INFO Principal = User:credusr 被拒绝操作 = IdempotentWrite from host = 10.X.X.X on resource = Cluster:LITERAL:kafka-cluster for request = InitProducerId with resourceRefCount = 1 (kafka.授权者.记录器) [2021-07-29 13:40:50,678] 信息主体 = 用户:credusr 被拒绝操作 = 从主机描述 = 10.X.X.X 资源 = 主题:LITERAL:camtmodified.v1 请求 = 元数据,resourceRefCount = 1 (kafka. authorizer.logger)

任何建议将不胜感激。

谢谢

【问题讨论】:

    标签: apache-kafka kafka-consumer-api


    【解决方案1】:

    终于解决了!!! 只需在此处发布解决方案,以供可能最终遇到类似问题并寻求解决方案的人使用。 基本上问题在于 Kafka ACL 命令的区分大小写。尽管语法和资源参数是正确的,但 ACL 命令以小写形式输入,导致授权不被兑现并最终被拒绝。在上述情况下 - 我的主体名称输入为“用户”而不是“用户”格式,从而导致所有相应的授权失败! 总结:请注意具有适当区分大小写的 ACL 命令,因为这些命令似乎确实区分大小写。 虽然这是一个小问题,但我会以一种艰难的方式找到它并发布答案,以防万一这对不久的将来的初学者(如我)有所帮助!

    干杯,

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 2017-06-29
      • 2020-07-28
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多