Apache kafka Kafka生产者-跟踪Kerberos用户

Apache kafka Kafka生产者-跟踪Kerberos用户,apache-kafka,kerberos,kafka-producer-api,Apache Kafka,Kerberos,Kafka Producer Api,在卡夫卡集群的kerberized设置中,我可以很容易地强制执行,对于主题X,用户a和B有权生成消息,而对于主题Y,用户C有权生成消息 在可追溯性方面,这使我能够保证主题Y上的所有消息都是由用户C生成的。但是,我还想知道主题X上的哪些消息是由用户A生成的,哪些消息是由用户B生成的 是否有一个选项可以将每条消息标记为生成它的用户?也许有一句话,我不想在生产者方面这样做,但希望在代理方面强制执行,因此我绝对保证这些用户信息是存在的 任何帮助都将不胜感激。老实说,我认为目前没有办法做到这一点。据我所知

在卡夫卡集群的kerberized设置中,我可以很容易地强制执行,对于主题X,用户a和B有权生成消息,而对于主题Y,用户C有权生成消息

在可追溯性方面,这使我能够保证主题Y上的所有消息都是由用户C生成的。但是,我还想知道主题X上的哪些消息是由用户A生成的,哪些消息是由用户B生成的

是否有一个选项可以将每条消息标记为生成它的用户?也许有一句话,我不想在生产者方面这样做,但希望在代理方面强制执行,因此我绝对保证这些用户信息是存在的


任何帮助都将不胜感激。

老实说,我认为目前没有办法做到这一点。据我所知,代理中仅有的两个可插入类是KafkaPrincipalBuilder和Authorizer,这两个类都有您要查找的主体,但没有访问实际记录的权限,无法将主体添加到头字段或任何需要的地方

即使我们从生产者的角度来看,也有两个选项可以定制拦截器和序列化器类,它们都可以访问记录,但不能访问用户主体

如果你真的想强制执行这一点,恐怕你必须变得有点创造性,让他们在头字段或类似的地方用私钥对每条消息进行签名——在处理另一端的数据时,你可以丢弃任何不包含该字段的内容

除此之外,我认为除了实际更改卡夫卡本身以添加此信息之外,您没有什么可以做的-一般来说,这应该是一个良好的起点,在这里您有已授权的请求,并且还可以访问包含主体的请求会话。不过,这里的记录仅表示为bytebuffers,不确定您是否可以轻松地在这里创建标题tbh