【问题标题】:Kafka Producer - Trace Kerberos userKafka Producer - Trace Kerberos 用户
【发布时间】:2018-02-21 17:05:05
【问题描述】:

在带有 Kafka 集群的 kerberized 设置中,我可以轻松地强制规定,对于主题 X,用户 A 和 B 有权生成消息,对于主题 Y,用户 C 有权生成消息。

在可追溯性方面,这给了我关于主题 Y 的所有消息由用户 C 生成的保证。但是,我还想知道关于主题 X 的哪些消息是由用户 A 生成的,以及哪些消息是由用户 A 生成的用户 B。

是否可以选择用生成它的用户标记每条消息?也许有一句话,我不想在生产者端这样做,但想在代理端强制执行,所以我绝对保证这个用户信息是存在的。

任何帮助将不胜感激。

【问题讨论】:

    标签: apache-kafka kerberos kafka-producer-api


    【解决方案1】:

    说实话,我认为目前没有办法做到这一点。我所知道的代理中仅有的两个可插入类是 KafkaPrincipalBuilder 和 Authorizer,它们都具有您所追求的主体,但无权访问实际记录以将主体添加到标头字段或任何地方想要。

    即使我们查看生产者方面,这两个选项也将是您可以自定义的 Interceptor 和 Serializer 类,它们都可以访问记录,但不能访问用户主体。

    如果您真的想执行此操作,恐怕您将不得不变得有点创意,并做一些事情,例如让他们在标题字段中使用私钥或类似的东西对每条消息进行签名 - 当在另一个上处理数据时最后,您可以丢弃任何不包含该字段的内容。

    除此之外,我认为除了实际更改 Kafka 本身以添加此信息之外,您无能为力 - 通常the handleProduceRequest method 应该是一个很好的起点,这里您有已授权的请求,也可以访问包含主体的请求会话。记录在这里仅表示为字节缓冲区,但不确定您是否可以在此时轻松标头 tbh..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      • 2021-11-25
      • 2019-02-23
      • 2023-04-08
      • 2023-03-04
      • 2019-04-23
      • 2020-05-26
      相关资源
      最近更新 更多