Kafka Producer - 跟踪Kerberos用户

时间:2018-02-21 17:05:06

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

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

就可追溯性而言,这使我能够保证主题Y上的所有消息都是由用户C生成的。但是,我还想知道用户A生成了关于主题X的哪些消息,以及哪些消息是由用户B。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我不认为现在有办法说实话。我所知道的代理中只有两个可插入的类是KafkaPrincipalBuilder和Authorizer,它们都具有您所使用的主体,但是无法访问实际记录以在标题字段中添加主体或在任何地方添加主体想要它。

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

如果您真的想强制执行此操作,我担心您必须变得有点创造性并做一些让他们在标题字段或类似内容中使用私钥对每封邮件进行签名的事情 - 处理时然后,您可以丢弃任何不包含该字段的内容。

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